@pdfme/common 0.0.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.
Files changed (108) hide show
  1. package/README.md +5 -0
  2. package/dist/cjs/__tests__/dynamicTemplate.test.js +275 -0
  3. package/dist/cjs/__tests__/dynamicTemplate.test.js.map +1 -0
  4. package/dist/cjs/__tests__/expression.test.js +474 -0
  5. package/dist/cjs/__tests__/expression.test.js.map +1 -0
  6. package/dist/cjs/__tests__/helper.test.js +647 -0
  7. package/dist/cjs/__tests__/helper.test.js.map +1 -0
  8. package/dist/cjs/__tests__/pluginRegistry.test.js +83 -0
  9. package/dist/cjs/__tests__/pluginRegistry.test.js.map +1 -0
  10. package/dist/cjs/src/constants.js +27 -0
  11. package/dist/cjs/src/constants.js.map +1 -0
  12. package/dist/cjs/src/dynamicTemplate.js +284 -0
  13. package/dist/cjs/src/dynamicTemplate.js.map +1 -0
  14. package/dist/cjs/src/expression.js +463 -0
  15. package/dist/cjs/src/expression.js.map +1 -0
  16. package/dist/cjs/src/helper.js +217 -0
  17. package/dist/cjs/src/helper.js.map +1 -0
  18. package/dist/cjs/src/index.js +42 -0
  19. package/dist/cjs/src/index.js.map +1 -0
  20. package/dist/cjs/src/pluginRegistry.js +33 -0
  21. package/dist/cjs/src/pluginRegistry.js.map +1 -0
  22. package/dist/cjs/src/schema.js +190 -0
  23. package/dist/cjs/src/schema.js.map +1 -0
  24. package/dist/cjs/src/types.js +3 -0
  25. package/dist/cjs/src/types.js.map +1 -0
  26. package/dist/cjs/src/version.js +5 -0
  27. package/dist/cjs/src/version.js.map +1 -0
  28. package/dist/esm/__tests__/dynamicTemplate.test.js +240 -0
  29. package/dist/esm/__tests__/dynamicTemplate.test.js.map +1 -0
  30. package/dist/esm/__tests__/expression.test.js +472 -0
  31. package/dist/esm/__tests__/expression.test.js.map +1 -0
  32. package/dist/esm/__tests__/helper.test.js +612 -0
  33. package/dist/esm/__tests__/helper.test.js.map +1 -0
  34. package/dist/esm/__tests__/pluginRegistry.test.js +81 -0
  35. package/dist/esm/__tests__/pluginRegistry.test.js.map +1 -0
  36. package/dist/esm/src/constants.js +24 -0
  37. package/dist/esm/src/constants.js.map +1 -0
  38. package/dist/esm/src/dynamicTemplate.js +280 -0
  39. package/dist/esm/src/dynamicTemplate.js.map +1 -0
  40. package/dist/esm/src/expression.js +426 -0
  41. package/dist/esm/src/expression.js.map +1 -0
  42. package/dist/esm/src/helper.js +193 -0
  43. package/dist/esm/src/helper.js.map +1 -0
  44. package/dist/esm/src/index.js +8 -0
  45. package/dist/esm/src/index.js.map +1 -0
  46. package/dist/esm/src/pluginRegistry.js +29 -0
  47. package/dist/esm/src/pluginRegistry.js.map +1 -0
  48. package/dist/esm/src/schema.js +187 -0
  49. package/dist/esm/src/schema.js.map +1 -0
  50. package/dist/esm/src/types.js +2 -0
  51. package/dist/esm/src/types.js.map +1 -0
  52. package/dist/esm/src/version.js +2 -0
  53. package/dist/esm/src/version.js.map +1 -0
  54. package/dist/node/__tests__/dynamicTemplate.test.js +275 -0
  55. package/dist/node/__tests__/dynamicTemplate.test.js.map +1 -0
  56. package/dist/node/__tests__/expression.test.js +474 -0
  57. package/dist/node/__tests__/expression.test.js.map +1 -0
  58. package/dist/node/__tests__/helper.test.js +647 -0
  59. package/dist/node/__tests__/helper.test.js.map +1 -0
  60. package/dist/node/__tests__/pluginRegistry.test.js +83 -0
  61. package/dist/node/__tests__/pluginRegistry.test.js.map +1 -0
  62. package/dist/node/src/constants.js +27 -0
  63. package/dist/node/src/constants.js.map +1 -0
  64. package/dist/node/src/dynamicTemplate.js +284 -0
  65. package/dist/node/src/dynamicTemplate.js.map +1 -0
  66. package/dist/node/src/expression.js +463 -0
  67. package/dist/node/src/expression.js.map +1 -0
  68. package/dist/node/src/helper.js +217 -0
  69. package/dist/node/src/helper.js.map +1 -0
  70. package/dist/node/src/index.js +42 -0
  71. package/dist/node/src/index.js.map +1 -0
  72. package/dist/node/src/pluginRegistry.js +33 -0
  73. package/dist/node/src/pluginRegistry.js.map +1 -0
  74. package/dist/node/src/schema.js +190 -0
  75. package/dist/node/src/schema.js.map +1 -0
  76. package/dist/node/src/types.js +3 -0
  77. package/dist/node/src/types.js.map +1 -0
  78. package/dist/node/src/version.js +5 -0
  79. package/dist/node/src/version.js.map +1 -0
  80. package/dist/types/__tests__/dynamicTemplate.test.d.ts +1 -0
  81. package/dist/types/__tests__/expression.test.d.ts +1 -0
  82. package/dist/types/__tests__/helper.test.d.ts +1 -0
  83. package/dist/types/__tests__/pluginRegistry.test.d.ts +1 -0
  84. package/dist/types/src/constants.d.ts +20 -0
  85. package/dist/types/src/dynamicTemplate.d.ts +15 -0
  86. package/dist/types/src/expression.d.ts +6 -0
  87. package/dist/types/src/helper.d.ts +35 -0
  88. package/dist/types/src/index.d.ts +9 -0
  89. package/dist/types/src/pluginRegistry.d.ts +5 -0
  90. package/dist/types/src/schema.d.ts +820 -0
  91. package/dist/types/src/types.d.ts +181 -0
  92. package/dist/types/src/version.d.ts +1 -0
  93. package/eslint.config.mjs +22 -0
  94. package/package.json +84 -0
  95. package/set-version.js +31 -0
  96. package/src/constants.ts +30 -0
  97. package/src/dynamicTemplate.ts +349 -0
  98. package/src/expression.ts +460 -0
  99. package/src/helper.ts +284 -0
  100. package/src/index.ts +136 -0
  101. package/src/pluginRegistry.ts +30 -0
  102. package/src/schema.ts +223 -0
  103. package/src/types.ts +198 -0
  104. package/src/version.ts +1 -0
  105. package/tsconfig.cjs.json +10 -0
  106. package/tsconfig.esm.json +11 -0
  107. package/tsconfig.json +6 -0
  108. package/tsconfig.node.json +11 -0
