@20syldev/api 5.2.0 → 5.4.0-pre

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 (54) hide show
  1. package/README.md +3 -3
  2. package/dist/app.js +7 -2
  3. package/dist/app.js.map +1 -1
  4. package/dist/config/versions.js +5 -1
  5. package/dist/config/versions.js.map +1 -1
  6. package/dist/constants.js +1 -0
  7. package/dist/constants.js.map +1 -1
  8. package/dist/middleware/ratelimit.js +1 -1
  9. package/dist/middleware/ratelimit.js.map +1 -1
  10. package/dist/modules/v5/address.js +20 -0
  11. package/dist/modules/v5/address.js.map +1 -0
  12. package/dist/modules/v5/algorithms.js +39 -0
  13. package/dist/modules/v5/algorithms.js.map +1 -0
  14. package/dist/modules/v5/asymmetric.js +10 -3
  15. package/dist/modules/v5/asymmetric.js.map +1 -1
  16. package/dist/modules/v5/barcode.js +424 -0
  17. package/dist/modules/v5/barcode.js.map +1 -0
  18. package/dist/modules/v5/case.js +57 -0
  19. package/dist/modules/v5/case.js.map +1 -0
  20. package/dist/modules/v5/chart.js +16 -10
  21. package/dist/modules/v5/chart.js.map +1 -1
  22. package/dist/modules/v5/chat.js +107 -0
  23. package/dist/modules/v5/chat.js.map +1 -0
  24. package/dist/modules/v5/evaluate.js +8 -5
  25. package/dist/modules/v5/evaluate.js.map +1 -1
  26. package/dist/modules/v5/jwt.js +42 -0
  27. package/dist/modules/v5/jwt.js.map +1 -0
  28. package/dist/modules/v5/matrix.js +5 -4
  29. package/dist/modules/v5/matrix.js.map +1 -1
  30. package/dist/modules/v5/otp.js +16 -7
  31. package/dist/modules/v5/otp.js.map +1 -1
  32. package/dist/modules/v5/symmetric.js +36 -19
  33. package/dist/modules/v5/symmetric.js.map +1 -1
  34. package/dist/modules/v5/text.js +12 -0
  35. package/dist/modules/v5/text.js.map +1 -0
  36. package/dist/modules/v5/tic_tac_toe.js +226 -0
  37. package/dist/modules/v5/tic_tac_toe.js.map +1 -0
  38. package/dist/modules/v5.js +9 -1
  39. package/dist/modules/v5.js.map +1 -1
  40. package/dist/routes/get.js +85 -44
  41. package/dist/routes/get.js.map +1 -1
  42. package/dist/routes/index.js +4 -1
  43. package/dist/routes/index.js.map +1 -1
  44. package/dist/routes/post.js +23 -1
  45. package/dist/routes/post.js.map +1 -1
  46. package/dist/utils/helpers.js +6 -1
  47. package/dist/utils/helpers.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/modules/v4/colors.js +0 -54
  50. package/dist/modules/v4/colors.js.map +0 -1
  51. package/dist/modules/v4/utils.js +0 -26
  52. package/dist/modules/v4/utils.js.map +0 -1
  53. package/dist/utils/version.js +0 -3
  54. package/dist/utils/version.js.map +0 -1
