qreator 9.0.6

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 (80) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +92 -0
  3. package/lib/browser/encode.d.ts +2 -0
  4. package/lib/browser/errorcode.d.ts +1 -0
  5. package/lib/browser/matrix.d.ts +9 -0
  6. package/lib/browser/pdf.d.ts +2 -0
  7. package/lib/browser/pdf.umd.js +26816 -0
  8. package/lib/browser/pdf.umd.js.map +1 -0
  9. package/lib/browser/png.d.ts +6 -0
  10. package/lib/browser/png.umd.js +1540 -0
  11. package/lib/browser/png.umd.js.map +1 -0
  12. package/lib/browser/png_browser.d.ts +5 -0
  13. package/lib/browser/qr-base.d.ts +4 -0
  14. package/lib/browser/qr.d.ts +2 -0
  15. package/lib/browser/svg.d.ts +7 -0
  16. package/lib/browser/svg.umd.js +1536 -0
  17. package/lib/browser/svg.umd.js.map +1 -0
  18. package/lib/browser/tests/_common.d.ts +4 -0
  19. package/lib/browser/tests/browser.test.d.ts +1 -0
  20. package/lib/browser/tests/test.d.ts +1 -0
  21. package/lib/browser/typing/types.d.ts +28 -0
  22. package/lib/browser/utils.d.ts +17 -0
  23. package/lib/encode.d.ts +2 -0
  24. package/lib/encode.js +137 -0
  25. package/lib/encode.js.map +1 -0
  26. package/lib/errorcode.d.ts +1 -0
  27. package/lib/errorcode.js +62 -0
  28. package/lib/errorcode.js.map +1 -0
  29. package/lib/matrix.d.ts +9 -0
  30. package/lib/matrix.js +347 -0
  31. package/lib/matrix.js.map +1 -0
  32. package/lib/pdf.d.ts +2 -0
  33. package/lib/pdf.js +64 -0
  34. package/lib/pdf.js.map +1 -0
  35. package/lib/png.d.ts +6 -0
  36. package/lib/png.js +30 -0
  37. package/lib/png.js.map +1 -0
  38. package/lib/png_browser.d.ts +5 -0
  39. package/lib/png_browser.js +53 -0
  40. package/lib/png_browser.js.map +1 -0
  41. package/lib/qr-base.d.ts +4 -0
  42. package/lib/qr-base.js +151 -0
  43. package/lib/qr-base.js.map +1 -0
  44. package/lib/qr.d.ts +2 -0
  45. package/lib/qr.js +2 -0
  46. package/lib/qr.js.map +1 -0
  47. package/lib/svg.d.ts +7 -0
  48. package/lib/svg.js +49 -0
  49. package/lib/svg.js.map +1 -0
  50. package/lib/tests/_common.d.ts +4 -0
  51. package/lib/tests/_common.js +36 -0
  52. package/lib/tests/_common.js.map +1 -0
  53. package/lib/tests/browser.test.d.ts +1 -0
  54. package/lib/tests/browser.test.js +193 -0
  55. package/lib/tests/browser.test.js.map +1 -0
  56. package/lib/tests/test.d.ts +1 -0
  57. package/lib/tests/test.js +238 -0
  58. package/lib/tests/test.js.map +1 -0
  59. package/lib/typing/types.d.ts +28 -0
  60. package/lib/typing/types.js +2 -0
  61. package/lib/typing/types.js.map +1 -0
  62. package/lib/utils.d.ts +17 -0
  63. package/lib/utils.js +68 -0
  64. package/lib/utils.js.map +1 -0
  65. package/package.json +105 -0
  66. package/src/encode.ts +176 -0
  67. package/src/errorcode.ts +75 -0
  68. package/src/matrix.ts +393 -0
  69. package/src/pdf.ts +80 -0
  70. package/src/png.ts +42 -0
  71. package/src/png_browser.ts +73 -0
  72. package/src/qr-base.ts +180 -0
  73. package/src/qr.ts +2 -0
  74. package/src/svg.ts +89 -0
  75. package/src/tests/_common.ts +40 -0
  76. package/src/tests/browser.test.ts +209 -0
  77. package/src/tests/test.ts +250 -0
  78. package/src/typing/index.d.ts +5 -0
  79. package/src/typing/types.ts +99 -0
  80. package/src/utils.ts +86 -0
