@pdfme/manipulator 5.5.10-dev.5 → 6.0.0-dev.1
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/package.json +28 -56
- package/tsconfig.build.json +14 -0
- package/tsconfig.json +14 -4
- package/vite.config.mts +33 -0
- package/vitest.setup.ts +3 -0
- package/dist/cjs/__tests__/e2e/insert.e2e.test.js +0 -32
- package/dist/cjs/__tests__/e2e/insert.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/merge.e2e.test.js +0 -20
- package/dist/cjs/__tests__/e2e/merge.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/move.e2e.test.js +0 -18
- package/dist/cjs/__tests__/e2e/move.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/organize-complex.e2e.test.js +0 -96
- package/dist/cjs/__tests__/e2e/organize-complex.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/organize-single.e2e.test.js +0 -68
- package/dist/cjs/__tests__/e2e/organize-single.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/remove.e2e.test.js +0 -28
- package/dist/cjs/__tests__/e2e/remove.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/rotate.e2e.test.js +0 -38
- package/dist/cjs/__tests__/e2e/rotate.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/e2e/split.e2e.test.js +0 -27
- package/dist/cjs/__tests__/e2e/split.e2e.test.js.map +0 -1
- package/dist/cjs/__tests__/insert.test.js +0 -18
- package/dist/cjs/__tests__/insert.test.js.map +0 -1
- package/dist/cjs/__tests__/merge.test.js +0 -16
- package/dist/cjs/__tests__/merge.test.js.map +0 -1
- package/dist/cjs/__tests__/move.test.js +0 -16
- package/dist/cjs/__tests__/move.test.js.map +0 -1
- package/dist/cjs/__tests__/organize.test.js +0 -75
- package/dist/cjs/__tests__/organize.test.js.map +0 -1
- package/dist/cjs/__tests__/remove.test.js +0 -20
- package/dist/cjs/__tests__/remove.test.js.map +0 -1
- package/dist/cjs/__tests__/rotate.test.js +0 -17
- package/dist/cjs/__tests__/rotate.test.js.map +0 -1
- package/dist/cjs/__tests__/split.test.js +0 -21
- package/dist/cjs/__tests__/split.test.js.map +0 -1
- package/dist/cjs/__tests__/test-helpers.js +0 -44
- package/dist/cjs/__tests__/test-helpers.js.map +0 -1
- package/dist/cjs/__tests__/utils.js +0 -29
- package/dist/cjs/__tests__/utils.js.map +0 -1
- package/dist/cjs/src/index.js +0 -161
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/esm/__tests__/e2e/insert.e2e.test.js +0 -30
- package/dist/esm/__tests__/e2e/insert.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/merge.e2e.test.js +0 -18
- package/dist/esm/__tests__/e2e/merge.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/move.e2e.test.js +0 -16
- package/dist/esm/__tests__/e2e/move.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/organize-complex.e2e.test.js +0 -94
- package/dist/esm/__tests__/e2e/organize-complex.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/organize-single.e2e.test.js +0 -66
- package/dist/esm/__tests__/e2e/organize-single.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/remove.e2e.test.js +0 -26
- package/dist/esm/__tests__/e2e/remove.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/rotate.e2e.test.js +0 -36
- package/dist/esm/__tests__/e2e/rotate.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/e2e/split.e2e.test.js +0 -25
- package/dist/esm/__tests__/e2e/split.e2e.test.js.map +0 -1
- package/dist/esm/__tests__/insert.test.js +0 -16
- package/dist/esm/__tests__/insert.test.js.map +0 -1
- package/dist/esm/__tests__/merge.test.js +0 -14
- package/dist/esm/__tests__/merge.test.js.map +0 -1
- package/dist/esm/__tests__/move.test.js +0 -14
- package/dist/esm/__tests__/move.test.js.map +0 -1
- package/dist/esm/__tests__/organize.test.js +0 -73
- package/dist/esm/__tests__/organize.test.js.map +0 -1
- package/dist/esm/__tests__/remove.test.js +0 -18
- package/dist/esm/__tests__/remove.test.js.map +0 -1
- package/dist/esm/__tests__/rotate.test.js +0 -15
- package/dist/esm/__tests__/rotate.test.js.map +0 -1
- package/dist/esm/__tests__/split.test.js +0 -19
- package/dist/esm/__tests__/split.test.js.map +0 -1
- package/dist/esm/__tests__/test-helpers.js +0 -32
- package/dist/esm/__tests__/test-helpers.js.map +0 -1
- package/dist/esm/__tests__/utils.js +0 -23
- package/dist/esm/__tests__/utils.js.map +0 -1
- package/dist/esm/src/index.js +0 -152
- package/dist/esm/src/index.js.map +0 -1
- package/dist/types/__tests__/e2e/insert.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/merge.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/move.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/organize-complex.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/organize-single.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/remove.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/rotate.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/e2e/split.e2e.test.d.ts +0 -1
- package/dist/types/__tests__/insert.test.d.ts +0 -1
- package/dist/types/__tests__/merge.test.d.ts +0 -1
- package/dist/types/__tests__/move.test.d.ts +0 -1
- package/dist/types/__tests__/organize.test.d.ts +0 -1
- package/dist/types/__tests__/remove.test.d.ts +0 -1
- package/dist/types/__tests__/rotate.test.d.ts +0 -1
- package/dist/types/__tests__/split.test.d.ts +0 -1
- package/dist/types/__tests__/test-helpers.d.ts +0 -6
- package/dist/types/__tests__/utils.d.ts +0 -3
- package/dist/types/src/index.d.ts +0 -46
- package/eslint.config.mjs +0 -22
- package/jest.setup.js +0 -2
- package/tsconfig.cjs.json +0 -10
- package/tsconfig.esm.json +0 -11
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../src/index");
|
|
4
|
-
const test_helpers_1 = require("./test-helpers");
|
|
5
|
-
describe('move', () => {
|
|
6
|
-
test('moves page from one position to another', async () => {
|
|
7
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
8
|
-
const result = await (0, index_1.move)(pdf, { from: 0, to: 2 });
|
|
9
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(3);
|
|
10
|
-
});
|
|
11
|
-
test('throws error for invalid page numbers', async () => {
|
|
12
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
13
|
-
await expect((0, index_1.move)(pdf, { from: 3, to: 0 })).rejects.toThrow('[@pdfme/manipulator] Invalid page number: from=3, to=0, total pages=3');
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=move.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"move.test.js","sourceRoot":"","sources":["../../../__tests__/move.test.ts"],"names":[],"mappings":";;AAAA,wCAAoC;AACpC,iDAAgE;AAEhE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAA,YAAI,EAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,IAAA,YAAI,EAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzD,uEAAuE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../src/index");
|
|
4
|
-
const test_helpers_1 = require("./test-helpers");
|
|
5
|
-
describe('organize', () => {
|
|
6
|
-
test('performs single remove operation', async () => {
|
|
7
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(5);
|
|
8
|
-
const result = await (0, index_1.organize)(pdf, [
|
|
9
|
-
{ type: 'remove', data: { position: 1 } },
|
|
10
|
-
{ type: 'remove', data: { position: 3 } },
|
|
11
|
-
]);
|
|
12
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(3);
|
|
13
|
-
});
|
|
14
|
-
test('performs single insert operation', async () => {
|
|
15
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
16
|
-
const insertPdf = await (0, test_helpers_1.createTestPDF)(2);
|
|
17
|
-
const result = await (0, index_1.organize)(pdf, [{ type: 'insert', data: { pdf: insertPdf, position: 1 } }]);
|
|
18
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(5);
|
|
19
|
-
});
|
|
20
|
-
test('performs single replace operation', async () => {
|
|
21
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
22
|
-
const replacePdf = await (0, test_helpers_1.createTestPDF)(1);
|
|
23
|
-
const result = await (0, index_1.organize)(pdf, [
|
|
24
|
-
{ type: 'replace', data: { position: 1, pdf: replacePdf } },
|
|
25
|
-
]);
|
|
26
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(3);
|
|
27
|
-
});
|
|
28
|
-
test('performs single rotate operation', async () => {
|
|
29
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
30
|
-
const result = await (0, index_1.organize)(pdf, [
|
|
31
|
-
{ type: 'rotate', data: { position: 0, degrees: 90 } },
|
|
32
|
-
{ type: 'rotate', data: { position: 2, degrees: 90 } },
|
|
33
|
-
]);
|
|
34
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(3);
|
|
35
|
-
});
|
|
36
|
-
test('performs multiple operations in sequence', async () => {
|
|
37
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(5);
|
|
38
|
-
const insertPdf = await (0, test_helpers_1.createTestPDF)(2);
|
|
39
|
-
const replacePdf = await (0, test_helpers_1.createTestPDF)(1);
|
|
40
|
-
const result = await (0, index_1.organize)(pdf, [
|
|
41
|
-
{ type: 'remove', data: { position: 1 } },
|
|
42
|
-
{ type: 'remove', data: { position: 3 } }, // 5 -> 3 pages
|
|
43
|
-
{ type: 'insert', data: { pdf: insertPdf, position: 1 } }, // 3 -> 5 pages
|
|
44
|
-
{ type: 'replace', data: { position: 2, pdf: replacePdf } }, // Still 5 pages
|
|
45
|
-
{ type: 'rotate', data: { position: 0, degrees: 90 } },
|
|
46
|
-
{ type: 'rotate', data: { position: 3, degrees: 90 } }, // Still 5 pages
|
|
47
|
-
]);
|
|
48
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(5);
|
|
49
|
-
});
|
|
50
|
-
test('throws error for invalid page numbers', async () => {
|
|
51
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
52
|
-
await expect((0, index_1.organize)(pdf, [{ type: 'remove', data: { position: 3 } }])).rejects.toThrow('[@pdfme/manipulator] Invalid page number');
|
|
53
|
-
});
|
|
54
|
-
test('throws error for invalid position', async () => {
|
|
55
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
56
|
-
const insertPdf = await (0, test_helpers_1.createTestPDF)(1);
|
|
57
|
-
await expect((0, index_1.organize)(pdf, [{ type: 'insert', data: { pdf: insertPdf, position: 4 } }])).rejects.toThrow('[@pdfme/manipulator] Invalid position');
|
|
58
|
-
});
|
|
59
|
-
test('throws error for invalid rotation degrees', async () => {
|
|
60
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
61
|
-
await expect(
|
|
62
|
-
// @ts-expect-error
|
|
63
|
-
(0, index_1.organize)(pdf, [{ type: 'rotate', data: { pages: [0], degrees: 45 } }])).rejects.toThrow('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
|
|
64
|
-
});
|
|
65
|
-
test('throws error for empty actions array', async () => {
|
|
66
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
67
|
-
await expect((0, index_1.organize)(pdf, [])).rejects.toThrow('[@pdfme/manipulator] At least one action is required');
|
|
68
|
-
});
|
|
69
|
-
test('throws error for unknown action type', async () => {
|
|
70
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
71
|
-
// @ts-expect-error
|
|
72
|
-
await expect((0, index_1.organize)(pdf, [{ type: 'invalid', data: { pages: [] } }])).rejects.toThrow('[@pdfme/manipulator] Unknown action type: invalid');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
//# sourceMappingURL=organize.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"organize.test.js","sourceRoot":"","sources":["../../../__tests__/organize.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../src/index");
|
|
4
|
-
const test_helpers_1 = require("./test-helpers");
|
|
5
|
-
describe('remove', () => {
|
|
6
|
-
test('removes specified pages from PDF', async () => {
|
|
7
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(5);
|
|
8
|
-
const result = await (0, index_1.remove)(pdf, [1, 3]);
|
|
9
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(3);
|
|
10
|
-
});
|
|
11
|
-
test('throws error when no pages provided', async () => {
|
|
12
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
13
|
-
await expect((0, index_1.remove)(pdf, [])).rejects.toThrow('[@pdfme/manipulator] At least one page number is required');
|
|
14
|
-
});
|
|
15
|
-
test('throws error for invalid page numbers', async () => {
|
|
16
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
17
|
-
await expect((0, index_1.remove)(pdf, [3])).rejects.toThrow('[@pdfme/manipulator] Invalid page number');
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=remove.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remove.test.js","sourceRoot":"","sources":["../../../__tests__/remove.test.ts"],"names":[],"mappings":";;AAAA,wCAAsC;AACtC,iDAAgE;AAEhE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAA,cAAM,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,IAAA,cAAM,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3C,2DAA2D,CAC5D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,IAAA,cAAM,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../src/index");
|
|
4
|
-
const test_helpers_1 = require("./test-helpers");
|
|
5
|
-
describe('rotate', () => {
|
|
6
|
-
test('rotates PDF pages by specified degrees', async () => {
|
|
7
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(2);
|
|
8
|
-
const result = await (0, index_1.rotate)(pdf, 90);
|
|
9
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(result)).toBe(2);
|
|
10
|
-
});
|
|
11
|
-
test('throws error for non-90-degree rotation', async () => {
|
|
12
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(2);
|
|
13
|
-
// @ts-expect-error
|
|
14
|
-
await expect((0, index_1.rotate)(pdf, 45)).rejects.toThrow('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=rotate.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotate.test.js","sourceRoot":"","sources":["../../../__tests__/rotate.test.ts"],"names":[],"mappings":";;AAAA,wCAAsC;AACtC,iDAAgE;AAEhE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAA,cAAM,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,mBAAmB;QACnB,MAAM,MAAM,CAAC,IAAA,cAAM,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3C,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../src/index");
|
|
4
|
-
const test_helpers_1 = require("./test-helpers");
|
|
5
|
-
describe('split', () => {
|
|
6
|
-
test('splits PDF into ranges', async () => {
|
|
7
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(5);
|
|
8
|
-
const splits = await (0, index_1.split)(pdf, [
|
|
9
|
-
{ start: 0, end: 1 },
|
|
10
|
-
{ start: 2, end: 4 },
|
|
11
|
-
]);
|
|
12
|
-
expect(splits.length).toBe(2);
|
|
13
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(splits[0])).toBe(2);
|
|
14
|
-
expect(await (0, test_helpers_1.getPDFPageCount)(splits[1])).toBe(3);
|
|
15
|
-
});
|
|
16
|
-
test('throws error for invalid ranges', async () => {
|
|
17
|
-
const pdf = await (0, test_helpers_1.createTestPDF)(3);
|
|
18
|
-
await expect((0, index_1.split)(pdf, [{ start: 1, end: 0 }])).rejects.toThrow('[@pdfme/manipulator] Invalid range');
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=split.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"split.test.js","sourceRoot":"","sources":["../../../__tests__/split.test.ts"],"names":[],"mappings":";;AAAA,wCAAqC;AACrC,iDAAgE;AAEhE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAA,aAAK,EAAC,GAAG,EAAE;YAC9B,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;YACpB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,IAAA,aAAK,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9D,oCAAoC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.loadTestPDF = exports.assetPath = exports.getPDFPageCount = exports.pdfToImages = exports.createTestPDF = void 0;
|
|
7
|
-
exports.toArrayBuffer = toArrayBuffer;
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const pdf_lib_1 = require("@pdfme/pdf-lib");
|
|
11
|
-
const converter_1 = require("@pdfme/converter");
|
|
12
|
-
const createTestPDF = async (pageCount) => {
|
|
13
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.create();
|
|
14
|
-
for (let i = 0; i < pageCount; i++) {
|
|
15
|
-
const page = pdfDoc.addPage([500, 500]);
|
|
16
|
-
page.drawText(`Page ${i + 1}`, {
|
|
17
|
-
x: 50,
|
|
18
|
-
y: 450,
|
|
19
|
-
size: 20,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return pdfDoc.save();
|
|
23
|
-
};
|
|
24
|
-
exports.createTestPDF = createTestPDF;
|
|
25
|
-
const pdfToImages = async (pdf) => {
|
|
26
|
-
const arrayBuffers = await (0, converter_1.pdf2img)(pdf, { imageType: 'png' });
|
|
27
|
-
return arrayBuffers.map((buf) => Buffer.from(new Uint8Array(buf)));
|
|
28
|
-
};
|
|
29
|
-
exports.pdfToImages = pdfToImages;
|
|
30
|
-
const getPDFPageCount = async (pdf) => {
|
|
31
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
32
|
-
return pdfDoc.getPageCount();
|
|
33
|
-
};
|
|
34
|
-
exports.getPDFPageCount = getPDFPageCount;
|
|
35
|
-
const assetPath = (fileName) => path_1.default.join(__dirname, 'assets/pdfs', fileName);
|
|
36
|
-
exports.assetPath = assetPath;
|
|
37
|
-
function toArrayBuffer(buf) {
|
|
38
|
-
return new Uint8Array(buf);
|
|
39
|
-
}
|
|
40
|
-
const loadTestPDF = (fileName) => {
|
|
41
|
-
return toArrayBuffer(fs_1.default.readFileSync((0, exports.assetPath)(fileName)));
|
|
42
|
-
};
|
|
43
|
-
exports.loadTestPDF = loadTestPDF;
|
|
44
|
-
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../__tests__/test-helpers.ts"],"names":[],"mappings":";;;;;;AA8BA,sCAEC;AAhCD,4CAAoB;AACpB,gDAAwB;AACxB,4CAA6C;AAC7C,gDAA2C;AAEpC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAuB,EAAE;IAC5E,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,MAAM,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;YAC7B,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,GAAG;YACN,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAXW,QAAA,aAAa,iBAWxB;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,GAA6B,EAAqB,EAAE;IACpF,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAO,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,eAAe,GAAG,KAAK,EAAE,GAA6B,EAAmB,EAAE;IACtF,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/B,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B;AAEK,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAAhF,QAAA,SAAS,aAAuE;AAE7F,SAAgB,aAAa,CAAC,GAAW;IACvC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAc,EAAE;IAC1D,OAAO,aAAa,CAAC,YAAE,CAAC,YAAY,CAAC,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPDFPageCount = exports.pdfToImages = exports.createTestPDF = void 0;
|
|
4
|
-
const pdf_lib_1 = require("@pdfme/pdf-lib");
|
|
5
|
-
const converter_1 = require("@pdfme/converter");
|
|
6
|
-
const createTestPDF = async (pageCount) => {
|
|
7
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.create();
|
|
8
|
-
for (let i = 0; i < pageCount; i++) {
|
|
9
|
-
const page = pdfDoc.addPage([500, 500]);
|
|
10
|
-
page.drawText(`Page ${i + 1}`, {
|
|
11
|
-
x: 50,
|
|
12
|
-
y: 450,
|
|
13
|
-
size: 20,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return pdfDoc.save();
|
|
17
|
-
};
|
|
18
|
-
exports.createTestPDF = createTestPDF;
|
|
19
|
-
const pdfToImages = async (pdf) => {
|
|
20
|
-
const arrayBuffers = await (0, converter_1.pdf2img)(pdf, { imageType: 'png' });
|
|
21
|
-
return arrayBuffers.map((buf) => Buffer.from(new Uint8Array(buf)));
|
|
22
|
-
};
|
|
23
|
-
exports.pdfToImages = pdfToImages;
|
|
24
|
-
const getPDFPageCount = async (pdf) => {
|
|
25
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
26
|
-
return pdfDoc.getPageCount();
|
|
27
|
-
};
|
|
28
|
-
exports.getPDFPageCount = getPDFPageCount;
|
|
29
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../__tests__/utils.ts"],"names":[],"mappings":";;;AAAA,4CAA6C;AAC7C,gDAA2C;AAEpC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAuB,EAAE;IAC5E,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,MAAM,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;YAC7B,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,GAAG;YACN,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAXW,QAAA,aAAa,iBAWxB;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,GAA6B,EAAqB,EAAE;IACpF,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAO,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,eAAe,GAAG,KAAK,EAAE,GAA6B,EAAmB,EAAE;IACtF,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/B,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B"}
|
package/dist/cjs/src/index.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.organize = exports.move = exports.rotate = exports.insert = exports.remove = exports.split = exports.merge = void 0;
|
|
4
|
-
const pdf_lib_1 = require("@pdfme/pdf-lib");
|
|
5
|
-
const merge = async (pdfs) => {
|
|
6
|
-
if (!pdfs.length) {
|
|
7
|
-
throw new Error('[@pdfme/manipulator] At least one PDF is required for merging');
|
|
8
|
-
}
|
|
9
|
-
const mergedPdf = await pdf_lib_1.PDFDocument.create();
|
|
10
|
-
for (const buffer of pdfs) {
|
|
11
|
-
const srcDoc = await pdf_lib_1.PDFDocument.load(buffer);
|
|
12
|
-
const copiedPages = await mergedPdf.copyPages(srcDoc, srcDoc.getPageIndices());
|
|
13
|
-
copiedPages.forEach((page) => mergedPdf.addPage(page));
|
|
14
|
-
}
|
|
15
|
-
return mergedPdf.save();
|
|
16
|
-
};
|
|
17
|
-
exports.merge = merge;
|
|
18
|
-
const split = async (pdf, ranges) => {
|
|
19
|
-
if (!ranges.length) {
|
|
20
|
-
throw new Error('[@pdfme/manipulator] At least one range is required for splitting');
|
|
21
|
-
}
|
|
22
|
-
const originalPdf = await pdf_lib_1.PDFDocument.load(pdf);
|
|
23
|
-
const numPages = originalPdf.getPages().length;
|
|
24
|
-
const result = [];
|
|
25
|
-
for (const { start = 0, end = numPages - 1 } of ranges) {
|
|
26
|
-
if (start < 0 || end >= numPages || start > end) {
|
|
27
|
-
throw new Error(`[@pdfme/manipulator] Invalid range: start=${start}, end=${end}, total pages=${numPages}`);
|
|
28
|
-
}
|
|
29
|
-
const newPdf = await pdf_lib_1.PDFDocument.create();
|
|
30
|
-
const pages = await newPdf.copyPages(originalPdf, Array.from({ length: end - start + 1 }, (_, i) => i + start));
|
|
31
|
-
pages.forEach((page) => newPdf.addPage(page));
|
|
32
|
-
result.push(await newPdf.save());
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
exports.split = split;
|
|
37
|
-
const remove = async (pdf, pages) => {
|
|
38
|
-
if (!pages.length) {
|
|
39
|
-
throw new Error('[@pdfme/manipulator] At least one page number is required for removal');
|
|
40
|
-
}
|
|
41
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
42
|
-
const numPages = pdfDoc.getPageCount();
|
|
43
|
-
if (pages.some((page) => page < 0 || page >= numPages)) {
|
|
44
|
-
throw new Error(`[@pdfme/manipulator] Invalid page number: pages must be between 0 and ${numPages - 1}`);
|
|
45
|
-
}
|
|
46
|
-
pages.sort((a, b) => b - a).forEach((pageIndex) => pdfDoc.removePage(pageIndex));
|
|
47
|
-
return pdfDoc.save();
|
|
48
|
-
};
|
|
49
|
-
exports.remove = remove;
|
|
50
|
-
const insert = async (basePdf, inserts) => {
|
|
51
|
-
inserts.sort((a, b) => a.position - b.position);
|
|
52
|
-
let currentPdf = basePdf;
|
|
53
|
-
let offset = 0;
|
|
54
|
-
for (let i = 0; i < inserts.length; i++) {
|
|
55
|
-
const { pdf, position } = inserts[i];
|
|
56
|
-
const actualPos = position + offset;
|
|
57
|
-
const basePdfDoc = await pdf_lib_1.PDFDocument.load(currentPdf);
|
|
58
|
-
const insertDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
59
|
-
const numPages = basePdfDoc.getPageCount();
|
|
60
|
-
if (actualPos < 0 || actualPos > numPages) {
|
|
61
|
-
throw new Error(`[@pdfme/manipulator] Invalid position: must be between 0 and ${numPages}`);
|
|
62
|
-
}
|
|
63
|
-
const newPdfDoc = await pdf_lib_1.PDFDocument.create();
|
|
64
|
-
if (actualPos > 0) {
|
|
65
|
-
const beforePages = await newPdfDoc.copyPages(basePdfDoc, Array.from({ length: actualPos }, (_, idx) => idx));
|
|
66
|
-
beforePages.forEach((page) => newPdfDoc.addPage(page));
|
|
67
|
-
}
|
|
68
|
-
const insertPages = await newPdfDoc.copyPages(insertDoc, insertDoc.getPageIndices());
|
|
69
|
-
insertPages.forEach((page) => newPdfDoc.addPage(page));
|
|
70
|
-
if (actualPos < numPages) {
|
|
71
|
-
const afterPages = await newPdfDoc.copyPages(basePdfDoc, Array.from({ length: numPages - actualPos }, (_, idx) => idx + actualPos));
|
|
72
|
-
afterPages.forEach((page) => newPdfDoc.addPage(page));
|
|
73
|
-
}
|
|
74
|
-
currentPdf = await newPdfDoc.save();
|
|
75
|
-
offset += insertDoc.getPageCount();
|
|
76
|
-
}
|
|
77
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(currentPdf);
|
|
78
|
-
return pdfDoc.save();
|
|
79
|
-
};
|
|
80
|
-
exports.insert = insert;
|
|
81
|
-
const rotate = async (pdf, degrees, pageNumbers) => {
|
|
82
|
-
if (!Number.isInteger(degrees) || degrees % 90 !== 0) {
|
|
83
|
-
throw new Error('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
|
|
84
|
-
}
|
|
85
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
86
|
-
const pages = pdfDoc.getPages();
|
|
87
|
-
if (!pages.length) {
|
|
88
|
-
throw new Error('[@pdfme/manipulator] PDF has no pages to rotate');
|
|
89
|
-
}
|
|
90
|
-
const normalizedDegrees = ((degrees % 360) + 360) % 360;
|
|
91
|
-
if (normalizedDegrees % 90 !== 0) {
|
|
92
|
-
throw new Error('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
|
|
93
|
-
}
|
|
94
|
-
if (pageNumbers) {
|
|
95
|
-
if (pageNumbers.some((page) => page < 0 || page >= pages.length)) {
|
|
96
|
-
throw new Error(`[@pdfme/manipulator] Invalid page number: pages must be between 0 and ${pages.length - 1}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
const pagesToRotate = pageNumbers || pages.map((_, i) => i);
|
|
100
|
-
pagesToRotate.forEach((pageNum) => {
|
|
101
|
-
const page = pages[pageNum];
|
|
102
|
-
if (page) {
|
|
103
|
-
page.setRotation({
|
|
104
|
-
type: pdf_lib_1.RotationTypes.Degrees,
|
|
105
|
-
angle: normalizedDegrees % 360,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
return pdfDoc.save();
|
|
110
|
-
};
|
|
111
|
-
exports.rotate = rotate;
|
|
112
|
-
const move = async (pdf, operation) => {
|
|
113
|
-
const { from, to } = operation;
|
|
114
|
-
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
|
|
115
|
-
const currentPageCount = pdfDoc.getPageCount();
|
|
116
|
-
if (from < 0 || from >= currentPageCount || to < 0 || to >= currentPageCount) {
|
|
117
|
-
throw new Error(`[@pdfme/manipulator] Invalid page number: from=${from}, to=${to}, total pages=${currentPageCount}`);
|
|
118
|
-
}
|
|
119
|
-
if (from === to) {
|
|
120
|
-
return pdfDoc.save();
|
|
121
|
-
}
|
|
122
|
-
const page = pdfDoc.getPage(from);
|
|
123
|
-
pdfDoc.removePage(from);
|
|
124
|
-
const adjustedTo = from < to ? to - 1 : to;
|
|
125
|
-
pdfDoc.insertPage(adjustedTo, page);
|
|
126
|
-
return pdfDoc.save();
|
|
127
|
-
};
|
|
128
|
-
exports.move = move;
|
|
129
|
-
const organize = async (pdf, actions) => {
|
|
130
|
-
if (!actions.length) {
|
|
131
|
-
throw new Error('[@pdfme/manipulator] At least one action is required');
|
|
132
|
-
}
|
|
133
|
-
let currentPdf = await pdf_lib_1.PDFDocument.load(pdf);
|
|
134
|
-
for (const action of actions) {
|
|
135
|
-
const currentBuffer = await currentPdf.save();
|
|
136
|
-
switch (action.type) {
|
|
137
|
-
case 'remove':
|
|
138
|
-
currentPdf = await pdf_lib_1.PDFDocument.load(await remove(currentBuffer, [action.data.position]));
|
|
139
|
-
break;
|
|
140
|
-
case 'insert':
|
|
141
|
-
currentPdf = await pdf_lib_1.PDFDocument.load(await insert(currentBuffer, [action.data]));
|
|
142
|
-
break;
|
|
143
|
-
case 'replace': {
|
|
144
|
-
const withoutTarget = await remove(currentBuffer, [action.data.position]);
|
|
145
|
-
currentPdf = await pdf_lib_1.PDFDocument.load(await insert(withoutTarget, [action.data]));
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
case 'rotate':
|
|
149
|
-
currentPdf = await pdf_lib_1.PDFDocument.load(await rotate(currentBuffer, action.data.degrees, [action.data.position]));
|
|
150
|
-
break;
|
|
151
|
-
case 'move':
|
|
152
|
-
currentPdf = await pdf_lib_1.PDFDocument.load(await move(currentBuffer, action.data));
|
|
153
|
-
break;
|
|
154
|
-
default:
|
|
155
|
-
throw new Error(`[@pdfme/manipulator] Unknown action type: ${action.type}`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return currentPdf.save();
|
|
159
|
-
};
|
|
160
|
-
exports.organize = organize;
|
|
161
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { insert } from '../../src/index';
|
|
2
|
-
import { pdfToImages, loadTestPDF } from '../test-helpers';
|
|
3
|
-
import 'jest-image-snapshot';
|
|
4
|
-
describe('E2E: insert', () => {
|
|
5
|
-
const fiveP = loadTestPDF('5p.pdf');
|
|
6
|
-
const aPdf = loadTestPDF('a.pdf');
|
|
7
|
-
test('insert: insert a.pdf at position 0 in 5p.pdf', async () => {
|
|
8
|
-
const inserted = await insert(fiveP, [{ pdf: aPdf, position: 0 }]);
|
|
9
|
-
const images = await pdfToImages(inserted);
|
|
10
|
-
for (let i = 0; i < images.length; i++) {
|
|
11
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
12
|
-
customSnapshotIdentifier: `insert-5p-a-at-0-result-page${i + 1}`,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
test('insert: insert a.pdf at position 0 and 2 in 5p.pdf', async () => {
|
|
17
|
-
// Note: the second insert is done in the same buffer, so the offset changes after the first insert
|
|
18
|
-
const inserted = await insert(fiveP, [
|
|
19
|
-
{ pdf: aPdf, position: 0 },
|
|
20
|
-
{ pdf: aPdf, position: 2 }, // The PDF is 6 pages after the first insert
|
|
21
|
-
]);
|
|
22
|
-
const images = await pdfToImages(inserted);
|
|
23
|
-
for (let i = 0; i < images.length; i++) {
|
|
24
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
25
|
-
customSnapshotIdentifier: `insert-5p-a-at-0-and-2-result-page${i + 1}`,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
//# sourceMappingURL=insert.e2e.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"insert.e2e.test.js","sourceRoot":"","sources":["../../../../__tests__/e2e/insert.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACrC,wBAAwB,EAAE,+BAA+B,CAAC,GAAG,CAAC,EAAE;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,mGAAmG;QACnG,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE;YACnC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;YAC1B,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,4CAA4C;SACzE,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACrC,wBAAwB,EAAE,qCAAqC,CAAC,GAAG,CAAC,EAAE;aACvE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { merge } from '../../src/index';
|
|
2
|
-
import { pdfToImages, loadTestPDF } from '../test-helpers';
|
|
3
|
-
import 'jest-image-snapshot';
|
|
4
|
-
describe('E2E: merge', () => {
|
|
5
|
-
const aPdf = loadTestPDF('a.pdf');
|
|
6
|
-
const bPdf = loadTestPDF('b.pdf');
|
|
7
|
-
const cPdf = loadTestPDF('c.pdf');
|
|
8
|
-
test('merge: merge a.pdf, b.pdf, c.pdf in order', async () => {
|
|
9
|
-
const mergedBuffer = await merge([aPdf, bPdf, cPdf]);
|
|
10
|
-
const images = await pdfToImages(mergedBuffer);
|
|
11
|
-
for (let i = 0; i < images.length; i++) {
|
|
12
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
13
|
-
customSnapshotIdentifier: `merge-abc-page${i + 1}`,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=merge.e2e.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge.e2e.test.js","sourceRoot":"","sources":["../../../../__tests__/e2e/merge.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACrC,wBAAwB,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { move } from '../../src/index';
|
|
2
|
-
import { pdfToImages, loadTestPDF } from '../test-helpers';
|
|
3
|
-
import 'jest-image-snapshot';
|
|
4
|
-
describe('E2E: move', () => {
|
|
5
|
-
const fiveP = loadTestPDF('5p.pdf');
|
|
6
|
-
test('move: move the 1st page (index:0) of 5p.pdf to the 3rd position (index:2)', async () => {
|
|
7
|
-
const moved = await move(fiveP, { from: 0, to: 2 });
|
|
8
|
-
const images = await pdfToImages(moved);
|
|
9
|
-
for (let i = 0; i < images.length; i++) {
|
|
10
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
11
|
-
customSnapshotIdentifier: `move-5p-page0-to-2-result-page${i + 1}`,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=move.e2e.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"move.e2e.test.js","sourceRoot":"","sources":["../../../../__tests__/e2e/move.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACrC,wBAAwB,EAAE,iCAAiC,CAAC,GAAG,CAAC,EAAE;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { organize } from '../../src/index';
|
|
2
|
-
import { pdfToImages, loadTestPDF } from '../test-helpers';
|
|
3
|
-
import 'jest-image-snapshot';
|
|
4
|
-
describe('E2E: organize (complex operations)', () => {
|
|
5
|
-
const fiveP = loadTestPDF('5p.pdf');
|
|
6
|
-
const aPdf = loadTestPDF('a.pdf');
|
|
7
|
-
const bPdf = loadTestPDF('b.pdf');
|
|
8
|
-
test('organize: Remove -> Insert -> Move (check index changes)', async () => {
|
|
9
|
-
// Remove the 2nd page (index:1) => 4 pages
|
|
10
|
-
// Insert a.pdf at the 2nd page (index:1) => 5 pages
|
|
11
|
-
// Move the newly inserted page (index:1) to the 1st page (index:0) => 5 pages
|
|
12
|
-
const result = await organize(fiveP, [
|
|
13
|
-
{ type: 'remove', data: { position: 1 } },
|
|
14
|
-
{ type: 'insert', data: { pdf: aPdf, position: 1 } },
|
|
15
|
-
{ type: 'move', data: { from: 1, to: 0 } },
|
|
16
|
-
]);
|
|
17
|
-
const images = await pdfToImages(result);
|
|
18
|
-
for (let i = 0; i < images.length; i++) {
|
|
19
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
20
|
-
customSnapshotIdentifier: `organize-composite-1-result-page${i + 1}`,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
test('organize: Replace -> Rotate -> Remove', async () => {
|
|
25
|
-
// Replace the 3rd page with a.pdf => 5 pages
|
|
26
|
-
// Rotate the 3rd page by 180 => 5 pages
|
|
27
|
-
// Remove the 1st page => 4 pages
|
|
28
|
-
const result = await organize(fiveP, [
|
|
29
|
-
{ type: 'replace', data: { pdf: aPdf, position: 2 } },
|
|
30
|
-
{ type: 'rotate', data: { position: 2, degrees: 180 } },
|
|
31
|
-
{ type: 'remove', data: { position: 0 } },
|
|
32
|
-
]);
|
|
33
|
-
const images = await pdfToImages(result);
|
|
34
|
-
for (let i = 0; i < images.length; i++) {
|
|
35
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
36
|
-
customSnapshotIdentifier: `organize-composite-2-result-page${i + 1}`,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
test('organize: Insert -> Insert -> Move -> Move', async () => {
|
|
41
|
-
// Insert a.pdf at the end (index:5) => 6 pages
|
|
42
|
-
// Insert b.pdf at the start (index:0) => 7 pages
|
|
43
|
-
// Move the 3rd page (index:2) to the 6th page (index:5) => 7 pages
|
|
44
|
-
// Move the 4th page (index:3) to the 2nd page (index:1) => 7 pages
|
|
45
|
-
const result = await organize(fiveP, [
|
|
46
|
-
{ type: 'insert', data: { pdf: aPdf, position: 5 } },
|
|
47
|
-
{ type: 'insert', data: { pdf: bPdf, position: 0 } },
|
|
48
|
-
{ type: 'move', data: { from: 2, to: 5 } },
|
|
49
|
-
{ type: 'move', data: { from: 3, to: 1 } },
|
|
50
|
-
]);
|
|
51
|
-
const images = await pdfToImages(result);
|
|
52
|
-
for (let i = 0; i < images.length; i++) {
|
|
53
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
54
|
-
customSnapshotIdentifier: `organize-composite-3-result-page${i + 1}`,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
test('organize: Rotate -> Rotate -> Remove', async () => {
|
|
59
|
-
// Rotate the 2nd and 4th pages by 90 => 5 pages
|
|
60
|
-
// Rotate the 3rd page by 270 => 5 pages
|
|
61
|
-
// Remove the 1st page => 4 pages
|
|
62
|
-
const result = await organize(fiveP, [
|
|
63
|
-
{ type: 'rotate', data: { position: 1, degrees: 90 } },
|
|
64
|
-
{ type: 'rotate', data: { position: 3, degrees: 90 } },
|
|
65
|
-
{ type: 'rotate', data: { position: 2, degrees: 270 } },
|
|
66
|
-
{ type: 'remove', data: { position: 0 } },
|
|
67
|
-
]);
|
|
68
|
-
const images = await pdfToImages(result);
|
|
69
|
-
for (let i = 0; i < images.length; i++) {
|
|
70
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
71
|
-
customSnapshotIdentifier: `organize-composite-4-result-page${i + 1}`,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
test('organize: Remove -> Insert -> Remove -> Insert (multiple times)', async () => {
|
|
76
|
-
// Remove the 5th page (index:4) => 4 pages
|
|
77
|
-
// Insert a.pdf at the 2nd page (index:1) => 5 pages
|
|
78
|
-
// Remove the 1st page (index:0) => 4 pages
|
|
79
|
-
// Insert b.pdf at the end (index:4) => 5 pages
|
|
80
|
-
const result = await organize(fiveP, [
|
|
81
|
-
{ type: 'remove', data: { position: 4 } },
|
|
82
|
-
{ type: 'insert', data: { pdf: aPdf, position: 1 } },
|
|
83
|
-
{ type: 'remove', data: { position: 0 } },
|
|
84
|
-
{ type: 'insert', data: { pdf: bPdf, position: 4 } },
|
|
85
|
-
]);
|
|
86
|
-
const images = await pdfToImages(result);
|
|
87
|
-
for (let i = 0; i < images.length; i++) {
|
|
88
|
-
expect(images[i]).toMatchImageSnapshot({
|
|
89
|
-
customSnapshotIdentifier: `organize-composite-5-result-page${i + 1}`,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
//# sourceMappingURL=organize-complex.e2e.test.js.map
|