@@ -0,0 +1,424 @@
1
+ import { createCanvas } from 'canvas';
2
+ import { normalizeColor } from '../../utils/colors.js';
3
+ const VALID_TYPES = ['code128', 'ean13', 'ean8', 'upca', 'code39'];
4
+ const VALID_FORMATS = ['svg', 'png'];
5
+ function clamp(val, min, max) {
6
+ return Math.max(min, Math.min(max, Math.round(val)));
7
+ }
8
+ const C128_PATTERNS = [
9
+ [2, 1, 2, 2, 2, 2],
10
+ [2, 2, 2, 1, 2, 2],
11
+ [2, 2, 2, 2, 2, 1],
12
+ [1, 2, 1, 2, 2, 3],
13
+ [1, 2, 1, 3, 2, 2],
14
+ [1, 3, 1, 2, 2, 2],
15
+ [1, 2, 2, 2, 1, 3],
16
+ [1, 2, 2, 3, 1, 2],
17
+ [1, 3, 2, 2, 1, 2],
18
+ [2, 2, 1, 2, 1, 3],
19
+ [2, 2, 1, 3, 1, 2],
20
+ [2, 3, 1, 2, 1, 2],
21
+ [1, 1, 2, 2, 3, 2],
22
+ [1, 2, 2, 1, 3, 2],
23
+ [1, 2, 2, 2, 3, 1],
24
+ [1, 1, 3, 2, 2, 2],
25
+ [1, 2, 3, 1, 2, 2],
26
+ [1, 2, 3, 2, 2, 1],
27
+ [2, 2, 3, 2, 1, 1],
28
+ [2, 2, 1, 1, 3, 2],
29
+ [2, 2, 1, 2, 3, 1],
30
+ [2, 1, 3, 2, 1, 2],
31
+ [2, 2, 3, 1, 1, 2],
32
+ [3, 1, 2, 1, 3, 1],
33
+ [3, 1, 1, 2, 2, 2],
34
+ [3, 2, 1, 1, 2, 2],
35
+ [3, 2, 1, 2, 2, 1],
36
+ [3, 1, 2, 2, 1, 2],
37
+ [3, 2, 2, 1, 1, 2],
38
+ [3, 2, 2, 2, 1, 1],
39
+ [2, 1, 2, 1, 2, 3],
40
+ [2, 1, 2, 3, 2, 1],
41
+ [2, 3, 2, 1, 2, 1],
42
+ [1, 1, 1, 3, 2, 3],
43
+ [1, 3, 1, 1, 2, 3],
44
+ [1, 3, 1, 3, 2, 1],
45
+ [1, 1, 2, 3, 1, 3],
46
+ [1, 3, 2, 1, 1, 3],
47
+ [1, 3, 2, 3, 1, 1],
48
+ [2, 1, 1, 3, 1, 3],
49
+ [2, 3, 1, 1, 1, 3],
50
+ [2, 3, 1, 3, 1, 1],
51
+ [1, 1, 2, 1, 3, 3],
52
+ [1, 1, 2, 3, 3, 1],
53
+ [1, 3, 2, 1, 3, 1],
54
+ [1, 1, 3, 1, 2, 3],
55
+ [1, 1, 3, 3, 2, 1],
56
+ [1, 3, 3, 1, 2, 1],
57
+ [3, 1, 3, 1, 2, 1],
58
+ [2, 1, 1, 3, 3, 1],
59
+ [2, 3, 1, 1, 3, 1],
60
+ [2, 1, 3, 1, 1, 3],
61
+ [2, 1, 3, 3, 1, 1],
62
+ [2, 1, 3, 1, 3, 1],
63
+ [3, 1, 1, 1, 2, 3],
64
+ [3, 1, 1, 3, 2, 1],
65
+ [3, 3, 1, 1, 2, 1],
66
+ [3, 1, 2, 1, 1, 3],
67
+ [3, 1, 2, 3, 1, 1],
68
+ [3, 3, 2, 1, 1, 1],
69
+ [3, 1, 4, 1, 1, 1],
70
+ [2, 2, 1, 4, 1, 1],
71
+ [4, 3, 1, 1, 1, 1],
72
+ [1, 1, 1, 2, 2, 4],
73
+ [1, 1, 1, 4, 2, 2],
74
+ [1, 2, 1, 1, 2, 4],
75
+ [1, 2, 1, 4, 2, 1],
76
+ [1, 4, 1, 1, 2, 2],
77
+ [1, 4, 1, 2, 2, 1],
78
+ [1, 1, 2, 2, 1, 4],
79
+ [1, 1, 2, 4, 1, 2],
80
+ [1, 2, 2, 1, 1, 4],
81
+ [1, 2, 2, 4, 1, 1],
82
+ [1, 4, 2, 1, 1, 2],
83
+ [1, 4, 2, 2, 1, 1],
84
+ [2, 4, 1, 2, 1, 1],
85
+ [2, 2, 1, 1, 1, 4],
86
+ [4, 1, 3, 1, 1, 1],
87
+ [2, 4, 1, 1, 1, 2],
88
+ [1, 3, 4, 1, 1, 1],
89
+ [1, 1, 1, 2, 4, 2],
90
+ [1, 2, 1, 1, 4, 2],
91
+ [1, 2, 1, 2, 4, 1],
92
+ [1, 1, 4, 2, 1, 2],
93
+ [1, 2, 4, 1, 1, 2],
94
+ [1, 2, 4, 2, 1, 1],
95
+ [4, 1, 1, 2, 1, 2],
96
+ [4, 2, 1, 1, 1, 2],
97
+ [4, 2, 1, 2, 1, 1],
98
+ [2, 1, 2, 1, 4, 1],
99
+ [2, 1, 4, 1, 2, 1],
100
+ [4, 1, 2, 1, 2, 1],
101
+ [1, 1, 1, 1, 4, 3],
102
+ [1, 1, 1, 3, 4, 1],
103
+ [1, 3, 1, 1, 4, 1],
104
+ [1, 1, 4, 1, 1, 3],
105
+ [1, 1, 4, 3, 1, 1],
106
+ [4, 1, 1, 1, 1, 3],
107
+ [4, 1, 1, 3, 1, 1],
108
+ [1, 1, 3, 1, 4, 1],
109
+ [1, 1, 4, 1, 3, 1],
110
+ [3, 1, 1, 1, 4, 1],
111
+ [4, 1, 1, 1, 3, 1],
112
+ [2, 1, 1, 4, 1, 2], // 100-103 (103 = Start A)
113
+ [2, 1, 1, 2, 1, 4],
114
+ [2, 1, 1, 2, 4, 1],
115
+ [2, 3, 3, 1, 1, 1], // 104 = Start B, 105 = Start C, 106 = Stop (partial)
116
+ ];
117
+ // Stop pattern for Code 128 is special: 2 3 3 1 1 1 2 (13 modules)
118
+ const C128_STOP = [2, 3, 3, 1, 1, 1, 2];
119
+ const EAN_L = [
120
+ '0001101',
121
+ '0011001',
122
+ '0010011',
123
+ '0111101',
124
+ '0100011',
125
+ '0110001',
126
+ '0101111',
127
+ '0111011',
128
+ '0110111',
129
+ '0001011',
130
+ ];
131
+ const EAN_G = [
132
+ '0100111',
133
+ '0110011',
134
+ '0011011',
135
+ '0100001',
136
+ '0011101',
137
+ '0111001',
138
+ '0000101',
139
+ '0010001',
140
+ '0001001',
141
+ '0010111',
142
+ ];
143
+ const EAN_R = [
144
+ '1110010',
145
+ '1100110',
146
+ '1101100',
147
+ '1000010',
148
+ '1011100',
149
+ '1001110',
150
+ '1010000',
151
+ '1000100',
152
+ '1001000',
153
+ '1110100',
154
+ ];
155
+ // First digit parity structure for EAN-13 (L=false, G=true)
156
+ const EAN13_PARITY = [
157
+ [false, false, false, false, false, false], // 0
158
+ [false, false, true, false, true, true], // 1
159
+ [false, false, true, true, false, true], // 2
160
+ [false, false, true, true, true, false], // 3
161
+ [false, true, false, false, true, true], // 4
162
+ [false, true, true, false, false, true], // 5
163
+ [false, true, true, true, false, false], // 6
164
+ [false, true, false, true, false, true], // 7
165
+ [false, true, false, true, true, false], // 8
166
+ [false, true, true, false, true, false], // 9
167
+ ];
168
+ function eanCheckDigit(digits) {
169
+ let sum = 0;
170
+ for (let i = 0; i < digits.length; i++) {
171
+ const fromRight = digits.length - 1 - i;
172
+ sum += digits[i] * (fromRight % 2 === 0 ? 3 : 1);
173
+ }
174
+ return (10 - (sum % 10)) % 10;
175
+ }
176
+ const C39_CHARS = {
177
+ '0': [1, 1, 1, 3, 3, 1, 3, 1, 1],
178
+ '1': [3, 1, 1, 3, 1, 1, 1, 1, 3],
179
+ '2': [1, 1, 3, 3, 1, 1, 1, 1, 3],
180
+ '3': [3, 1, 3, 3, 1, 1, 1, 1, 1],
181
+ '4': [1, 1, 1, 3, 3, 1, 1, 1, 3],
182
+ '5': [3, 1, 1, 3, 3, 1, 1, 1, 1],
183
+ '6': [1, 1, 3, 3, 3, 1, 1, 1, 1],
184
+ '7': [1, 1, 1, 3, 1, 1, 3, 1, 3],
185
+ '8': [3, 1, 1, 3, 1, 1, 3, 1, 1],
186
+ '9': [1, 1, 3, 3, 1, 1, 3, 1, 1],
187
+ A: [3, 1, 1, 1, 1, 3, 1, 1, 3],
188
+ B: [1, 1, 3, 1, 1, 3, 1, 1, 3],
189
+ C: [3, 1, 3, 1, 1, 3, 1, 1, 1],
190
+ D: [1, 1, 1, 1, 3, 3, 1, 1, 3],
191
+ E: [3, 1, 1, 1, 3, 3, 1, 1, 1],
192
+ F: [1, 1, 3, 1, 3, 3, 1, 1, 1],
193
+ G: [1, 1, 1, 1, 1, 3, 3, 1, 3],
194
+ H: [3, 1, 1, 1, 1, 3, 3, 1, 1],
195
+ I: [1, 1, 3, 1, 1, 3, 3, 1, 1],
196
+ J: [1, 1, 1, 1, 3, 3, 3, 1, 1],
197
+ K: [3, 1, 1, 1, 1, 1, 1, 3, 3],
198
+ L: [1, 1, 3, 1, 1, 1, 1, 3, 3],
199
+ M: [3, 1, 3, 1, 1, 1, 1, 3, 1],
200
+ N: [1, 1, 1, 1, 3, 1, 1, 3, 3],
201
+ O: [3, 1, 1, 1, 3, 1, 1, 3, 1],
202
+ P: [1, 1, 3, 1, 3, 1, 1, 3, 1],
203
+ Q: [1, 1, 1, 1, 1, 1, 3, 3, 3],
204
+ R: [3, 1, 1, 1, 1, 1, 3, 3, 1],
205
+ S: [1, 1, 3, 1, 1, 1, 3, 3, 1],
206
+ T: [1, 1, 1, 1, 3, 1, 3, 3, 1],
207
+ U: [3, 3, 1, 1, 1, 1, 1, 1, 3],
208
+ V: [1, 3, 3, 1, 1, 1, 1, 1, 3],
209
+ W: [3, 3, 3, 1, 1, 1, 1, 1, 1],
210
+ X: [1, 3, 1, 1, 3, 1, 1, 1, 3],
211
+ Y: [3, 3, 1, 1, 3, 1, 1, 1, 1],
212
+ Z: [1, 3, 3, 1, 3, 1, 1, 1, 1],
213
+ '-': [1, 3, 1, 1, 1, 1, 3, 1, 3],
214
+ '.': [3, 3, 1, 1, 1, 1, 3, 1, 1],
215
+ ' ': [1, 3, 3, 1, 1, 1, 3, 1, 1],
216
+ $: [1, 3, 1, 3, 1, 3, 1, 1, 1],
217
+ '/': [1, 3, 1, 3, 1, 1, 1, 3, 1],
218
+ '+': [1, 3, 1, 1, 1, 3, 1, 3, 1],
219
+ '%': [1, 1, 1, 3, 1, 3, 1, 3, 1],
220
+ '*': [1, 3, 1, 1, 3, 1, 3, 1, 1], // * = start/stop
221
+ };
222
+ function renderSvg(modules, barWidth, height, color, bg) {
223
+ const totalWidth = modules.reduce((a, b) => a + b, 0) * barWidth;
224
+ const rects = [`<rect width="${totalWidth}" height="${height}" fill="${bg}" />`];
225
+ let x = 0;
226
+ let isBar = false;
227
+ for (const w of modules) {
228
+ const px = w * barWidth;
229
+ if (isBar) {
230
+ rects.push(`<rect x="${x}" y="0" width="${px}" height="${height}" fill="${color}" />`);
231
+ }
232
+ x += px;
233
+ isBar = !isBar;
234
+ }
235
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${totalWidth}" height="${height}" viewBox="0 0 ${totalWidth} ${height}">${rects.join('')}</svg>`;
236
+ }
237
+ function renderPng(modules, barWidth, height, color, bg) {
238
+ const totalWidth = modules.reduce((a, b) => a + b, 0) * barWidth;
239
+ const canvas = createCanvas(totalWidth, height);
240
+ const ctx = canvas.getContext('2d');
241
+ ctx.fillStyle = bg;
242
+ ctx.fillRect(0, 0, totalWidth, height);
243
+ ctx.fillStyle = color;
244
+ let x = 0;
245
+ let isBar = false;
246
+ for (const w of modules) {
247
+ const px = w * barWidth;
248
+ if (isBar)
249
+ ctx.fillRect(x, 0, px, height);
250
+ x += px;
251
+ isBar = !isBar;
252
+ }
253
+ return canvas.toBuffer('image/png');
254
+ }
255
+ function encodeCode128(data) {
256
+ for (const ch of data) {
257
+ const code = ch.charCodeAt(0);
258
+ if (code < 32 || code > 126) {
259
+ throw new Error(`Code 128 only supports ASCII 32-126 (invalid char: "${ch}")`);
260
+ }
261
+ }
262
+ const START_B = 104;
263
+ const charValues = [...data].map((ch) => ch.charCodeAt(0) - 32);
264
+ let checksum = START_B;
265
+ for (let i = 0; i < charValues.length; i++) {
266
+ checksum += (i + 1) * charValues[i];
267
+ }
268
+ checksum %= 103;
269
+ const patterns = [C128_PATTERNS[START_B], ...charValues.map((v) => C128_PATTERNS[v]), C128_PATTERNS[checksum]];
270
+ const modules = [];
271
+ for (const pat of patterns) {
272
+ for (const w of pat)
273
+ modules.push(w);
274
+ }
275
+ for (const w of C128_STOP)
276
+ modules.push(w);
277
+ return [10, ...modules, 10];
278
+ }
279
+ function bitsToModules(bits) {
280
+ const modules = [];
281
+ let i = 0;
282
+ while (i < bits.length) {
283
+ let count = 1;
284
+ while (i + count < bits.length && bits[i + count] === bits[i])
285
+ count++;
286
+ modules.push(count);
287
+ i += count;
288
+ }
289
+ return modules;
290
+ }
291
+ function encodeEan13(data) {
292
+ const digits = data.replace(/\D/g, '');
293
+ if (digits.length !== 12 && digits.length !== 13) {
294
+ throw new Error('EAN-13 requires 12 or 13 digits');
295
+ }
296
+ const d = digits.split('').map(Number);
297
+ let nums;
298
+ if (d.length === 13) {
299
+ const expected = eanCheckDigit(d.slice(0, 12));
300
+ if (d[12] !== expected) {
301
+ throw new Error(`Invalid EAN-13 check digit (expected ${expected}, got ${d[12]})`);
302
+ }
303
+ nums = d;
304
+ }
305
+ else {
306
+ nums = [...d, eanCheckDigit(d)];
307
+ }
308
+ const first = nums[0];
309
+ const parity = EAN13_PARITY[first];
310
+ let bits = '101';
311
+ for (let i = 0; i < 6; i++) {
312
+ bits += parity[i] ? EAN_G[nums[i + 1]] : EAN_L[nums[i + 1]];
313
+ }
314
+ bits += '01010';
315
+ for (let i = 7; i <= 12; i++) {
316
+ bits += EAN_R[nums[i]];
317
+ }
318
+ bits += '101';
319
+ return [7, ...bitsToModules(bits), 7];
320
+ }
321
+ function encodeEan8(data) {
322
+ const digits = data.replace(/\D/g, '');
323
+ if (digits.length !== 7 && digits.length !== 8) {
324
+ throw new Error('EAN-8 requires 7 or 8 digits');
325
+ }
326
+ const d = digits.split('').map(Number);
327
+ let nums;
328
+ if (d.length === 8) {
329
+ const expected = eanCheckDigit(d.slice(0, 7));
330
+ if (d[7] !== expected) {
331
+ throw new Error(`Invalid EAN-8 check digit (expected ${expected}, got ${d[7]})`);
332
+ }
333
+ nums = d;
334
+ }
335
+ else {
336
+ nums = [...d, eanCheckDigit(d)];
337
+ }
338
+ let bits = '101';
339
+ for (let i = 0; i < 4; i++)
340
+ bits += EAN_L[nums[i]];
341
+ bits += '01010';
342
+ for (let i = 4; i < 8; i++)
343
+ bits += EAN_R[nums[i]];
344
+ bits += '101';
345
+ return [7, ...bitsToModules(bits), 7];
346
+ }
347
+ function encodeUpca(data) {
348
+ const digits = data.replace(/\D/g, '');
349
+ if (digits.length !== 11 && digits.length !== 12) {
350
+ throw new Error('UPC-A requires 11 or 12 digits');
351
+ }
352
+ return encodeEan13(digits.length === 11 ? `0${digits}` : `0${digits.slice(0, 11)}${digits[11]}`);
353
+ }
354
+ function encodeCode39(data) {
355
+ const upper = data.toUpperCase();
356
+ for (const ch of upper) {
357
+ if (!C39_CHARS[ch]) {
358
+ throw new Error(`Code 39 invalid character: "${ch}". Allowed: A-Z, 0-9, space, - . $ / + %`);
359
+ }
360
+ }
361
+ const NARROW = 1;
362
+ const GAP = NARROW;
363
+ const modules = [NARROW * 10];
364
+ const encode = (ch) => C39_CHARS[ch];
365
+ const chars = ['*', ...upper, '*'];
366
+ for (let i = 0; i < chars.length; i++) {
367
+ const pat = encode(chars[i]);
368
+ for (const w of pat)
369
+ modules.push(w);
370
+ if (i < chars.length - 1)
371
+ modules.push(GAP);
372
+ }
373
+ modules.push(NARROW * 10);
374
+ return modules;
375
+ }
376
+ /**
377
+ * Generates a barcode image in SVG or PNG format.
378
+ *
379
+ * @param options.data - Data to encode (required)
380
+ * @param options.type - Barcode type: code128, ean13, ean8, upca, code39 (default: code128)
381
+ * @param options.width - Bar unit width in px (1–5, default 2)
382
+ * @param options.height - Bar height in px (50–300, default 100)
383
+ * @param options.format - Output format: svg or png (default: svg)
384
+ * @param options.color - Bar color hex (default: #000000)
385
+ * @param options.bg - Background color hex (default: #ffffff)
386
+ * @returns Object with contentType and body
387
+ * @throws Error if data is missing, invalid for the type, or parameters are out of range
388
+ */
389
+ export default function barcode(options) {
390
+ if (!options.data)
391
+ throw new Error('Please provide data to encode (?data={string})');
392
+ const type = (options.type ?? 'code128');
393
+ const format = (options.format ?? 'svg');
394
+ const barWidth = clamp(options.width ?? 2, 1, 5);
395
+ const height = clamp(options.height ?? 100, 50, 300);
396
+ const color = normalizeColor(options.color, '#000000');
397
+ const bg = normalizeColor(options.bg, '#ffffff');
398
+ if (!VALID_TYPES.includes(type)) {
399
+ throw new Error(`Type must be one of: ${VALID_TYPES.join(', ')}`);
400
+ }
401
+ if (!VALID_FORMATS.includes(format)) {
402
+ throw new Error(`Format must be one of: ${VALID_FORMATS.join(', ')}`);
403
+ }
404
+ if (options.width !== undefined && (options.width < 1 || options.width > 5)) {
405
+ throw new Error('Width must be between 1 and 5');
406
+ }
407
+ if (options.height !== undefined && (options.height < 50 || options.height > 300)) {
408
+ throw new Error('Height must be between 50 and 300');
409
+ }
410
+ const encoders = {
411
+ code128: encodeCode128,
412
+ ean13: encodeEan13,
413
+ ean8: encodeEan8,
414
+ upca: encodeUpca,
415
+ code39: encodeCode39,
416
+ };
417
+ const modules = encoders[type](options.data);
418
+ const contentType = format === 'png' ? 'image/png' : 'image/svg+xml';
419
+ const body = format === 'png'
420
+ ? renderPng(modules, barWidth, height, color, bg)
421
+ : renderSvg(modules, barWidth, height, color, bg);
422
+ return { contentType, body };
423
+ }
424
+ //# sourceMappingURL=barcode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barcode.js","sourceRoot":"","sources":["../../../src/modules/v5/barcode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoBvD,MAAM,WAAW,GAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClF,MAAM,aAAa,GAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEtD,SAAS,KAAK,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,aAAa,GAAe;IAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAA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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,GAAG,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"}
@@ -0,0 +1,57 @@
1
+ import { MAX_STRING_LENGTH } from '../../constants.js';
2
+ const VALID_TARGETS = ['camel', 'pascal', 'snake', 'kebab', 'constant', 'title', 'sentence', 'upper', 'lower'];
3
+ const capitalize = (w) => w.charAt(0).toUpperCase() + w.slice(1);
4
+ const tokenize = (text) => text
5
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
6
+ .replace(/[_\-.]+/g, ' ')
7
+ .trim()
8
+ .split(/\s+/)
9
+ .filter(Boolean)
10
+ .map((w) => w.toLowerCase());
11
+ /**
12
+ * Converts text to the specified case format.
13
+ * Supports: camel, pascal, snake, kebab, constant, title, sentence, upper, lower.
14
+ */
15
+ export default function caseConvert(text, to = 'camel') {
16
+ if (!text)
17
+ throw new Error('Please provide a text (?text={text})');
18
+ if (text.length > MAX_STRING_LENGTH)
19
+ throw new Error(`Text cannot exceed ${MAX_STRING_LENGTH} characters`);
20
+ if (!VALID_TARGETS.includes(to))
21
+ throw new Error(`Invalid target case. Valid values: ${VALID_TARGETS.join(', ')}`);
22
+ const words = tokenize(text);
23
+ if (words.length === 0)
24
+ throw new Error('Text must contain at least one alphanumeric character');
25
+ let result;
26
+ switch (to) {
27
+ case 'camel':
28
+ result = words[0] + words.slice(1).map(capitalize).join('');
29
+ break;
30
+ case 'pascal':
31
+ result = words.map(capitalize).join('');
32
+ break;
33
+ case 'snake':
34
+ result = words.join('_');
35
+ break;
36
+ case 'kebab':
37
+ result = words.join('-');
38
+ break;
39
+ case 'constant':
40
+ result = words.join('_').toUpperCase();
41
+ break;
42
+ case 'title':
43
+ result = words.map(capitalize).join(' ');
44
+ break;
45
+ case 'sentence':
46
+ result = capitalize(words[0]) + (words.length > 1 ? ' ' + words.slice(1).join(' ') : '');
47
+ break;
48
+ case 'upper':
49
+ result = text.toUpperCase();
50
+ break;
51
+ case 'lower':
52
+ result = text.toLowerCase();
53
+ break;
54
+ }
55
+ return { text, to, result: result };
56
+ }
57
+ //# sourceMappingURL=case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case.js","sourceRoot":"","sources":["../../../src/modules/v5/case.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,6 @@ const DEFAULT_H = 400;
17
17
  const MARGIN = { top: 30, right: 40, bottom: 40, left: 50 };
