pdf-visual-diff
Advanced tools
| /** | ||
| * For a detailed explanation regarding each configuration property, visit: | ||
| * https://jestjs.io/docs/configuration | ||
| */ | ||
| /** @type {import('jest').Config} */ | ||
| const config = { | ||
| setupFilesAfterEnv: ['./lib/toMatchPdfSnapshot'], | ||
| } | ||
| module.exports = config |
| import * as Canvas from 'canvas'; | ||
| export type CanvasContextManager = { | ||
| context: Canvas.CanvasRenderingContext2D; | ||
| resize: (width: number, height: number) => void; | ||
| toPngBuffer: () => Buffer; | ||
| toImageData: () => Canvas.ImageData; | ||
| dispose: () => void; | ||
| }; | ||
| export declare function createCanvasContext(): CanvasContextManager; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.createCanvasContext = createCanvasContext; | ||
| const Canvas = require("canvas"); | ||
| const assert = require("node:assert"); | ||
| function createCanvasContext() { | ||
| let canvas = Canvas.createCanvas(1, 1); | ||
| let context = canvas.getContext('2d'); | ||
| return { | ||
| context, | ||
| resize: (width, height) => { | ||
| assert(width > 0 && height > 0, 'Invalid canvas dimensions'); | ||
| canvas.width = width; | ||
| canvas.height = height; | ||
| }, | ||
| toPngBuffer: () => canvas.toBuffer('image/png'), | ||
| toImageData: () => context.getImageData(0, 0, canvas.width, canvas.height), | ||
| dispose: () => { | ||
| canvas.width = 0; | ||
| canvas.height = 0; | ||
| // Nullify for garbage collection | ||
| canvas = null; | ||
| context = null; | ||
| }, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=createCanvasContext.js.map |
| {"version":3,"file":"createCanvasContext.js","sourceRoot":"","sources":["../../src/pdf2png/createCanvasContext.ts"],"names":[],"mappings":";;AAWA,kDAqBC;AAhCD,iCAAgC;AAChC,sCAAqC;AAUrC,SAAgB,mBAAmB;IACjC,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAErC,OAAO;QACL,OAAO;QACP,MAAM,EAAE,CAAC,KAAa,EAAE,MAAc,EAAQ,EAAE;YAC9C,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAA;YAC5D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;YACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1E,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;YAChB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YACjB,iCAAiC;YACjC,MAAM,GAAG,IAAgC,CAAA;YACzC,OAAO,GAAG,IAAkD,CAAA;QAC9D,CAAC;KACF,CAAA;AACH,CAAC"} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| const { join } = require('node:path') | ||
| const { comparePdfToSnapshot } = require('../lib') | ||
| const twoPagePdfPath = join(__dirname, '../src/test-data/pdfs/', 'two-page.pdf') | ||
| const snapshotDir = join(__dirname) | ||
| /** @type {import('../lib').CompareOptions} */ | ||
| const opts = { | ||
| pdf2PngOptions: { dpi: 72 }, | ||
| } | ||
| describe('jest smoke tests', () => { | ||
| test( | ||
| 'plain fn', | ||
| () => | ||
| comparePdfToSnapshot(twoPagePdfPath, snapshotDir, 'jest_smoke_tests_plain_fn', opts).then( | ||
| (isEqual) => { | ||
| expect(isEqual).toEqual(true) | ||
| }, | ||
| ), | ||
| 10_000, | ||
| ) | ||
| test('custom matcher', () => expect(twoPagePdfPath).toMatchPdfSnapshot(opts), 10_000) | ||
| }) |
+9
-0
| # Changelog | ||
| ## 0.11.0 / 2024-09-11 | ||
| - [PR#67](https://github.com/moshensky/pdf-visual-diff/pull/67): Dependencies update. **BREAKING CHANGE**: Minimum supported **Node.js v18**. | ||
| Notably, the update of `pdfjs-dist` to **v4** (`^4.6.82`) from v3 introduces significant changes. As a result, this release is a **BREAKING CHANGE**: | ||
| - Due to the update in `pdfjs-dist`, the minimum supported Node.js version is now 18. | ||
| - If you were using a version of `pdfjs-dist` lower than [v3.7.107](https://github.com/mozilla/pdf.js/releases/tag/v3.7.107), your snapshots might start to fail due to changes in how fonts are loaded and used in certain circumstances. | ||
| For the time being, this release has 0 vulnerabilities according to `npm audit`. | ||
| ## 0.10.0 / 2024-09-06 | ||
@@ -4,0 +13,0 @@ |
+38
-23
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.pdf2png = pdf2png; | ||
| const fs = require("fs/promises"); | ||
| const path = require("path"); | ||
| const fs = require("node:fs/promises"); | ||
| const path = require("node:path"); | ||
| const jimp_1 = require("jimp"); | ||
| const types_1 = require("../types"); | ||
| const conversions_1 = require("../conversions"); | ||
| const nodeCanvasFactory_1 = require("./nodeCanvasFactory"); | ||
| const createCanvasContext_1 = require("./createCanvasContext"); | ||
| // pdfjs location | ||
@@ -37,2 +37,24 @@ const PDFJS_DIR = path.join(path.dirname(require.resolve('pdfjs-dist')), '..'); | ||
| } | ||
| function mkPdfPagesRenderer(pdfDocument, dpi) { | ||
| return async function (toImage, toJimpInstances) { | ||
| const images = []; | ||
| const canvas = (0, createCanvasContext_1.createCanvasContext)(); | ||
| const totalPages = pdfDocument.numPages; | ||
| for (let idx = 1; idx <= totalPages; idx += 1) { | ||
| const page = await pdfDocument.getPage(idx); | ||
| const viewport = getPageViewPort(page, dpi); | ||
| canvas.resize(viewport.width, viewport.height); | ||
| const renderParameters = { | ||
| // @ts-expect-error type mismatch between web and node.js canvas | ||
| canvasContext: canvas.context, | ||
| viewport, | ||
| }; | ||
| await page.render(renderParameters).promise; | ||
| page.cleanup(); | ||
| images.push(toImage(canvas)); | ||
| } | ||
| canvas.dispose(); | ||
| return toJimpInstances(images); | ||
| }; | ||
| } | ||
| async function pdf2png(pdf, options = {}) { | ||
@@ -42,26 +64,19 @@ const { getDocument } = await import('pdfjs-dist/legacy/build/pdf.mjs'); | ||
| // Load PDF | ||
| const pdfBuffer = await (Buffer.isBuffer(pdf) ? Promise.resolve(pdf) : fs.readFile(pdf)); | ||
| const pdfBuffer = Buffer.isBuffer(pdf) ? pdf : await fs.readFile(pdf); | ||
| const loadingTask = getDocument(Object.assign(Object.assign({}, DOCUMENT_INIT_PARAMS_DEFAULTS), { data: new Uint8Array(pdfBuffer) })); | ||
| const pdfDocument = await loadingTask.promise; | ||
| const numPages = pdfDocument.numPages; | ||
| const canvas = (0, nodeCanvasFactory_1.mkCanvas)(); | ||
| // Generate images | ||
| const images = []; | ||
| for (let idx = 1; idx <= numPages; idx += 1) { | ||
| const page = await pdfDocument.getPage(idx); | ||
| const viewport = getPageViewPort(page, opts.dpi); | ||
| canvas.set(viewport.width, viewport.height); | ||
| const renderParameters = { | ||
| // @ts-expect-error type mismatch between web and node.js canvas | ||
| canvasContext: canvas.context, | ||
| viewport, | ||
| }; | ||
| await page.render(renderParameters).promise; | ||
| page.cleanup(); | ||
| const imgData = canvas.context.getImageData(0, 0, viewport.width, viewport.height); | ||
| images.push(jimp_1.Jimp.fromBitmap(imgData)); | ||
| const renderPdfPages = mkPdfPagesRenderer(pdfDocument, opts.dpi); | ||
| /** | ||
| * For faster processing, we want to use `Jimp.fromBitmap`. However, it | ||
| * internally uses `instanceof`, which doesn't work well with Jest due to | ||
| * [Jest globals differing from Node globals](https://github.com/jestjs/jest/issues/2549). | ||
| */ | ||
| // @ts-expect-error we have to assert if running in jest env | ||
| if (typeof jest !== 'undefined') { | ||
| return renderPdfPages((canvas) => canvas.toPngBuffer(), (images) => Promise.all(images.map((x) => jimp_1.Jimp.read(x).then((x) => x)))); | ||
| } | ||
| canvas.destroy(); | ||
| return images; | ||
| else { | ||
| return renderPdfPages((canvas) => jimp_1.Jimp.fromBitmap(canvas.toImageData()), (images) => Promise.resolve(images)); | ||
| } | ||
| } | ||
| //# sourceMappingURL=pdf2png.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"pdf2png.js","sourceRoot":"","sources":["../../src/pdf2png/pdf2png.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"pdf2png.js","sourceRoot":"","sources":["../../src/pdf2png/pdf2png.ts"],"names":[],"mappings":"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"} |
+3
-1
| { | ||
| "name": "pdf-visual-diff", | ||
| "version": "0.11.0", | ||
| "version": "0.11.1", | ||
| "description": "Visual Regression Testing for PDFs in JavaScript", | ||
@@ -21,2 +21,3 @@ "bin": "./lib/cli/index.js", | ||
| "test:watch": "node --require ts-node/register --test --watch src/**/*.test.ts src/*.test.ts", | ||
| "test:jest": "npm run tsc -- --noEmit false && NODE_OPTIONS=--experimental-vm-modules jest test/jest.test.js", | ||
| "license-checker": "npx license-checker --production --onlyAllow 'MIT; MIT OR X11; BSD; ISC; Apache-2.0; Unlicense' --excludePackages 'pdf-visual-diff'", | ||
@@ -60,2 +61,3 @@ "update-deps": "npx npm-check-updates --configFileName .ncurc.js" | ||
| "eslint-plugin-tsdoc": "^0.3.0", | ||
| "jest": "^29.7.0", | ||
| "prettier": "^3.3.3", | ||
@@ -62,0 +64,0 @@ "ts-node": "^10.9.2", |
-32
| /** | ||
| * Configure which packages to ignore version upgrades. | ||
| */ | ||
| const ignoredPackages = []; | ||
| /** | ||
| * Configure which packages to ignore for major version upgrades. | ||
| * Type: { [packageName]: reason }, i.e. { '@storybook/react': 'some reason' } | ||
| */ | ||
| const ignoreMajorVersions = { | ||
| }; | ||
| module.exports = { | ||
| upgrade: true, | ||
| reject: ignoredPackages, | ||
| packageManager: 'npm', | ||
| /** Custom target that performs minor upgrades for selected packages. | ||
| @param dependencyName The name of the dependency. | ||
| @param parsedVersion A parsed Semver object from semver-utils. | ||
| (See https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) | ||
| @returns 'latest' | 'newest' | 'greatest' | 'minor' | 'patch' | ||
| */ | ||
| target: (dependencyName, parsedVersion) => { | ||
| const ignored = ignoreMajorVersions[dependencyName] | ||
| if (ignored !== undefined) { | ||
| const res = 'minor'; | ||
| console.log(`\nš ļø${dependencyName} is pinned to ${res}. Reason: ${ignored}`); | ||
| return res; | ||
| } | ||
| return 'latest'; | ||
| }, | ||
| }; |
| // @ts-check | ||
| import eslint from '@eslint/js' | ||
| import tseslint from 'typescript-eslint' | ||
| import tsdoceslint from 'eslint-plugin-tsdoc' | ||
| export default tseslint.config({ | ||
| files: ['**/*.ts'], | ||
| extends: [eslint.configs.recommended, ...tseslint.configs.strict, ...tseslint.configs.stylistic], | ||
| plugins: { | ||
| tsdoc: tsdoceslint, | ||
| }, | ||
| rules: { | ||
| 'tsdoc/syntax': 'error', | ||
| '@typescript-eslint/array-type': 'off', | ||
| '@typescript-eslint/consistent-type-definitions': 'off', | ||
| }, | ||
| }) |
| import * as Canvas from 'canvas'; | ||
| export type CanvasAndContext = { | ||
| context: Canvas.CanvasRenderingContext2D; | ||
| set: (width: number, height: number) => void; | ||
| destroy: () => void; | ||
| }; | ||
| export declare function mkCanvas(): CanvasAndContext; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.mkCanvas = mkCanvas; | ||
| const Canvas = require("canvas"); | ||
| const assert = require("assert"); | ||
| function mkCanvas() { | ||
| let canvas = Canvas.createCanvas(1, 1); | ||
| let context = canvas.getContext('2d'); | ||
| return { | ||
| context, | ||
| set: (width, height) => { | ||
| assert.ok(width > 0 && height > 0, 'Invalid canvas size'); | ||
| canvas.width = width; | ||
| canvas.height = height; | ||
| }, | ||
| destroy: () => { | ||
| canvas.width = 0; | ||
| canvas.height = 0; | ||
| // eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
| // @ts-ignore | ||
| canvas = null; | ||
| // eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
| // @ts-ignore | ||
| context = null; | ||
| }, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=nodeCanvasFactory.js.map |
| {"version":3,"file":"nodeCanvasFactory.js","sourceRoot":"","sources":["../../src/pdf2png/nodeCanvasFactory.ts"],"names":[],"mappings":";;AASA,4BAqBC;AA9BD,iCAAgC;AAChC,iCAAgC;AAQhC,SAAgB,QAAQ;IACtB,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO;QACL,OAAO;QACP,GAAG,EAAE,CAAC,KAAa,EAAE,MAAc,EAAQ,EAAE;YAC3C,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAA;YACzD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;YACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;YAChB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YACjB,6DAA6D;YAC7D,aAAa;YACb,MAAM,GAAG,IAAI,CAAA;YACb,6DAA6D;YAC7D,aAAa;YACb,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC"} |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
123955
40.48%74
2.78%13
8.33%