package/lib/qr-base.js ADDED
@@ -0,0 +1,151 @@
1
+ import { encode } from "./encode.js";
2
+ import { calculateEC } from "./errorcode.js";
3
+ import { getMatrix } from "./matrix.js";
4
+ const EC_LEVELS = ["L", "M", "Q", "H"];
5
+ export function getTemplate(message, ec_level) {
6
+ let i = 1;
7
+ let len;
8
+ if (message.data1) {
9
+ len = Math.ceil(message.data1.length / 8);
10
+ }
11
+ else {
12
+ i = 10;
13
+ }
14
+ for (; i < 10; i++) {
15
+ let version = mappedVersions[i][ec_level];
16
+ if (version.data_len >= len) {
17
+ return deepCopy(version);
18
+ }
19
+ }
20
+ if (message.data10) {
21
+ len = Math.ceil(message.data10.length / 8);
22
+ }
23
+ else {
24
+ i = 27;
25
+ }
26
+ for (; i < 27; i++) {
27
+ let version = mappedVersions[i][ec_level];
28
+ if (version.data_len >= len) {
29
+ return deepCopy(version);
30
+ }
31
+ }
32
+ len = Math.ceil(message.data27.length / 8);
33
+ for (; i < 41; i++) {
34
+ let version = mappedVersions[i][ec_level];
35
+ if (version.data_len >= len) {
36
+ return deepCopy(version);
37
+ }
38
+ }
39
+ throw new Error("Too much data");
40
+ }
41
+ export function fillTemplate(message, template) {
42
+ const blocks = new Uint8Array(template.data_len);
43
+ let messageUpdated;
44
+ if (template.version < 10) {
45
+ messageUpdated = message.data1;
46
+ }
47
+ else if (template.version < 27) {
48
+ messageUpdated = message.data10;
49
+ }
50
+ else {
51
+ messageUpdated = message.data27;
52
+ }
53
+ const len = messageUpdated.length;
54
+ for (let i = 0; i < len; i += 8) {
55
+ let b = 0;
56
+ for (let j = 0; j < 8; j++) {
57
+ b = (b << 1) | (messageUpdated[i + j] ? 1 : 0);
58
+ }
59
+ blocks[i / 8] = b;
60
+ }
61
+ let pad = 236;
62
+ for (let i = Math.ceil((len + 4) / 8); i < blocks.length; i++) {
63
+ blocks[i] = pad;
64
+ pad = pad == 236 ? 17 : 236;
65
+ }
66
+ let offset = 0;
67
+ template.blocks = template.blocks.map((n) => {
68
+ const b = blocks.slice(offset, offset + n);
69
+ offset += n;
70
+ template.ec.push(calculateEC(b, template.ec_len));
71
+ return b;
72
+ });
73
+ return template;
74
+ }
75
+ export function QR(text, ec_level, parse_url) {
76
+ ec_level = EC_LEVELS.includes(ec_level) ? ec_level : "M";
77
+ const message = encode(text, parse_url);
78
+ const data = fillTemplate(message, getTemplate(message, ec_level));
79
+ return getMatrix(data);
80
+ }
81
+ const deepCopy = typeof structuredClone !== "undefined" ? structuredClone : ((obj) => JSON.parse(JSON.stringify(obj)));
82
+ const versions = [
83
+ [],
84
+ [26, 7, 1, 10, 1, 13, 1, 17, 1],
85
+ [44, 10, 1, 16, 1, 22, 1, 28, 1],
86
+ [70, 15, 1, 26, 1, 36, 2, 44, 2],
87
+ [100, 20, 1, 36, 2, 52, 2, 64, 4],
88
+ [134, 26, 1, 48, 2, 72, 4, 88, 4],
89
+ [172, 36, 2, 64, 4, 96, 4, 112, 4],
90
+ [196, 40, 2, 72, 4, 108, 6, 130, 5],
91
+ [242, 48, 2, 88, 4, 132, 6, 156, 6],
92
+ [292, 60, 2, 110, 5, 160, 8, 192, 8],
93
+ [346, 72, 4, 130, 5, 192, 8, 224, 8],
94
+ [404, 80, 4, 150, 5, 224, 8, 264, 11],
95
+ [466, 96, 4, 176, 8, 260, 10, 308, 11],
96
+ [532, 104, 4, 198, 9, 288, 12, 352, 16],
97
+ [581, 120, 4, 216, 9, 320, 16, 384, 16],
98
+ [655, 132, 6, 240, 10, 360, 12, 432, 18],
99
+ [733, 144, 6, 280, 10, 408, 17, 480, 16],
100
+ [815, 168, 6, 308, 11, 448, 16, 532, 19],
101
+ [901, 180, 6, 338, 13, 504, 18, 588, 21],
102
+ [991, 196, 7, 364, 14, 546, 21, 650, 25],
103
+ [1085, 224, 8, 416, 16, 600, 20, 700, 25],
104
+ [1156, 224, 8, 442, 17, 644, 23, 750, 25],
105
+ [1258, 252, 9, 476, 17, 690, 23, 816, 34],
106
+ [1364, 270, 9, 504, 18, 750, 25, 900, 30],
107
+ [1474, 300, 10, 560, 20, 810, 27, 960, 32],
108
+ [1588, 312, 12, 588, 21, 870, 29, 1050, 35],
109
+ [1706, 336, 12, 644, 23, 952, 34, 1110, 37],
110
+ [1828, 360, 12, 700, 25, 1020, 34, 1200, 40],
111
+ [1921, 390, 13, 728, 26, 1050, 35, 1260, 42],
112
+ [2051, 420, 14, 784, 28, 1140, 38, 1350, 45],
113
+ [2185, 450, 15, 812, 29, 1200, 40, 1440, 48],
114
+ [2323, 480, 16, 868, 31, 1290, 43, 1530, 51],
115
+ [2465, 510, 17, 924, 33, 1350, 45, 1620, 54],
116
+ [2611, 540, 18, 980, 35, 1440, 48, 1710, 57],
117
+ [2761, 570, 19, 1036, 37, 1530, 51, 1800, 60],
118
+ [2876, 570, 19, 1064, 38, 1590, 53, 1890, 63],
119
+ [3034, 600, 20, 1120, 40, 1680, 56, 1980, 66],
120
+ [3196, 630, 21, 1204, 43, 1770, 59, 2100, 70],
121
+ [3362, 660, 22, 1260, 45, 1860, 62, 2220, 74],
122
+ [3532, 720, 24, 1316, 47, 1950, 65, 2310, 77],
123
+ [3706, 750, 25, 1372, 49, 2040, 68, 2430, 81],
124
+ ];
125
+ const mappedVersions = versions.map((el, index) => {
126
+ if (!index) {
127
+ return Object.create(null);
128
+ }
129
+ const res = Object.create(null);
130
+ for (let i = 1; i < 8; i += 2) {
131
+ const length = el[0] - el[i];
132
+ const num_template = el[i + 1];
133
+ const ec_level = EC_LEVELS[(i / 2) | 0];
134
+ const level = {
135
+ version: index,
136
+ ec_level,
137
+ data_len: length,
138
+ ec_len: el[i] / num_template,
139
+ blocks: [],
140
+ ec: [],
141
+ };
142
+ for (let k = num_template, n = length; k > 0; k--) {
143
+ const block = (n / k) | 0;
144
+ level.blocks.push(block);
145
+ n -= block;
146
+ }
147
+ res[ec_level] = level;
148
+ }
149
+ return res;
150
+ });
151
+ //# sourceMappingURL=qr-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-base.js","sourceRoot":"","sources":["../src/qr-base.ts"],"names":[],"mappings":"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EAAE,CAAC;IACvC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACzC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACzC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACzC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IACzC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IAC1C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7C,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAa,EAAE,EAAE;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAE7B,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAI,EAAe,CAAC,CAAC,CAAC,GAAI,EAAe,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAI,EAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAgD;YACvD,OAAO,EAAE,KAAK;YACd,QAAQ;YACR,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAG,EAAe,CAAC,CAAC,CAAC,GAAG,YAAY;YAC1C,MAAM,EAAE,EAAE;YACV,EAAE,EAAE,EAAE;SACT,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC,IAAI,KAAK,CAAC;QACf,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,CAAC"}
package/lib/qr.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { ImageOptions } from "./typing/types";
2
+ export type QRImageOptions = Omit<ImageOptions, "type"> & Required<Pick<ImageOptions, "type">>;
package/lib/qr.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=qr.js.map
package/lib/qr.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":""}
package/lib/svg.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { ImageOptions, Matrix } from "./typing/types";
2
+ export declare function getSVG(text: string, inOptions?: ImageOptions): Promise<Uint8Array>;
3
+ export declare function createSVG({ matrix, margin, size, logo, logoWidth, logoHeight, color, bgColor, imageWidth, imageHeight, borderRadius, }: ImageOptions & {
4
+ matrix: Matrix;
5
+ imageWidth?: number;
6
+ imageHeight?: number;
7
+ }): Promise<Uint8Array>;
package/lib/svg.js ADDED
@@ -0,0 +1,49 @@
1
+ import { QR } from "./qr-base.js";
2
+ import { getOptions, colorToHex, getSVGPath } from "./utils.js";
3
+ import { Base64 } from 'js-base64';
4
+ export async function getSVG(text, inOptions = {}) {
5
+ const options = getOptions({ ...inOptions, type: "svg" });
6
+ const matrix = QR(text, options.ec_level, options.parse_url);
7
+ return createSVG({ matrix, ...options });
8
+ }
9
+ const te = new TextEncoder();
10
+ export async function createSVG({ matrix, margin, size, logo, logoWidth, logoHeight, color, bgColor, imageWidth, imageHeight, borderRadius, }) {
11
+ const actualSize = size || 9;
12
+ const X = matrix.length + 2 * margin;
13
+ const XY = X * (actualSize || 1);
14
+ const imageWidthStr = imageWidth ? ` width="${imageWidth}"` : "";
15
+ const imageHeightStr = imageHeight ? `height="${imageWidth}" ` : "";
16
+ const xmlTag = `<?xml version="1.0" encoding="utf-8"?>`;
17
+ const svgOpeningTag = `<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"${imageWidthStr} ${imageHeightStr}viewBox="0 0 ${XY} ${XY}">`;
18
+ const svgBody = getSVGBody(matrix, {
19
+ color,
20
+ bgColor,
21
+ size: XY,
22
+ margin,
23
+ blockSize: actualSize,
24
+ borderRadius,
25
+ });
26
+ const svgEndTag = "</svg>";
27
+ const logoImage = logo ? getLogoImage(logo, XY, logoWidth, logoHeight) : "";
28
+ return te.encode(xmlTag + svgOpeningTag + svgBody + logoImage + svgEndTag);
29
+ }
30
+ function getSVGBody(matrix, options) {
31
+ const path = getSVGPath(matrix, options.blockSize, options.margin * options.blockSize, options.borderRadius);
32
+ let svgBody = `<rect width="${options.size}" height="${options.size}" ` +
33
+ `fill="${colorToHex(options.bgColor)}"></rect>`;
34
+ svgBody += '<path shape-rendering="geometricPrecision" d="' + path + '" fill="' + colorToHex(options.color) + '"/>';
35
+ return svgBody;
36
+ }
37
+ function getLogoImage(logo, XY, logoWidth, logoHeight) {
38
+ const imageBase64 = `data:image/png;base64,${typeof Buffer !== "undefined" && Buffer.isBuffer(logo)
39
+ ? logo.toString("base64")
40
+ : Base64.fromUint8Array(new Uint8Array(logo))}`;
41
+ return (`<image ` +
42
+ `width="${(logoWidth / 100) * XY}" ` +
43
+ `height="${(logoHeight / 100) * XY}" ` +
44
+ `xlink:href="${imageBase64}" ` +
45
+ `x="${XY / 2 - ((logoWidth / 100) * XY) / 2}" ` +
46
+ `y="${XY / 2 - ((logoHeight / 100) * XY) / 2}">` +
47
+ `</image>`);
48
+ }
49
+ //# sourceMappingURL=svg.js.map
package/lib/svg.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ExecutionContext } from "ava";
2
+ export declare const goldenDir: string;
3
+ export declare const generatedImageDir: string;
4
+ export declare const assertEqual: (t: ExecutionContext<unknown>, filename: string) => Promise<void>;
@@ -0,0 +1,36 @@
1
+ import looksSame from "looks-same";
2
+ import { readFile } from "node:fs/promises";
3
+ import { dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import * as diff from "diff";
6
+ import XMLFormatter from "xml-formatter";
7
+ import chalk from "chalk";
8
+ chalk.level = 3;
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+ export const goldenDir = `${__dirname}/../../test_data/golden`;
12
+ export const generatedImageDir = `${__dirname}/../../test_data/generated`;
13
+ export const assertEqual = async (t, filename) => {
14
+ if (filename.endsWith(".png")) {
15
+ const lsRes = await looksSame(`${generatedImageDir}/${filename}`, `${goldenDir}/${filename}`, { strict: true });
16
+ t.assert(lsRes.equal, `Images are different: ${filename}`);
17
+ }
18
+ else if (!filename.endsWith("pdf")) {
19
+ const f1 = (await readFile(`${generatedImageDir}/${filename}`)).toString();
20
+ const f2 = (await readFile(`${goldenDir}/${filename}`)).toString();
21
+ if (f1 !== f2) {
22
+ for (const el of diff.diffLines(XMLFormatter(f1), XMLFormatter(f2), { newlineIsToken: true })) {
23
+ console.log(el.added ? chalk.bold.green(el.value) : chalk.bold.red(el.value));
24
+ }
25
+ ;
26
+ t.fail(`Files are different: ${generatedImageDir}/${filename} and ${goldenDir}/${filename}`);
27
+ }
28
+ else {
29
+ t.pass();
30
+ }
31
+ }
32
+ else {
33
+ t.pass();
34
+ }
35
+ };
36
+ //# sourceMappingURL=_common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_common.js","sourceRoot":"","sources":["../../src/tests/_common.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAEhB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,SAAS,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,SAAS,4BAA4B,CAAC;AAE1E,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,CAA4B,EAAE,QAAgB,EAAE,EAAE;IAChF,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,SAAS,CACzB,GAAG,iBAAiB,IAAI,QAAQ,EAAE,EAClC,GAAG,SAAS,IAAI,QAAQ,EAAE,EAC1B,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAE/D,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3E,MAAM,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACZ,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,CAAC;YAAA,CAAC;YACF,CAAC,CAAC,IAAI,CAAC,wBAAwB,iBAAiB,IAAI,QAAQ,QAAQ,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACJ,CAAC,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,193 @@
1
+ import test from "ava";
2
+ import { readFileSync } from "fs";
3
+ import { writeFile } from "node:fs/promises";
4
+ import { JSDOM } from 'jsdom';
5
+ import { assertEqual, generatedImageDir, goldenDir } from "./_common.js";
6
+ import { Path2D } from "canvas";
7
+ let functions;
8
+ const { window } = new JSDOM(``, { runScripts: "dangerously", resources: "usable" });
9
+ test.before(async () => {
10
+ window.globalThis.TextEncoder = TextEncoder;
11
+ window.globalThis.TextDecoder = TextDecoder;
12
+ window.globalThis.Path2D = Path2D;
13
+ for (const scriptType of ['png', 'svg', 'pdf']) {
14
+ const scriptEl = window.document.createElement('script');
15
+ scriptEl.textContent = readFileSync(`./lib/browser/${scriptType}.umd.js`).toString();
16
+ scriptEl.type = 'text/javascript';
17
+ window.document.body.appendChild(scriptEl);
18
+ }
19
+ functions = {
20
+ "png": window.globalThis.pngQrCode.getPNG,
21
+ "svg": window.globalThis.svgQrCode.getSVG,
22
+ "pdf": window.globalThis.pdfQrCode.getPDF,
23
+ };
24
+ });
25
+ const text = "I \u2764\uFE0F QR code!";
26
+ const defaultParams = {
27
+ ec_level: "Q",
28
+ margin: 1,
29
+ parse_url: true,
30
+ };
31
+ [
32
+ {
33
+ name: "PNG",
34
+ type: "png",
35
+ filename: "qr.png",
36
+ },
37
+ {
38
+ name: "PNG with border radius",
39
+ type: "png",
40
+ filename: "qr_with_border_radius.png",
41
+ params: {
42
+ borderRadius: 3,
43
+ }
44
+ },
45
+ {
46
+ name: "PNG with colors",
47
+ type: "png",
48
+ filename: "qr_with_colors.png",
49
+ params: {
50
+ color: 0x0000a0ff,
51
+ bgColor: 0xffa0ffff,
52
+ },
53
+ },
54
+ {
55
+ name: "PNG with colors (hex)",
56
+ type: "png",
57
+ filename: "qr_with_colors.png",
58
+ params: {
59
+ color: '#0000a0',
60
+ bgColor: '#ffa0ff',
61
+ },
62
+ },
63
+ {
64
+ name: "PNG with logo (PNG)",
65
+ type: "png",
66
+ filename: "qr_with_logo.png",
67
+ params: { logo: readFileSync(`${goldenDir}/logo.png`).buffer },
68
+ },
69
+ {
70
+ name: "PNG with logo (JPG)",
71
+ type: "png",
72
+ filename: "qr_with_logo_jpg.png",
73
+ params: { logo: readFileSync(`${goldenDir}/logo.jpg`).buffer },
74
+ },
75
+ {
76
+ name: "PNG with colors (rgba)",
77
+ type: "png",
78
+ filename: "qr_with_colors_rgba.png",
79
+ params: {
80
+ color: 'rgba(255, 0, 0, 0.5)',
81
+ bgColor: 'rgba(255, 255, 255, 0.1)',
82
+ },
83
+ },
84
+ {
85
+ name: "SVG",
86
+ type: "svg",
87
+ filename: "qr.svg",
88
+ },
89
+ {
90
+ name: "SVG with border radius",
91
+ type: "svg",
92
+ filename: "qr_with_border_radius.svg",
93
+ params: {
94
+ borderRadius: 2,
95
+ }
96
+ },
97
+ {
98
+ name: "SVG with EC level",
99
+ type: "svg",
100
+ filename: "qr_with_ec_level.svg",
101
+ params: {
102
+ ec_level: "H",
103
+ },
104
+ },
105
+ {
106
+ name: "SVG with size",
107
+ type: "svg",
108
+ filename: "qr_with_size.svg",
109
+ params: {
110
+ size: 6,
111
+ },
112
+ },
113
+ {
114
+ name: "SVG with colors (hex)",
115
+ type: "svg",
116
+ filename: "qr_with_colors_hex.svg",
117
+ params: {
118
+ color: '#ff0000',
119
+ bgColor: '#00ff00',
120
+ },
121
+ },
122
+ {
123
+ name: "SVG with colors (number)",
124
+ type: "svg",
125
+ filename: "qr_with_colors.svg",
126
+ params: {
127
+ color: 0xff0000ff,
128
+ bgColor: 0x00ff00ff,
129
+ },
130
+ },
131
+ {
132
+ name: "SVG with logo as arraybuffer (PNG)",
133
+ type: "svg",
134
+ filename: "qr_with_logo_as_arraybuffer.svg",
135
+ params: {
136
+ logo: readFileSync(`${goldenDir}/logo.png`).buffer,
137
+ },
138
+ },
139
+ {
140
+ name: "SVG with logo as arraybuffer (JPG)",
141
+ type: "svg",
142
+ filename: "qr_with_logo_as_arraybuffer_jpg.svg",
143
+ params: {
144
+ logo: readFileSync(`${goldenDir}/logo.jpg`).buffer,
145
+ },
146
+ },
147
+ {
148
+ name: "PDF",
149
+ type: "pdf",
150
+ filename: "qr.pdf",
151
+ },
152
+ {
153
+ name: "PDF with border radius",
154
+ type: "pdf",
155
+ filename: "qr_with_border_radius.pdf",
156
+ params: {
157
+ borderRadius: 2,
158
+ }
159
+ },
160
+ {
161
+ name: "PDF with colors",
162
+ type: "pdf",
163
+ filename: "qr_with_colors.pdf",
164
+ params: { color: 0xff0000ff, bgColor: 0x00ff00ff },
165
+ },
166
+ {
167
+ name: "PDF with arraybuffer",
168
+ type: "pdf",
169
+ filename: "qr_logo_arraybuffer.pdf",
170
+ params: {
171
+ logo: new window.Uint8Array(readFileSync(`${goldenDir}/logo.png`).buffer),
172
+ },
173
+ },
174
+ {
175
+ name: "PDF with arraybuffer (JPG)",
176
+ type: "pdf",
177
+ filename: "qr_logo_arraybuffer.pdf",
178
+ params: {
179
+ logo: new window.Uint8Array(readFileSync(`${goldenDir}/logo.jpg`).buffer),
180
+ },
181
+ },
182
+ ].forEach((testData) => {
183
+ test(`browser > ${testData.name}`, async (t) => {
184
+ const image = await functions[testData.type](text, {
185
+ type: testData.type,
186
+ ...defaultParams,
187
+ ...testData.params,
188
+ });
189
+ await writeFile(`${generatedImageDir}/browser_${testData.filename}`, new Uint8Array(image));
190
+ await assertEqual(t, 'browser_' + testData.filename);
191
+ });
192
+ });
193
+ //# sourceMappingURL=browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.test.js","sourceRoot":"","sources":["../../src/tests/browser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};