18
18
  const TITLE_HEIGHT = 30;
19
19
  const LEGEND_ROW_H = 18;
20
- // ─── Helpers ───
21
20
  function escapeXml(str) {
22
21
  return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
23
22
  }
@@ -100,15 +99,17 @@ function validatePieDonut(data) {
100
99
  };
101
100
  }
102
101
  function yScale(values) {
103
- const dataMax = Math.max(...values, 0);
102
+ let dataMax = Math.max(...values, 0);
104
103
  const dataMin = Math.min(...values, 0);
105
- const range = dataMax - dataMin || 1;
104
+ if (dataMax === dataMin)
105
+ dataMax = dataMin + 1;
106
+ const range = dataMax - dataMin;
106
107
  const rawStep = range / 5;
107
108
  const magnitude = Math.pow(10, Math.floor(Math.log10(rawStep)));
108
109
  const step = Math.ceil(rawStep / magnitude) * magnitude;
109
110
  const min = Math.floor(dataMin / step) * step;
110
111
  const max = Math.ceil(dataMax / step) * step;
111
- const gridCount = Math.round((max - min) / step);
112
+ const gridCount = Math.max(1, Math.round((max - min) / step));
112
113
  return { min, max, gridCount };
113
114
  }
114
115
  function toY(value, min, max, chartH) {
@@ -128,7 +129,6 @@ function parseOptions(options) {
128
129
  mode: options.mode === 'data' ? 'data' : 'svg',
129
130
  };
130
131
  }
