@u1f992/pdfdiff 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.clang-format +3 -0
- package/LICENSE +68 -81
- package/dist/browser.js +239 -3109
- package/dist/browser.js.map +1 -1
- package/dist/cli-png-worker.d.ts.map +1 -1
- package/dist/cli-png-worker.js +0 -16
- package/dist/cli-png-worker.js.map +1 -1
- package/dist/cli.js +240 -3150
- package/dist/cli.js.map +1 -1
- package/dist/core.wasm +0 -0
- package/dist/decode.d.ts +9 -0
- package/dist/decode.d.ts.map +1 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/gs-wasm/gs.js +5821 -0
- package/dist/gs-wasm/gs.wasm +0 -0
- package/dist/gs-wasm/index.js +120 -0
- package/dist/gs-wasm/index.js.map +1 -0
- package/dist/gs-wasm/worker.js +764 -0
- package/dist/gs-wasm/worker.js.map +1 -0
- package/dist/image.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.html +1 -1
- package/dist/index.js +238 -3109
- package/dist/index.js.map +1 -1
- package/dist/iterable.d.ts.map +1 -1
- package/dist/jimp.d.ts +23 -1
- package/dist/jimp.d.ts.map +1 -1
- package/dist/pdf.d.ts +15 -4
- package/dist/pdf.d.ts.map +1 -1
- package/dist/perf.d.ts.map +1 -1
- package/dist/rgba-color.d.ts.map +1 -1
- package/dist/transferable.d.ts +6 -2
- package/dist/transferable.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/worker.d.ts +6 -8
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +70 -3311
- package/dist/worker.js.map +1 -1
- package/package.json +9 -4
- package/rollup.config.js +63 -5
- package/scripts/build-wasm.sh +32 -0
- package/src/browser.ts +9 -6
- package/src/cli-png-worker.ts +0 -17
- package/src/cli.ts +9 -23
- package/src/decode.ts +15 -0
- package/src/diff.ts +0 -17
- package/src/image.ts +1 -18
- package/src/index.html +1 -1
- package/src/index.test.ts +10 -18
- package/src/index.ts +163 -74
- package/src/iterable.test.ts +0 -17
- package/src/iterable.ts +0 -17
- package/src/jimp.ts +25 -7
- package/src/pdf.ts +98 -69
- package/src/perf.ts +0 -17
- package/src/rgba-color.test.ts +0 -17
- package/src/rgba-color.ts +0 -17
- package/src/transferable.ts +6 -21
- package/src/worker.ts +91 -87
- package/wasm/Makefile +34 -0
- package/wasm/bindings.cpp +76 -0
- package/wasm/core.c +176 -0
- package/wasm/core.h +69 -0
- package/dist/mupdf-wasm.wasm +0 -0
package/dist/iterable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterable.d.ts","sourceRoot":"","sources":["../src/iterable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iterable.d.ts","sourceRoot":"","sources":["../src/iterable.ts"],"names":[],"mappings":"AAAA,wBAAuB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,SAAI,8CAMpE"}
|
package/dist/jimp.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
import * as jimp from "jimp";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Narrowed view of `jimp.JimpInstance` used throughout the project.
|
|
4
|
+
*
|
|
5
|
+
* Two constraints are tightened relative to the upstream type:
|
|
6
|
+
*
|
|
7
|
+
* 1. `bitmap.data` is asserted to be `Uint8Array<ArrayBuffer>` (never
|
|
8
|
+
* SAB-backed). jimp allocates pixels via `Buffer`, which is always
|
|
9
|
+
* backed by a real ArrayBuffer in practice. Pinning the generic
|
|
10
|
+
* parameter here lets `sliceBackingBuffer` (and `postMessage` transfer
|
|
11
|
+
* lists) infer ArrayBuffer instead of ArrayBufferLike.
|
|
12
|
+
*
|
|
13
|
+
* 2. `resize` and `composite` return `JimpInstance` (this narrowed type)
|
|
14
|
+
* rather than upstream `jimp.JimpInstance`, so chaining preserves the
|
|
15
|
+
* bitmap-backing constraint above.
|
|
16
|
+
*/
|
|
17
|
+
export type JimpInstance = Pick<jimp.JimpInstance, "width" | "height" | "getPixelColor" | "setPixelColor"> & {
|
|
18
|
+
bitmap: {
|
|
19
|
+
data: Uint8Array<ArrayBuffer>;
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
};
|
|
23
|
+
resize: (options: Parameters<jimp.JimpInstance["resize"]>[0]) => JimpInstance;
|
|
24
|
+
composite: (...args: Parameters<jimp.JimpInstance["composite"]>) => JimpInstance;
|
|
3
25
|
getBuffer: (mime: "image/png") => ReturnType<jimp.JimpInstance["getBuffer"]>;
|
|
4
26
|
getBase64: (mime: "image/png") => ReturnType<jimp.JimpInstance["getBase64"]>;
|
|
5
27
|
};
|
package/dist/jimp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jimp.d.ts","sourceRoot":"","sources":["../src/jimp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,IAAI,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"jimp.d.ts","sourceRoot":"","sources":["../src/jimp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,IAAI,CAAC,YAAY,EACjB,OAAO,GAAG,QAAQ,GAAG,eAAe,GAAG,eAAe,CACvD,GAAG;IACF,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IAC9E,SAAS,EAAE,CACT,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAChD,YAAY,CAAC;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7E,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;CAC9E,CAAC"}
|
package/dist/pdf.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Count the pages of a PDF using Ghostscript's `pdfpagecount`. Runs with
|
|
3
|
+
* `-dNODISPLAY` (no rendering) so it is cheap relative to a page render.
|
|
4
|
+
*/
|
|
5
|
+
export declare function countPages(pdf: Uint8Array): Promise<number>;
|
|
6
|
+
/**
|
|
7
|
+
* Render an inclusive range of (0-based) pages of a PDF to PNG bytes in a single
|
|
8
|
+
* Ghostscript invocation, returning a map keyed by 0-based page index. Batching
|
|
9
|
+
* several pages per call amortizes Ghostscript's startup and PDF parsing, which
|
|
10
|
+
* dominate a single-page render. `alpha` selects the device: `pngalpha` keeps
|
|
11
|
+
* the page background transparent (so the diff can tell "no content" from
|
|
12
|
+
* "content" via the alpha channel), while `png16m` renders opaque. Decoding to
|
|
13
|
+
* RGBA is left to the caller (the diff workers) so it can run off this thread.
|
|
14
|
+
*/
|
|
15
|
+
export declare function renderPageRangePng(pdf: Uint8Array, firstIndex: number, lastIndex: number, dpi: number, alpha: boolean): Promise<Map<number, Uint8Array<ArrayBuffer>>>;
|
|
5
16
|
//# sourceMappingURL=pdf.d.ts.map
|
package/dist/pdf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAkBA,
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CA6C/C"}
|
package/dist/perf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../src/perf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../src/perf.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,CAAC;AAEpC,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,QAAQ,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAgDF,eAAO,MAAM,IAAI,EAAE,IAAuC,CAAC"}
|
package/dist/rgba-color.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rgba-color.d.ts","sourceRoot":"","sources":["../src/rgba-color.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rgba-color.d.ts","sourceRoot":"","sources":["../src/rgba-color.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,qBAkCnC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,cAAc,SAAS,WAOpC,CAAC"}
|
package/dist/transferable.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Slice
|
|
2
|
+
* Slice an ArrayBufferView into a standalone backing buffer of the same kind
|
|
3
3
|
* (ArrayBuffer in, ArrayBuffer out; SharedArrayBuffer in, SharedArrayBuffer
|
|
4
4
|
* out). The buffer kind is preserved through the generic parameter.
|
|
5
5
|
*/
|
|
6
|
-
export declare function sliceBackingBuffer<TArrayBuffer extends ArrayBufferLike>(src:
|
|
6
|
+
export declare function sliceBackingBuffer<TArrayBuffer extends ArrayBufferLike>(src: {
|
|
7
|
+
buffer: TArrayBuffer;
|
|
8
|
+
byteOffset: number;
|
|
9
|
+
byteLength: number;
|
|
10
|
+
}): TArrayBuffer;
|
|
7
11
|
//# sourceMappingURL=transferable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferable.d.ts","sourceRoot":"","sources":["../src/transferable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transferable.d.ts","sourceRoot":"","sources":["../src/transferable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,SAAS,eAAe,EAAE,GAAG,EAAE;IAC5E,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,YAAY,CAKf"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.3.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/worker.d.ts
CHANGED
|
@@ -3,17 +3,15 @@ import { type AlignStrategy } from "./image.ts";
|
|
|
3
3
|
import { type Counters } from "./perf.ts";
|
|
4
4
|
export type InitMessage = {
|
|
5
5
|
type: "init";
|
|
6
|
-
aBytes: Uint8Array;
|
|
7
|
-
bBytes: Uint8Array;
|
|
8
|
-
maskBytes: Uint8Array | null;
|
|
9
|
-
dpi: number;
|
|
10
|
-
alpha: boolean;
|
|
11
6
|
pallet: Pallet;
|
|
12
7
|
align: AlignStrategy;
|
|
13
8
|
};
|
|
14
9
|
export type PageMessage = {
|
|
15
10
|
type: "page";
|
|
16
11
|
index: number;
|
|
12
|
+
a: ArrayBuffer | null;
|
|
13
|
+
b: ArrayBuffer | null;
|
|
14
|
+
mask: ArrayBuffer | null;
|
|
17
15
|
};
|
|
18
16
|
export type LoadedMessage = {
|
|
19
17
|
type: "loaded";
|
|
@@ -39,9 +37,9 @@ export type PageResultMessage = {
|
|
|
39
37
|
height: number;
|
|
40
38
|
data: ArrayBuffer;
|
|
41
39
|
};
|
|
42
|
-
addition:
|
|
43
|
-
deletion:
|
|
44
|
-
modification:
|
|
40
|
+
addition: ArrayBuffer;
|
|
41
|
+
deletion: ArrayBuffer;
|
|
42
|
+
modification: ArrayBuffer;
|
|
45
43
|
perf?: Counters | undefined;
|
|
46
44
|
};
|
|
47
45
|
export type ErrorMessage = {
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKhD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAGd,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACtB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACxD,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACxD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAC3D,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|