qrcode-matrix 0.2.1 → 1.0.0-beta.3

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 +42 -36
  2. package/dist/qrcodeMatrix.umd.js +1302 -1299
  3. package/dist/qrcodeMatrix.umd.min.js +6 -0
  4. package/lib/encode/sjis.d.ts +2 -2
  5. package/lib/encode/sjisData.d.ts +2 -2
  6. package/lib/encode/utf-8.d.ts +2 -2
  7. package/lib/index.d.ts +13 -5
  8. package/lib/lib/BitBuffer.d.ts +9 -9
  9. package/lib/lib/QRMatrix.d.ts +10 -10
  10. package/lib/lib/bch-encode.d.ts +31 -31
  11. package/lib/lib/draw.d.ts +4 -4
  12. package/lib/modes/Alphanumeric.d.ts +3 -3
  13. package/lib/modes/Byte.d.ts +3 -3
  14. package/lib/modes/Kanji.d.ts +3 -3
  15. package/lib/modes/Numeric.d.ts +3 -3
  16. package/lib/modes/mode.d.ts +6 -6
  17. package/lib/qrcode.d.ts +19 -19
  18. package/{dist → lib}/qrcodeMatrix.es.js +1299 -1298
  19. package/{dist → lib}/qrcodeMatrix.js +1305 -1296
  20. package/lib/utils.d.ts +26 -26
  21. package/package.json +8 -8
  22. package/LICENSE +0 -21
  23. package/lib/encode/sjis.js +0 -113
  24. package/lib/encode/sjisData.js +0 -4
  25. package/lib/encode/utf-8.js +0 -23
  26. package/lib/index.js +0 -37
  27. package/lib/lib/BitBuffer.js +0 -39
  28. package/lib/lib/QRMatrix.js +0 -31
  29. package/lib/lib/bch-encode.js +0 -466
  30. package/lib/lib/draw.js +0 -49
  31. package/lib/modes/Alphanumeric.js +0 -49
  32. package/lib/modes/Byte.js +0 -25
  33. package/lib/modes/Kanji.js +0 -46
  34. package/lib/modes/Numeric.js +0 -43
  35. package/lib/modes/mode.js +0 -2
  36. package/lib/qrcode.js +0 -124
  37. package/lib/utils.js +0 -379
  38. package/src/.DS_Store +0 -0
  39. package/src/encode/.DS_Store +0 -0
  40. package/src/encode/sjis.ts +0 -121
  41. package/src/encode/sjisData.ts +0 -2
  42. package/src/encode/utf-8.ts +0 -30
  43. package/src/index.ts +0 -33
  44. package/src/lib/BitBuffer.ts +0 -70
  45. package/src/lib/QRMatrix.ts +0 -39
  46. package/src/lib/bch-encode.ts +0 -639
  47. package/src/lib/draw.ts +0 -77
  48. package/src/modes/Alphanumeric.ts +0 -55
  49. package/src/modes/Byte.ts +0 -30
  50. package/src/modes/Kanji.ts +0 -56
  51. package/src/modes/Numeric.ts +0 -47
  52. package/src/modes/mode.ts +0 -6
  53. package/src/qrcode.ts +0 -237
  54. package/src/utils.ts +0 -459
