qr-min 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.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # qr-gen
2
+
3
+ Minimal implementation to generate a QR code from a UTF-8 string.
4
+ This is all you need for 99.9% of applications.
5
+
6
+ Pure JavaScript. No dependencies.
7
+
8
+ If you need finer control over QR code generation,
9
+ please check https://github.com/nayuki/QR-Code-generator
@@ -0,0 +1,233 @@
1
+ (function(global, factory) {
2
+ /* istanbul ignore next */
3
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
4
+ module.exports = factory();
5
+ }
6
+ else if (typeof define === 'function' && define.amd) {
7
+ define('QR', [], factory);
8
+ }
9
+ else {
10
+ if (!global) global = window;
11
+ if (global.QR && global.QR.MIDI) return;
12
+ global.QR = factory();
13
+ }
14
+ })(this, function() {
15
+ var _crn = [
16
+ [1, 1, 1, 1, 1, 1, 1, 0], [1, 0, 0, 0, 0, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1, 0],
17
+ [1, 0, 1, 1, 1, 0, 1, 0], [1, 0, 0, 0, 0, 0, 1, 0], [1, 1, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0]
18
+ ];
19
+ var _eye = [[1, 1, 1, 1, 1], [1, 0, 0, 0, 1], [1, 0, 1, 0, 1], [1, 0, 0, 0, 1], [1, 1, 1, 1, 1]];
20
+ var _ccbl = [0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25];
21
+ var _ccsz = [0, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30];
22
+ var QR = function(s) {
23
+ s = new TextEncoder().encode(s);
24
+ var i, j, k, v;
25
+ for (v = 1; v <= 40; v++) if (s.length + (v < 10 ? 2 : 3) <= _len(v)) break;
26
+ if (v > 40) throw "Input string is too long!";
27
+ var b = [0x40];
28
+ if (v >= 10) {
29
+ b[0] += s.length >> 12;
30
+ b.push((s.length >> 4) & 255);
31
+ }
32
+ else b[0] += s.length >> 4;
33
+ b.push((s.length & 15) << 4);
34
+ for (i = 0; i < s.length; i++) {
35
+ b[b.length - 1] += (s[i] >> 4);
36
+ b.push((s[i] & 15) << 4);
37
+ }
38
+ for (i = 0; b.length < _len(v); i++) b.push((i & 1) ? 17 : 236);
39
+ var raw = _raw(v);
40
+ var nsb = _ccbl[v] - raw % _ccbl[v];
41
+ var sbl = Math.floor(raw / _ccbl[v]);
42
+ var rsd = _rsd(_ccsz[v]);
43
+ k = 0;
44
+ var bbb = [];
45
+ for (i = 0; i < nsb; i++) {
46
+ var dat = b.slice(k, k + sbl - _ccsz[v] + (i < sbl ? 0 : 1));
47
+ var ecc = _rcr(dat, rsd);
48
+ k += dat.length;
49
+ if (i < nsb) dat.push(0);
50
+ bbb.push(dat.concat(ecc));
51
+ }
52
+ b = [];
53
+ for (i = 0; i < bbb[0].length; i++) {
54
+ for (j = 0; j < bbb.length; j++) {
55
+ if (i != sbl - _ccsz[v] || j >= nsb) b.push(bbb[j][i]);
56
+ }
57
+ }
58
+ var d = _dots(v);
59
+ var r = _res(v);
60
+ _static(d, v);
61
+ var p = [d.length - 1, d.length - 1];
62
+ for (i = 0; i < b.length; i++) {
63
+ for (j = 7; j >= 0; j--) {
64
+ d[p[0]][p[1]] = (b[i] & (1 << j)) >> j;
65
+ for (_nxt(p, d.length); r[p[0]][p[1]]; _nxt(p, d.length)) ;
66
+ }
67
+ }
68
+ _format(d, 0, 0);
69
+ _mask(d, r, 0);
70
+ return d;
71
+ };
72
+ function _nxt(p, sz) {
73
+ var d = (p[1] > 5 ? p[1] - 1 : p[1]) % 4;
74
+ sz--;
75
+ if (!d) {
76
+ if (p[0] < sz) {
77
+ p[0]++; p[1]++;
78
+ }
79
+ else if (!p[1]) p[1] = sz;
80
+ else p[1]--;
81
+ }
82
+ else if (d == 2) {
83
+ if (p[0]) {
84
+ p[0]--; p[1]++;
85
+ }
86
+ else if (p[1] == 7) p[1] -= 2;
87
+ else p[1]--;
88
+ }
89
+ else p[1]--;
90
+ }
91
+ function _raw(v) {
92
+ var n, x = (16 * v + 128) * v + 64;
93
+ if (v > 1) {
94
+ n = Math.floor(v / 7) + 2;
95
+ x -= (25 * n - 10) * n - 55;
96
+ if (v >= 7) x -= 36;
97
+ }
98
+ return Math.floor(x / 8);
99
+ }
100
+ function _len(v) {
101
+ return _raw(v) - _ccbl[v] * _ccsz[v];
102
+ }
103
+ function _eyes(v) {
104
+ var e = [];
105
+ if (v < 2) return e;
106
+ e.push(6);
107
+ var n = Math.floor(v / 7) + 2;
108
+ var m = v * 4 + 10;
109
+ var t = Math.floor((v * 8 + n * 3 + 5) / (n * 4 - 4)) * 2;
110
+ for (var i = 0; i < n - 1; i++) {
111
+ e.splice(1, 0, m);
112
+ m -= t;
113
+ }
114
+ return e;
115
+ }
116
+ function _static(d, v) {
117
+ var i, j, k, m, sz = v * 4 + 17, e = _eyes(v);
118
+ for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) {
119
+ d[i][j] = _crn[i][j];
120
+ d[i][sz - j - 1] = _crn[i][j];
121
+ d[sz - i - 1][j] = _crn[i][j];
122
+ }
123
+ j = 1;
124
+ for (i = 8; i < sz - 8; i++) {
125
+ d[i][6] = j;
126
+ d[6][i] = j;
127
+ j = 1 - j;
128
+ }
129
+ for (k = 0; k < e.length; k++) for (m = 0; m < e.length; m++) {
130
+ if (!k && !m) continue;
131
+ if (!k && m == e.length - 1) continue;
132
+ if (!m && k == e.length - 1) continue;
133
+ for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) {
134
+ d[e[k] + i - 2][e[m] + j - 2] = _eye[i][j];
135
+ }
136
+ }
137
+ d[sz - 8][8] = 1;
138
+ }
139
+ function _res(v) {
140
+ var i, j, k, m, sz = v * 4 + 17, e = _eyes(v);
141
+ var r = _dots(v);
142
+ for (i = 0; i < 9; i++) {
143
+ for (j = 0; j < 9; j++) {
144
+ r[i][j] = 1;
145
+ if (j) {
146
+ r[i][sz - j] = 1;
147
+ r[sz - j][i] = 1;
148
+ }
149
+ }
150
+ }
151
+ for (i = 8; i < sz - 8; i++) {
152
+ r[i][6] = 1;
153
+ r[6][i] = 1;
154
+ }
155
+ for (k = 0; k < e.length; k++) for (m = 0; m < e.length; m++) {
156
+ for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) {
157
+ if (!k && !m) continue;
158
+ if (!k && m == e.length - 1) continue;
159
+ if (!m && k == e.length - 1) continue;
160
+ r[e[k] + i - 2][e[m] + j - 2] = 1;
161
+ }
162
+ }
163
+ return r;
164
+ }
165
+ function _format(d, c, m) {
166
+ var i, r, x = [1, 0, 3, 2][c] << 3 | m;
167
+ r = x;
168
+ for (i = 0; i < 10; i++) r = (r << 1) ^ ((r >>> 9) * 0x537);
169
+ x = (x << 10 | r) ^ 0x5412;
170
+ for (i = 0; i < 6; i++) d[i][8] = (x & (1 << i)) >> i;
171
+ d[7][8] = (x & (1 << 6)) >> 6;
172
+ d[8][8] = (x & (1 << 7)) >> 7;
173
+ d[8][7] = (x & (1 << 8)) >> 8;
174
+ for (i = 9; i < 15; i++) d[8][14 - i] = (x & (1 << i)) >> i;
175
+ for (i = 0; i < 8; i++) d[8][d.length - 1 - i] = (x & (1 << i)) >> i;
176
+ for (i = 8; i < 15; i++) d[d.length - 15 + i][8] = (x & (1 << i)) >> i;
177
+ }
178
+ function _mask(d, r, m) {
179
+ var i, j, k;
180
+ for (i = 0; i < d.length; i++) for (j = 0; j < d.length; j++) {
181
+ if (r[i][j]) continue;
182
+ k = !m ? k = (i + j) % 2 :
183
+ m == 1 ? j % 2 :
184
+ m == 2 ? i % 3 :
185
+ m == 3 ? (i + j) % 3 :
186
+ m == 4 ? (Math.floor(i / 3) + Math.floor(j / 2)) % 2 :
187
+ m == 5 ? i * j % 2 + i * j % 3 :
188
+ m == 6 ? (i * j % 2 + i * j % 3) % 2 : ((i + j) % 2 + i * j % 3) % 2;
189
+ if (!k) d[i][j] = 1 - d[i][j];
190
+ }
191
+ }
192
+ function _dots(v) {
193
+ var i, d = [], sz = v * 4 + 17;
194
+ for (i = 0; i < sz; i++) d.push(Array(sz).fill(0));
195
+ return d;
196
+ }
197
+ function _dup(x) {
198
+ var i, d = [];
199
+ for (i = 0; i < x.length; i++) d.push(x[i].slice());
200
+ return d;
201
+ }
202
+ function _rsd(d) {
203
+ var i, j, r = 1, a = Array(d - 1).fill(0);
204
+ a.push(1);
205
+ for (i = 0; i < d; i++) {
206
+ for (j = 0; j < a.length; j++) {
207
+ a[j] = _rsm(a[j], r);
208
+ if (j + 1 < a.length)
209
+ a[j] ^= a[j + 1];
210
+ }
211
+ r = _rsm(r, 0x02);
212
+ }
213
+ return a;
214
+ }
215
+ function _rsm(x, y) {
216
+ var i, z = 0;
217
+ for (i = 7; i >= 0; i--) {
218
+ z = (z << 1) ^ ((z >>> 7) * 0x11D);
219
+ z ^= ((y >>> i) & 1) * x;
220
+ }
221
+ return z;
222
+ }
223
+ function _rcr(x, d) {
224
+ var i, j, f, a = Array(d.length).fill(0);
225
+ for (i = 0; i < x.length; i++) {
226
+ f = x[i] ^ a.shift();
227
+ a.push(0);
228
+ for (j = 0; j < d.length; j++) a[j] ^= _rsm(d[j], f);
229
+ }
230
+ return a;
231
+ }
232
+ return QR;
233
+ });
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "qr-min",
3
+ "version": "0.0.0",
4
+ "description": "coming soon...",
5
+ "main": "javascript/qr-gen.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [
10
+ "qr",
11
+ "qr-code"
12
+ ],
13
+ "author": "jazz-soft (https://jazz-soft.net/)",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/jazz-soft/qr-gen.git"
17
+ },
18
+ "homepage": "https://github.com/jazz-soft/qr-gen",
19
+ "bugs": {
20
+ "url": "https://github.com/jazz-soft/qr-gen/issues"
21
+ },
22
+ "license": "MIT"
23
+ }