@@ -0,0 +1,240 @@
1
+ import { readFileSync } from 'fs';
2
+ import * as path from 'path';
3
+ import { getDynamicTemplate } from '../src/dynamicTemplate.js';
4
+ const sansData = readFileSync(path.join(__dirname, `/assets/fonts/NotoSans-Regular.ttf`));
5
+ const serifData = readFileSync(path.join(__dirname, `/assets/fonts/NotoSerif-Regular.ttf`));
6
+ const getSampleFont = () => ({
7
+ NotoSans: { fallback: true, data: sansData },
8
+ NotoSerif: { data: serifData },
9
+ });
10
+ describe('getDynamicTemplate', () => {
11
+ const height = 10;
12
+ const aPositionY = 10;
13
+ const bPositionY = 30;
14
+ const padding = 10;
15
+ const template = {
16
+ schemas: [
17
+ [
18
+ {
19
+ name: 'a',
20
+ content: 'a',
21
+ type: 'a',
22
+ position: { x: 10, y: aPositionY },
23
+ width: 10,
24
+ height,
25
+ },
26
+ {
27
+ name: 'b',
28
+ content: 'b',
29
+ type: 'b',
30
+ position: { x: 10, y: bPositionY },
31
+ width: 10,
32
+ height,
33
+ },
34
+ ],
35
+ ],
36
+ basePdf: { width: 100, height: 100, padding: [padding, padding, padding, padding] },
37
+ };
38
+ const input = { a: 'a', b: 'b' };
39
+ const options = { font: getSampleFont() };
40
+ const _cache = new Map();
41
+ const getDynamicTemplateArg = { template, input, options, _cache };
42
+ const createGetDynamicTemplateArg = (increaseHeights, bHeight) => ({
43
+ ...getDynamicTemplateArg,
44
+ getDynamicHeights: async (value, args) => {
45
+ if (args.schema.type === 'a') {
46
+ return Promise.resolve(increaseHeights);
47
+ }
48
+ return Promise.resolve([bHeight || args.schema.height]);
49
+ },
50
+ });
51
+ const verifyBasicStructure = (dynamicTemplate) => {
52
+ expect(dynamicTemplate.schemas).toBeDefined();
53
+ expect(Array.isArray(dynamicTemplate.schemas)).toBe(true);
54
+ expect(dynamicTemplate.basePdf).toEqual({
55
+ width: 100,
56
+ height: 100,
57
+ padding: [padding, padding, padding, padding],
58
+ });
59
+ };
60
+ describe('Single page scenarios', () => {
61
+ test('should handle no page break', async () => {
62
+ const increaseHeights = [10, 10, 10, 10, 10];
63
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
64
+ verifyBasicStructure(dynamicTemplate);
65
+ expect(dynamicTemplate.schemas.length).toBe(1);
66
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
67
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('a');
68
+ expect(dynamicTemplate.schemas[0][1].position.y).toEqual(increaseHeights.reduce((a, b) => a + b, 0) - height + bPositionY);
69
+ expect(dynamicTemplate.schemas[0][1].name).toEqual('b');
70
+ });
71
+ });
72
+ describe('Multiple page scenarios', () => {
73
+ test('should handle page break with a on page 1 and b on page 2', async () => {
74
+ const increaseHeights = [20, 20, 20, 20];
75
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
76
+ verifyBasicStructure(dynamicTemplate);
77
+ expect(dynamicTemplate.schemas.length).toBe(2);
78
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
79
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('a');
80
+ expect(dynamicTemplate.schemas[0][1]).toBeUndefined();
81
+ expect(dynamicTemplate.schemas[1][0].name).toEqual('b');
82
+ expect(dynamicTemplate.schemas[1][0].position.y).toEqual(padding);
83
+ expect(dynamicTemplate.schemas[1][1]).toBeUndefined();
84
+ });
85
+ test('should handle page break with a on page 1 and 2, b on page 2', async () => {
86
+ const increaseHeights = [20, 20, 20, 20, 20];
87
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
88
+ verifyBasicStructure(dynamicTemplate);
89
+ expect(dynamicTemplate.schemas.length).toBe(2);
90
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
91
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('a');
92
+ expect(dynamicTemplate.schemas[0][1]).toBeUndefined();
93
+ expect(dynamicTemplate.schemas[1][0].position.y).toEqual(padding);
94
+ expect(dynamicTemplate.schemas[1][0].name).toEqual('a');
95
+ expect(dynamicTemplate.schemas[1][1].position.y).toEqual(increaseHeights.slice(3).reduce((a, b) => a + b, 0) - height + padding);
96
+ expect(dynamicTemplate.schemas[1][1].name).toEqual('b');
97
+ });
98
+ test('should handle multiple page breaks', async () => {
99
+ const increaseHeights = [50, 50, 50, 50, 50];
100
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
101
+ verifyBasicStructure(dynamicTemplate);
102
+ expect(dynamicTemplate.schemas.length).toBe(5);
103
+ // Verify 'a' elements across pages
104
+ // Page 0: 'a' first segment (50px)
105
+ expect(dynamicTemplate.schemas[0][0]).toBeDefined();
106
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
107
+ expect(dynamicTemplate.schemas[0][0].height).toEqual(50);
108
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('a');
109
+ // Page 1: 'a' second segment (50px)
110
+ expect(dynamicTemplate.schemas[1][0]).toBeDefined();
111
+ expect(dynamicTemplate.schemas[1][0].position.y).toEqual(padding);
112
+ expect(dynamicTemplate.schemas[1][0].height).toEqual(50);
113
+ expect(dynamicTemplate.schemas[1][0].name).toEqual('a');
114
+ // Page 2: 'a' third segment (50px)
115
+ expect(dynamicTemplate.schemas[2][0]).toBeDefined();
116
+ expect(dynamicTemplate.schemas[2][0].position.y).toEqual(padding);
117
+ expect(dynamicTemplate.schemas[2][0].height).toEqual(50);
118
+ expect(dynamicTemplate.schemas[2][0].name).toEqual('a');
119
+ // Page 3: 'a' fourth segment (50px)
120
+ expect(dynamicTemplate.schemas[3][0]).toBeDefined();
121
+ expect(dynamicTemplate.schemas[3][0].position.y).toEqual(padding);
122
+ expect(dynamicTemplate.schemas[3][0].height).toEqual(50);
123
+ expect(dynamicTemplate.schemas[3][0].name).toEqual('a');
124
+ // Page 4: 'a' fifth segment (50px) and 'b' element (10px)
125
+ expect(dynamicTemplate.schemas[4][0]).toBeDefined();
126
+ expect(dynamicTemplate.schemas[4][0].position.y).toEqual(padding);
127
+ expect(dynamicTemplate.schemas[4][0].height).toEqual(50);
128
+ expect(dynamicTemplate.schemas[4][0].name).toEqual('a');
129
+ expect(dynamicTemplate.schemas[4][1]).toBeDefined();
130
+ expect(dynamicTemplate.schemas[4][1].position.y).toEqual(70);
131
+ expect(dynamicTemplate.schemas[4][1].height).toEqual(10);
132
+ expect(dynamicTemplate.schemas[4][1].name).toEqual('b');
133
+ });
134
+ test('should handle both a and b on next page', async () => {
135
+ const increaseHeights = [80, 10, 10];
136
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
137
+ verifyBasicStructure(dynamicTemplate);
138
+ expect(dynamicTemplate.schemas.length).toBe(2);
139
+ // Check first page
140
+ expect(dynamicTemplate.schemas[0][0]).toBeDefined();
141
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
142
+ expect(dynamicTemplate.schemas[0][0].height).toEqual(80);
143
+ expect(dynamicTemplate.schemas[0][1]).toBeUndefined();
144
+ // Check second page
145
+ expect(dynamicTemplate.schemas[1][0]).toBeDefined();
146
+ expect(dynamicTemplate.schemas[1][0].position.y).toEqual(padding);
147
+ expect(dynamicTemplate.schemas[1][0].height).toEqual(20);
148
+ expect(dynamicTemplate.schemas[1][1]).toBeDefined();
149
+ expect(dynamicTemplate.schemas[1][1].position.y).toBeGreaterThanOrEqual(dynamicTemplate.schemas[1][0].position.y + dynamicTemplate.schemas[1][0].height);
150
+ });
151
+ });
152
+ describe('Element height modifications', () => {
153
+ test('should handle increased height for b', async () => {
154
+ const increaseHeights = [10, 10, 10, 10, 10];
155
+ const bHeight = 30;
156
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights, bHeight));
157
+ verifyBasicStructure(dynamicTemplate);
158
+ expect(dynamicTemplate.schemas.length).toBe(2);
159
+ // Check 'a' element
160
+ expect(dynamicTemplate.schemas[0][0]).toBeDefined();
161
+ expect(dynamicTemplate.schemas[0][0].position.y).toEqual(aPositionY);
162
+ expect(dynamicTemplate.schemas[0][0].height).toEqual(50);
163
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('a');
164
+ // Check 'b' element
165
+ expect(dynamicTemplate.schemas[1][0]).toBeDefined();
166
+ expect(dynamicTemplate.schemas[1][0].position.y).toEqual(padding);
167
+ expect(dynamicTemplate.schemas[1][0].height).toEqual(bHeight);
168
+ expect(dynamicTemplate.schemas[1][0].name).toEqual('b');
169
+ });
170
+ });
171
+ describe('Edge cases', () => {
172
+ test('should handle empty increase heights', async () => {
173
+ const increaseHeights = [];
174
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
175
+ verifyBasicStructure(dynamicTemplate);
176
+ expect(dynamicTemplate.schemas.length).toBe(1);
177
+ expect(dynamicTemplate.schemas[0][0]).toBeDefined();
178
+ expect(dynamicTemplate.schemas[0][0].name).toEqual('b');
179
+ expect(dynamicTemplate.schemas[0][1]).toBeUndefined();
180
+ });
181
+ test('should handle very large increase heights', async () => {
182
+ const increaseHeights = [1000, 1000];
183
+ const dynamicTemplate = await getDynamicTemplate(createGetDynamicTemplateArg(increaseHeights));
184
+ verifyBasicStructure(dynamicTemplate);
185
+ expect(dynamicTemplate.schemas.length).toBeGreaterThan(1);
186
+ });
187
+ });
188
+ describe('Long page flow (cross-template-page)', () => {
189
+ test('should flow table and text across template pages without extra blank pages', async () => {
190
+ const templateWithTwoPages = {
191
+ schemas: [
192
+ [
193
+ {
194
+ name: 'table',
195
+ content: 'table',
196
+ type: 'table',
197
+ position: { x: 10, y: 60 },
198
+ width: 80,
199
+ height: 10,
200
+ },
201
+ ],
202
+ [
203
+ {
204
+ name: 'text',
205
+ content: 'text',
206
+ type: 'text',
207
+ position: { x: 10, y: 10 },
208
+ width: 80,
209
+ height: 10,
210
+ },
211
+ ],
212
+ ],
213
+ basePdf: { width: 100, height: 100, padding: [10, 10, 10, 10] },
214
+ };
215
+ const dynamicTemplate = await getDynamicTemplate({
216
+ template: templateWithTwoPages,
217
+ input: { table: 'table', text: 'text' },
218
+ options: { font: getSampleFont() },
219
+ _cache: new Map(),
220
+ getDynamicHeights: async (value, args) => {
221
+ if (args.schema.type === 'table') {
222
+ return [10, 10, 10, 10];
223
+ }
224
+ return [args.schema.height];
225
+ },
226
+ });
227
+ verifyBasicStructure(dynamicTemplate);
228
+ expect(dynamicTemplate.schemas.length).toBe(2);
229
+ expect(dynamicTemplate.schemas[0].some((s) => s.name === 'table')).toBe(true);
230
+ expect(dynamicTemplate.schemas[1].some((s) => s.name === 'table')).toBe(true);
231
+ expect(dynamicTemplate.schemas[1].some((s) => s.name === 'text')).toBe(true);
232
+ const tableOnPage2 = dynamicTemplate.schemas[1].find((s) => s.name === 'table');
233
+ const textOnPage2 = dynamicTemplate.schemas[1].find((s) => s.name === 'text');
234
+ expect(tableOnPage2).toBeDefined();
235
+ expect(textOnPage2).toBeDefined();
236
+ expect(textOnPage2.position.y).toBeGreaterThan(tableOnPage2.position.y);
237
+ });
238
+ });
239
+ });
240
+ //# sourceMappingURL=dynamicTemplate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicTemplate.test.js","sourceRoot":"","sources":["../../../__tests__/dynamicTemplate.test.ts"],"names":[],"mappings":"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"}