131
- // ─── Bar chart ───
132
132
  /**
133
133
  * Renders a bar chart as SVG or returns its raw data.
134
134
  *
@@ -201,7 +201,6 @@ export function bar(data, options) {
201
201
  svg += '</svg>';
202
202
  return { contentType: 'image/svg+xml', body: svg };
203
203
  }
204
- // ─── Line chart ───
205
204
  /**
206
205
  * Renders a line chart as SVG or returns its raw data.
207
206
  *
@@ -232,6 +231,7 @@ export function line(data, options) {
232
231
  const chartW = renderW - MARGIN.left - MARGIN.right;
233
232
  const chartH = renderH - marginTop - MARGIN.bottom - legendH;
234
233
  const xStep = chartW / Math.max(d.labels.length - 1, 1);
234
+ const xPos = (i) => MARGIN.left + (d.labels.length > 1 ? i * xStep : chartW / 2);
235
235
  let svg = svgOpen(bg, renderW, renderH, displayW, displayH);
236
236
  if (title)
237
237
  svg += ` <text x="${renderW / 2}" y="${MARGIN.top}" text-anchor="middle" font-family="sans-serif" font-size="14" font-weight="bold" fill="#333">${escapeXml(title)}</text>\n`;
@@ -249,21 +249,21 @@ export function line(data, options) {
249
249
  d.datasets.forEach((ds, di) => {
250
250
  const points = ds.values
251
251
  .map((val, i) => {
252
- const x = MARGIN.left + i * (d.labels.length > 1 ? xStep : chartW / 2);
252
+ const x = xPos(i);
253
253
  const y = marginTop + toY(val, min, max, chartH);
254
254
  return `${x.toFixed(1)},${y.toFixed(1)}`;
255
255
  })
256
256
  .join(' ');
257
257
  svg += ` <polyline points="${points}" fill="none" stroke="${colors[di]}" stroke-width="2" stroke-linejoin="round"/>\n`;
258
258
  ds.values.forEach((val, i) => {
259
- const x = MARGIN.left + i * (d.labels.length > 1 ? xStep : chartW / 2);
259
+ const x = xPos(i);
260
260
  const y = marginTop + toY(val, min, max, chartH);
261
261
  svg += ` <circle cx="${x.toFixed(1)}" cy="${y.toFixed(1)}" r="3" fill="${colors[di]}"/>\n`;
262
262
  });
263
263
  });
264
264
  // X axis labels
265
265
  d.labels.forEach((label, i) => {
266
- const x = MARGIN.left + i * (d.labels.length > 1 ? xStep : chartW / 2);
266
+ const x = xPos(i);
267
267
  svg += ` <text x="${x.toFixed(1)}" y="${(marginTop + chartH + 20).toFixed(1)}" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#666">${escapeXml(label)}</text>\n`;
268
268
  });
269
269
  // Legend
@@ -279,7 +279,6 @@ export function line(data, options) {
279
279
  svg += '</svg>';
280
280
  return { contentType: 'image/svg+xml', body: svg };
281
281
  }
282
- // ─── Pie / Donut ───
283
282
  function pieArc(cx, cy, r, startAngle, endAngle, innerR = 0) {
284
283
  const start = { x: cx + r * Math.cos(startAngle), y: cy + r * Math.sin(startAngle) };
285
284
  const end = { x: cx + r * Math.cos(endAngle), y: cy + r * Math.sin(endAngle) };
@@ -336,6 +335,13 @@ function renderPieDonut(type, data, options, isDonut) {
336
335
  if (val === 0)
337
336
  return;
338
337
  const sweep = (val / total) * 2 * Math.PI;
338
+ if (sweep >= 2 * Math.PI - 1e-9) {
339
+ svg += ` <circle cx="${cx.toFixed(2)}" cy="${cy.toFixed(2)}" r="${r}" fill="${colors[i]}" stroke="${bg}" stroke-width="1.5"/>\n`;
340
+ if (innerR > 0)
341
+ svg += ` <circle cx="${cx.toFixed(2)}" cy="${cy.toFixed(2)}" r="${innerR}" fill="${bg}"/>\n`;
342
+ startAngle += sweep;
343
+ return;
344
+ }
339
345
  const endAngle = startAngle + sweep;
340
346
  const path = pieArc(cx, cy, r, startAngle, endAngle, innerR);
341
347
  svg += ` <path d="${path}" fill="${colors[i]}" stroke="${bg}" stroke-width="1.5"/>\n`;