@@ -1,55 +0,0 @@
1
- import { mode } from './mode';
2
- import BitBuffer from '../lib/BitBuffer';
3
-
4
- const QR_MODE = 1 << 1;
5
- const [Code0, Code9, CodeA, CodeZ] = ['0', '9', 'A', 'Z'].map(v => v.charCodeAt(0));
6
-
7
- const qrAlphaNum = (function() {
8
- var getCode = function(s) {
9
- var c = s.charCodeAt(0);
10
- // 0 - 9
11
- if (Code0 <= c && c <= Code9) {
12
- return c - Code0;
13
- // A - Z
14
- } else if (CodeA <= c && c <= CodeZ) {
15
- return c - CodeA + 10;
16
- } else {
17
- var other = [' ', '$', '%', '*', '+', '-', '.', '/', ':'];
18
- var i = other.indexOf(s);
19
- if (~i) {
20
- return i + 36;
21
- } else {
22
- throw 'illegal char :' + s;
23
- }
24
- }
25
- };
26
-
27
- return function(data): mode {
28
- var _data = data;
29
- var _this = {
30
- getMode: function() {
31
- return QR_MODE;
32
- },
33
-
34
- getLength: function() {
35
- return _data.length;
36
- },
37
-
38
- write: function(buffer: BitBuffer) {
39
- var s = _data;
40
- var i = 0;
41
- while (i + 1 < s.length) {
42
- buffer.put(getCode(s.charAt(i)) * 45 + getCode(s.charAt(i + 1)), 11);
43
- i += 2;
44
- }
45
- if (i < s.length) {
46
- buffer.put(getCode(s.charAt(i)), 6);
47
- }
48
- }
49
- };
50
- return _this;
51
- };
52
- })();
53
-
54
- // module.exports = qrAlphaNum;
55
- export default qrAlphaNum;
package/src/modes/Byte.ts DELETED
@@ -1,30 +0,0 @@
1
- import { mode } from './mode';
2
- import BitBuffer from '../lib/BitBuffer';
3
- const QR_MODE = 1 << 2;
4
- const qr8BitByte = function(stringToBytes:(str:string)=>number[]) {
5
- // stringToBytes = typeof stringToBytes == 'function' ? stringToBytes : utf8;
6
- return function(data:string): mode {
7
- var _data = data + '';
8
- var _bytes = _data == data ? stringToBytes(_data) : data;
9
- _bytes = _bytes instanceof Array ? _bytes : [];
10
- var _this = {
11
- getMode: function() {
12
- return QR_MODE;
13
- },
14
-
15
- getLength: function() {
16
- return _bytes.length;
17
- },
18
-
19
- write: function(buffer:BitBuffer) {
20
- for (var i = 0; i < _bytes.length; i++) {
21
- buffer.put(_bytes[i], 8);
22
- }
23
- }
24
- };
25
-
26
- return _this;
27
- };
28
- };
29
-
30
- export default qr8BitByte;
@@ -1,56 +0,0 @@
1
- import { mode } from "./mode";
2
- import BitBuffer from "../lib/BitBuffer";
3
- import sjis from '../encode/sjis'
4
-
5
- const QR_MODE = 1 << 3;
6
- const qrKanji = function (stringToBytes?) {
7
- stringToBytes = typeof stringToBytes == 'function' ? stringToBytes : sjis;
8
- // !function (c, code) {
9
- // // self test for sjis support.
10
- // var test = stringToBytes(c);
11
- // if (test.length != 2 || ((test[0] << 8) | test[1]) != code) {
12
- // throw 'sjis not supported.';
13
- // }
14
- // }('\u53cb', 0x9746);
15
- return function (data):mode {
16
- var _data = data;
17
- var _bytes = stringToBytes(data);
18
- var _this = {
19
- getMode: function () {
20
- return QR_MODE;
21
- },
22
-
23
- getLength: function () {
24
- return ~~(_bytes.length / 2);
25
- },
26
-
27
- write: function (buffer:BitBuffer) {
28
- var data = _bytes;
29
- var i = 0;
30
-
31
- while (i + 1 < data.length) {
32
- var c = ((0xff & data[i]) << 8) | (0xff & data[i + 1]);
33
- if (0x8140 <= c && c <= 0x9FFC) {
34
- c -= 0x8140;
35
- } else if (0xE040 <= c && c <= 0xEBBF) {
36
- c -= 0xC140;
37
- } else {
38
- throw 'illegal char at ' + (i + 1) + '/' + c;
39
- }
40
- c = ((c >>> 8) & 0xff) * 0xC0 + (c & 0xff);
41
- buffer.put(c, 13);
42
- i += 2;
43
- }
44
-
45
- if (i < data.length) {
46
- throw 'illegal char at ' + (i + 1);
47
- }
48
- }
49
-
50
- };
51
- return _this;
52
- };
53
- };
54
-
55
- // module.exports = qrKanji;
56
- export default qrKanji;
@@ -1,47 +0,0 @@
1
- import { mode } from './mode';
2
- import BitBuffer from '../lib/BitBuffer';
3
-
4
- var QR_MODE = 1;
5
-
6
- var qrNumber = (function() {
7
- var strToNum = function(s) {
8
- for (var i = 0; i < s.length; i++) {
9
- var c = s.charAt(i);
10
- if (c < '0' || c > '9') {
11
- throw 'illegal char :' + c;
12
- }
13
- }
14
- return +s;
15
- };
16
-
17
- return function(data): mode {
18
- var _data = data;
19
- var _this = {
20
- getMode: function() {
21
- return QR_MODE;
22
- },
23
- getLength: function() {
24
- return _data.length;
25
- },
26
- write: function(buffer:BitBuffer) {
27
- var data = _data;
28
- var i = 0;
29
- while (i + 2 < data.length) {
30
- buffer.put(strToNum(data.substring(i, i + 3)), 10);
31
- i += 3;
32
- }
33
- if (i < data.length) {
34
- if (data.length - i == 1) {
35
- buffer.put(strToNum(data.substring(i, i + 1)), 4);
36
- } else if (data.length - i == 2) {
37
- buffer.put(strToNum(data.substring(i, i + 2)), 7);
38
- }
39
- }
40
- }
41
- };
42
- return _this;
43
- };
44
- })();
45
-
46
- // module.exports = qrNumber;
47
- export default qrNumber;
package/src/modes/mode.ts DELETED
@@ -1,6 +0,0 @@
1
- import BitBuffer from '../lib/BitBuffer'
2
- export interface mode{
3
- getMode():number;
4
- getLength():number;
5
- write(bit:BitBuffer);
6
- }
package/src/qrcode.ts DELETED
@@ -1,237 +0,0 @@
1
- import * as utils from './utils';
2
- import BitMatrix from 'bitmatrix';
3
- import QRMatrix from './lib/QRMatrix';
4
- // var utils = require('./utils');
5
- // var QRErrorCorrectionLevel = utils.QRErrorCorrectionLevel;
6
- namespace Class {
7
- export interface qrcodeOptions {
8
- errorCorrectionLevel: string | number; //纠错等级 默认M 'L','M','Q','H' -> [1,0,3,2]
9
- typeNumber: number; //QR码版本 默认0 (自动) 1 to 40
10
- minTypeNumber?: number;
11
- maskPattern: string | number;
12
- dataMode: string | object;
13
- }
14
- export interface QRcom {
15
- (data, mode): BitMatrix;
16
- splitMake(): any;
17
- make(): BitMatrix;
18
- addData(data, mode?);
19
- setData(data, mode?);
20
- }
21
- }
22
-
23
- // function create(QRModes, defOptions) {}
24
-
25
- // module.exports = function(QRModes, defOptions) {
26
- function Class(QRModes: any, defOptions: Class.qrcodeOptions): (x) => Class.QRcom {
27
- QRcode.QRModes = QRModes;
28
-
29
- // 纠错等级
30
- // L: 1, 7%
31
- // M: 0, 15%
32
- // Q: 3, 25%
33
- // H: 2, 30%
34
- let QRErrorCorrectionLevels = (QRcode.QRErrorCorrectionLevels = Object.keys(
35
- utils.QRErrorCorrectionLevel
36
- ));
37
-
38
- /**
39
- *
40
- * {
41
- * errorCorrectionLevel: "M", //纠错等级 默认M 'L','M','Q','H' -> [1,0,3,2]
42
- * typeNumber: 0, //QR码版本 默认0 (自动) 1 to 40
43
- * minTypeNumber: 0,
44
- * maskPattern: 'auto',
45
- * dataMode: 'Byte'
46
- * }
47
- * @param {object} options
48
- * @param {string} options.errorCorrectionLevel //纠错等级 默认M 'L','M','Q','H'
49
- * @param {number} options.typeNumber //QR码版本 默认0 (自动) 1 to 40
50
- * @param {number} options.minTypeNumber //最小版本 版本自动时生效果
51
- * @param {string|number} options.maskPattern //掩模 'random','auto' [0-7]
52
- * @param {string} options.dataMode //默认 数据类型 结合 QRModes 参数
53
- */
54
- function QRcode(options): Class.QRcom {
55
- options = options || {};
56
- // var _options = {};
57
- // for (var k in defOptions) {
58
- // _options[k] = options[k] == undefined ? defOptions[k] : options[k];
59
- // }
60
- // let _options:qrcodeOptions = Object.assign({}, defOptions, options);
61
- let _options: Class.qrcodeOptions = { ...defOptions, ...options };
62
-
63
- return (function() {
64
- let _typeNumber = _options.typeNumber,
65
- _minTypeNumber = _options.minTypeNumber,
66
- _maskPattern = _options.maskPattern,
67
- _dataMode = _options.dataMode,
68
- _errorCorrectionLevel = (function() {
69
- let l = _options.errorCorrectionLevel + '';
70
- l = l.toUpperCase();
71
- return ~QRErrorCorrectionLevels.indexOf(l)
72
- ? utils.QRErrorCorrectionLevel[l]
73
- : utils.QRErrorCorrectionLevel.M;
74
- })();
75
-
76
- let _moduleCount = 0,
77
- _dataList = [],
78
- _dataCache: number[] = null;
79
-
80
- let makeImpl = function(test: boolean, maskPattern: number): QRMatrix {
81
- let matrix: QRMatrix = utils.getBaseQRMatrix(_typeNumber);
82
-
83
- //填充格式信息
84
- utils.setupTypeInfo(matrix, test, _errorCorrectionLevel, maskPattern);
85
-
86
- //填充版本信息
87
- _typeNumber >= 7 && utils.setupTypeNumber(matrix, test);
88
- // return matrix;
89
- // //填充数据
90
- if (_dataCache == null) {
91
- _dataCache = utils.createData(_typeNumber, _errorCorrectionLevel, _dataList);
92
- }
93
-
94
- utils.setupData(matrix, _dataCache, maskPattern);
95
- return matrix;
96
- };
97
-
98
- var addData = function(data, mode?) {
99
- mode = mode || _dataMode;
100
- var newData = null;
101
- if (typeof mode == 'function') {
102
- newData = mode(data);
103
- if (!(newData.getMode && newData.getLength && newData.write)) {
104
- throw 'mode invalid!';
105
- }
106
- } else {
107
- if (QRModes[mode]) {
108
- newData = QRModes[mode](data);
109
- } else {
110
- throw 'mode type invalid! mode is ' + mode;
111
- }
112
- }
113
- _dataList.push(newData);
114
- _dataCache = null;
115
- };
116
-
117
- var make = function() {
118
- // 如果未指定TypeNumber,则记算适合的TypeNumber
119
- if (_typeNumber < 1) {
120
- var typeNumber = _minTypeNumber ? _minTypeNumber : 1;
121
- for (; typeNumber < 40; typeNumber++) {
122
- // var rsBlocks = utils.getRSBlocks(typeNumber, _errorCorrectionLevel);
123
-
124
- // var buffer = utils.BitBuffer();
125
- // for (var i = 0; i < _dataList.length; i++) {
126
- // var data = _dataList[i];
127
- // // console.log(data.getMode)
128
- // buffer.put(data.getMode(), 4);
129
- // buffer.put(data.getLength(), utils.getLengthInBits(data.getMode(), typeNumber));
130
- // data.write(buffer);
131
- // }
132
-
133
- // var totalDataCount = 0;
134
- // for (var i = 0; i < rsBlocks.length; i++) {
135
- // totalDataCount += rsBlocks[i].dataCount;
136
- // }
137
- var buffer = utils.getBufferForModes(typeNumber, _dataList);
138
- var totalDataCount = utils.getMaxDataCount(typeNumber, _errorCorrectionLevel);
139
-
140
- if (buffer.getLengthInBits() <= totalDataCount * 8) {
141
- break;
142
- }
143
- }
144
- _typeNumber = typeNumber;
145
- }
146
-
147
- _moduleCount = _typeNumber * 4 + 17;
148
-
149
- // 掩模
150
-
151
- // 随机
152
- if (_maskPattern === 'random') {
153
- _maskPattern = ~~(Math.random() * (7 + 1));
154
- // 指定方案
155
- } else if (0 <= _maskPattern && _maskPattern <= 7) {
156
- _maskPattern = Number(_maskPattern) >> 0;
157
- // 自动筛选最优掩模
158
- } else {
159
- //auto
160
- _maskPattern = (function() {
161
- var minLostPoint = 0;
162
- var pattern = 0;
163
- for (var i = 0; i < 8; i += 1) {
164
- var map = makeImpl(true, i);
165
- var lostPoint = utils.getLostPoint(map);
166
- if (i == 0 || minLostPoint > lostPoint) {
167
- minLostPoint = lostPoint;
168
- pattern = i;
169
- }
170
- }
171
- return pattern;
172
- })();
173
- }
174
-
175
- var map = makeImpl(false, _maskPattern);
176
- return map;
177
- };
178
-
179
- var splitMake = function() {
180
- var obj: any = {};
181
- obj.all = make();
182
-
183
- obj.allDiscover = utils.getBaseQRMatrix(_typeNumber);
184
-
185
- //positionProbe
186
- obj.positionProbe = utils.mapInit(_moduleCount);
187
- utils.setupAllPositionProbePattern(obj.positionProbe);
188
-
189
- //positionAdjust
190
- // var positionAdjust = utils.copyMap(obj.positionProbe);
191
- obj.positionAdjust = utils.mapInit(_moduleCount);
192
- utils.setupPositionAdjustPattern(obj.positionAdjust);
193
- // obj.positionAdjust = utils.compareMap(obj.positionProbe, positionAdjust, 'xor');
194
-
195
- //timing
196
- obj.timing = utils.mapInit(_moduleCount);
197
- utils.setupTimingPattern(obj.timing);
198
-
199
- // obj.timing = utils.compareMap(obj.positionAdjust, timing, 'and');
200
- // obj.timing = utils.compareMap(obj.timing, timing, 'xor');
201
-
202
- //data
203
- obj.data = utils.compareMap(obj.all, obj.allDiscover, 'xor');
204
-
205
- // console.log(obj.all);
206
- // console.log(obj.allDiscover);
207
- // console.log(obj.positionProbe);
208
- // console.log(obj.positionAdjust);
209
- // console.log(obj.timing)
210
- // console.log(obj.data)
211
-
212
- return obj;
213
- };
214
-
215
- var setData = function(data, mode?) {
216
- _dataList = [];
217
- addData(data, mode);
218
- };
219
-
220
- var _this: any = function(str, mode?) {
221
- setData(str, mode);
222
- return make();
223
- };
224
-
225
- //暴露到外部的方法
226
- _this.setData = setData;
227
- _this.addData = addData;
228
- _this.make = make;
229
- _this.splitMake = splitMake;
230
-
231
- return _this;
232
- })();
233
- }
234
-
235
- return QRcode;
236
- };
237
- export default Class;