@loaders.gl/crypto 3.3.0-alpha.4 → 3.3.0-alpha.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.
- package/dist/crypto-worker.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +16 -21
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/algorithms/crc32.js +0 -9
- package/dist/es5/lib/algorithms/crc32.js.map +1 -1
- package/dist/es5/lib/algorithms/crc32c.js +1 -10
- package/dist/es5/lib/algorithms/crc32c.js.map +1 -1
- package/dist/es5/lib/algorithms/md5-wasm.js +32 -66
- package/dist/es5/lib/algorithms/md5-wasm.js.map +1 -1
- package/dist/es5/lib/crc32-hash.js +32 -90
- package/dist/es5/lib/crc32-hash.js.map +1 -1
- package/dist/es5/lib/crc32c-hash.js +36 -91
- package/dist/es5/lib/crc32c-hash.js.map +1 -1
- package/dist/es5/lib/crypto-hash.js +30 -98
- package/dist/es5/lib/crypto-hash.js.map +1 -1
- package/dist/es5/lib/hash.js +35 -82
- package/dist/es5/lib/hash.js.map +1 -1
- package/dist/es5/lib/md5-hash.js +3 -25
- package/dist/es5/lib/md5-hash.js.map +1 -1
- package/dist/es5/lib/node-hash.js +30 -86
- package/dist/es5/lib/node-hash.js.map +1 -1
- package/dist/es5/lib/sha256-hash.js +4 -19
- package/dist/es5/lib/sha256-hash.js.map +1 -1
- package/dist/es5/lib/utils/base64-utils.js +0 -13
- package/dist/es5/lib/utils/base64-utils.js.map +1 -1
- package/dist/es5/lib/utils/digest-utils.js +1 -4
- package/dist/es5/lib/utils/digest-utils.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/workers/worker.js +6 -22
- package/dist/es5/workers/worker.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/algorithms/crc32.js +2 -6
- package/dist/esm/lib/algorithms/crc32.js.map +1 -1
- package/dist/esm/lib/algorithms/crc32c.js +4 -9
- package/dist/esm/lib/algorithms/crc32c.js.map +1 -1
- package/dist/esm/lib/algorithms/md5-wasm.js +34 -64
- package/dist/esm/lib/algorithms/md5-wasm.js.map +1 -1
- package/dist/esm/lib/crc32-hash.js +3 -14
- package/dist/esm/lib/crc32-hash.js.map +1 -1
- package/dist/esm/lib/crc32c-hash.js +3 -13
- package/dist/esm/lib/crc32c-hash.js.map +1 -1
- package/dist/esm/lib/crypto-hash.js +2 -21
- package/dist/esm/lib/crypto-hash.js.map +1 -1
- package/dist/esm/lib/hash.js +2 -9
- package/dist/esm/lib/hash.js.map +1 -1
- package/dist/esm/lib/md5-hash.js +5 -6
- package/dist/esm/lib/md5-hash.js.map +1 -1
- package/dist/esm/lib/node-hash.js +2 -13
- package/dist/esm/lib/node-hash.js.map +1 -1
- package/dist/esm/lib/sha256-hash.js +5 -3
- package/dist/esm/lib/sha256-hash.js.map +1 -1
- package/dist/esm/lib/utils/base64-utils.js +1 -12
- package/dist/esm/lib/utils/base64-utils.js.map +1 -1
- package/dist/esm/lib/utils/digest-utils.js +2 -1
- package/dist/esm/lib/utils/digest-utils.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/workers/worker.js +3 -5
- package/dist/esm/workers/worker.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,58 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.CRC32CHash = void 0;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
12
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
14
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
15
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
17
|
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
29
|
-
|
|
30
18
|
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
31
|
-
|
|
32
|
-
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
|
|
33
|
-
|
|
34
19
|
var _hash2 = require("./hash");
|
|
35
|
-
|
|
36
20
|
var _crc32c = _interopRequireDefault(require("./algorithms/crc32c"));
|
|
37
|
-
|
|
38
21
|
var _digestUtils = require("./utils/digest-utils");
|
|
39
|
-
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
43
|
-
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
44
24
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
45
|
-
|
|
46
25
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
|
-
|
|
26
|
+
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
27
|
+
function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
|
|
48
28
|
var CRC32CHash = function (_Hash) {
|
|
49
29
|
(0, _inherits2.default)(CRC32CHash, _Hash);
|
|
50
|
-
|
|
51
30
|
var _super = _createSuper(CRC32CHash);
|
|
52
|
-
|
|
53
31
|
function CRC32CHash() {
|
|
54
32
|
var _this2;
|
|
55
|
-
|
|
56
33
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
57
34
|
(0, _classCallCheck2.default)(this, CRC32CHash);
|
|
58
35
|
_this2 = _super.call(this);
|
|
@@ -75,7 +52,6 @@ var CRC32CHash = function (_Hash) {
|
|
|
75
52
|
switch (_context.prev = _context.next) {
|
|
76
53
|
case 0:
|
|
77
54
|
return _context.abrupt("return", this.hashSync(input));
|
|
78
|
-
|
|
79
55
|
case 1:
|
|
80
56
|
case "end":
|
|
81
57
|
return _context.stop();
|
|
@@ -83,130 +59,99 @@ var CRC32CHash = function (_Hash) {
|
|
|
83
59
|
}
|
|
84
60
|
}, _callee, this);
|
|
85
61
|
}));
|
|
86
|
-
|
|
87
62
|
function hash(_x) {
|
|
88
63
|
return _hash.apply(this, arguments);
|
|
89
64
|
}
|
|
90
|
-
|
|
91
65
|
return hash;
|
|
92
66
|
}()
|
|
93
67
|
}, {
|
|
94
68
|
key: "hashSync",
|
|
95
69
|
value: function hashSync(input) {
|
|
96
70
|
this._hash.update(input);
|
|
97
|
-
|
|
98
71
|
var hashValue = this._hash.finalize();
|
|
99
|
-
|
|
100
72
|
var hex = (0, _digestUtils.toHex)(hashValue);
|
|
101
73
|
var hash = (0, _digestUtils.hexToBase64)(hex);
|
|
102
74
|
return hash;
|
|
103
75
|
}
|
|
76
|
+
|
|
104
77
|
}, {
|
|
105
78
|
key: "hashBatches",
|
|
106
|
-
value:
|
|
107
|
-
var _this = this;
|
|
79
|
+
value:
|
|
108
80
|
|
|
81
|
+
function hashBatches(asyncIterator) {
|
|
82
|
+
var _this = this;
|
|
109
83
|
return (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee2() {
|
|
110
84
|
var _this$options$crypto, _this$options$crypto$;
|
|
111
|
-
|
|
112
|
-
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk, hashValue, hex, hash;
|
|
113
|
-
|
|
85
|
+
var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, hashValue, hex, hash;
|
|
114
86
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
115
87
|
while (1) {
|
|
116
88
|
switch (_context2.prev = _context2.next) {
|
|
117
89
|
case 0:
|
|
118
|
-
|
|
90
|
+
_iteratorAbruptCompletion = false;
|
|
119
91
|
_didIteratorError = false;
|
|
120
92
|
_context2.prev = 2;
|
|
121
|
-
_iterator = (
|
|
122
|
-
|
|
93
|
+
_iterator = _asyncIterator(asyncIterator);
|
|
123
94
|
case 4:
|
|
124
95
|
_context2.next = 6;
|
|
125
96
|
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
126
|
-
|
|
127
97
|
case 6:
|
|
128
|
-
_step = _context2.sent
|
|
129
|
-
|
|
130
|
-
_context2.next = 10;
|
|
131
|
-
return (0, _awaitAsyncGenerator2.default)(_step.value);
|
|
132
|
-
|
|
133
|
-
case 10:
|
|
134
|
-
_value = _context2.sent;
|
|
135
|
-
|
|
136
|
-
if (_iteratorNormalCompletion) {
|
|
137
|
-
_context2.next = 19;
|
|
98
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
|
|
99
|
+
_context2.next = 14;
|
|
138
100
|
break;
|
|
139
101
|
}
|
|
140
|
-
|
|
141
|
-
chunk = _value;
|
|
142
|
-
|
|
102
|
+
chunk = _step.value;
|
|
143
103
|
_this._hash.update(chunk);
|
|
144
|
-
|
|
145
|
-
_context2.next = 16;
|
|
104
|
+
_context2.next = 11;
|
|
146
105
|
return chunk;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
_iteratorNormalCompletion = true;
|
|
106
|
+
case 11:
|
|
107
|
+
_iteratorAbruptCompletion = false;
|
|
150
108
|
_context2.next = 4;
|
|
151
109
|
break;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
_context2.next = 25;
|
|
110
|
+
case 14:
|
|
111
|
+
_context2.next = 20;
|
|
155
112
|
break;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
_context2.prev = 21;
|
|
113
|
+
case 16:
|
|
114
|
+
_context2.prev = 16;
|
|
159
115
|
_context2.t0 = _context2["catch"](2);
|
|
160
116
|
_didIteratorError = true;
|
|
161
117
|
_iteratorError = _context2.t0;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
_context2.prev =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
168
|
-
_context2.next = 30;
|
|
118
|
+
case 20:
|
|
119
|
+
_context2.prev = 20;
|
|
120
|
+
_context2.prev = 21;
|
|
121
|
+
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
122
|
+
_context2.next = 25;
|
|
169
123
|
break;
|
|
170
124
|
}
|
|
171
|
-
|
|
172
|
-
_context2.next = 30;
|
|
125
|
+
_context2.next = 25;
|
|
173
126
|
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
_context2.prev = 30;
|
|
177
|
-
|
|
127
|
+
case 25:
|
|
128
|
+
_context2.prev = 25;
|
|
178
129
|
if (!_didIteratorError) {
|
|
179
|
-
_context2.next =
|
|
130
|
+
_context2.next = 28;
|
|
180
131
|
break;
|
|
181
132
|
}
|
|
182
|
-
|
|
183
133
|
throw _iteratorError;
|
|
184
|
-
|
|
185
|
-
case 33:
|
|
186
|
-
return _context2.finish(30);
|
|
187
|
-
|
|
188
|
-
case 34:
|
|
134
|
+
case 28:
|
|
189
135
|
return _context2.finish(25);
|
|
190
|
-
|
|
191
|
-
|
|
136
|
+
case 29:
|
|
137
|
+
return _context2.finish(20);
|
|
138
|
+
case 30:
|
|
192
139
|
hashValue = _this._hash.finalize();
|
|
193
140
|
hex = (0, _digestUtils.toHex)(hashValue);
|
|
194
141
|
hash = (0, _digestUtils.hexToBase64)(hex);
|
|
195
142
|
(_this$options$crypto = _this.options.crypto) === null || _this$options$crypto === void 0 ? void 0 : (_this$options$crypto$ = _this$options$crypto.onEnd) === null || _this$options$crypto$ === void 0 ? void 0 : _this$options$crypto$.call(_this$options$crypto, {
|
|
196
143
|
hash: hash
|
|
197
144
|
});
|
|
198
|
-
|
|
199
|
-
case 39:
|
|
145
|
+
case 34:
|
|
200
146
|
case "end":
|
|
201
147
|
return _context2.stop();
|
|
202
148
|
}
|
|
203
149
|
}
|
|
204
|
-
}, _callee2, null, [[2,
|
|
150
|
+
}, _callee2, null, [[2, 16, 20, 30], [21,, 25, 29]]);
|
|
205
151
|
}))();
|
|
206
152
|
}
|
|
207
153
|
}]);
|
|
208
154
|
return CRC32CHash;
|
|
209
155
|
}(_hash2.Hash);
|
|
210
|
-
|
|
211
156
|
exports.CRC32CHash = CRC32CHash;
|
|
212
157
|
//# sourceMappingURL=crc32c-hash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"crc32c-hash.js","names":["CRC32CHash","options","crypto","_hash","CRC32C","input","hashSync","update","hashValue","finalize","hex","toHex","hash","hexToBase64","asyncIterator","chunk","onEnd","Hash"],"sources":["../../../src/lib/crc32c-hash.ts"],"sourcesContent":["// CRC32c\nimport {Hash} from './hash';\nimport CRC32C from './algorithms/crc32c';\nimport {toHex, hexToBase64} from './utils/digest-utils';\n\n/**\n * A transform that calculates CRC32c Hash\n */\nexport class CRC32CHash extends Hash {\n readonly name = 'crc32c';\n\n options;\n private _hash: CRC32C;\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n constructor(options = {}) {\n super();\n this.options = {crypto: {}, ...options};\n this._hash = new CRC32C(options);\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer): Promise<string> {\n return this.hashSync(input);\n }\n\n hashSync(input: ArrayBuffer): string {\n this._hash.update(input);\n const hashValue = this._hash.finalize();\n const hex = toHex(hashValue);\n const hash = hexToBase64(hex);\n return hash;\n }\n\n // runInBatches inherited\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n for await (const chunk of asyncIterator) {\n this._hash.update(chunk);\n yield chunk;\n }\n const hashValue = this._hash.finalize();\n const hex = toHex(hashValue);\n const hash = hexToBase64(hex);\n this.options.crypto?.onEnd?.({hash});\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AAAwD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAK3CA,UAAU;EAAA;EAAA;EAUrB,sBAA0B;IAAA;IAAA,IAAdC,OAAO,uEAAG,CAAC,CAAC;IAAA;IACtB;IAAQ,oFAVM,QAAQ;IAAA;IAAA;IAWtB,OAAKA,OAAO;MAAIC,MAAM,EAAE,CAAC;IAAC,GAAKD,OAAO,CAAC;IACvC,OAAKE,KAAK,GAAG,IAAIC,eAAM,CAACH,OAAO,CAAC;IAAC;EACnC;;EAAC;IAAA;IAAA;MAAA,sEAMD,iBAAWI,KAAkB;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACpB,IAAI,CAACC,QAAQ,CAACD,KAAK,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,kBAASA,KAAkB,EAAU;MACnC,IAAI,CAACF,KAAK,CAACI,MAAM,CAACF,KAAK,CAAC;MACxB,IAAMG,SAAS,GAAG,IAAI,CAACL,KAAK,CAACM,QAAQ,EAAE;MACvC,IAAMC,GAAG,GAAG,IAAAC,kBAAK,EAACH,SAAS,CAAC;MAC5B,IAAMI,IAAI,GAAG,IAAAC,wBAAW,EAACH,GAAG,CAAC;MAC7B,OAAOE,IAAI;IACb;;EAAC;IAAA;IAAA;;IAID,qBACEE,aAAiE,EACrC;MAAA;MAAA;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA,2BACFA,aAAa;cAAA;gBAAA;gBAAA;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAtBC,KAAK;gBACpB,KAAI,CAACZ,KAAK,CAACI,MAAM,CAACQ,KAAK,CAAC;gBAAC;gBACzB,OAAMA,KAAK;cAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;cAAA;gBAAA;cAAA;gBAAA;cAAA;gBAEPP,SAAS,GAAG,KAAI,CAACL,KAAK,CAACM,QAAQ,EAAE;gBACjCC,GAAG,GAAG,IAAAC,kBAAK,EAACH,SAAS,CAAC;gBACtBI,IAAI,GAAG,IAAAC,wBAAW,EAACH,GAAG,CAAC;gBAC7B,6BAAI,CAACT,OAAO,CAACC,MAAM,kFAAnB,qBAAqBc,KAAK,0DAA1B,iDAA6B;kBAACJ,IAAI,EAAJA;gBAAI,CAAC,CAAC;cAAC;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA;IACvC;EAAC;EAAA;AAAA,EA7C6BK,WAAI;AAAA"}
|
|
@@ -1,54 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.CryptoHash = void 0;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
12
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
14
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
15
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
17
|
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
29
|
-
|
|
30
18
|
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
31
|
-
|
|
32
|
-
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
|
|
33
|
-
|
|
34
19
|
var _hash2 = require("./hash");
|
|
35
|
-
|
|
36
20
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
37
|
-
|
|
38
21
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
-
|
|
22
|
+
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
23
|
+
function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
|
|
40
24
|
var CryptoJS;
|
|
41
25
|
|
|
42
26
|
var CryptoHash = function (_Hash) {
|
|
43
27
|
(0, _inherits2.default)(CryptoHash, _Hash);
|
|
44
|
-
|
|
45
28
|
var _super = _createSuper(CryptoHash);
|
|
46
|
-
|
|
47
29
|
function CryptoHash(options) {
|
|
48
30
|
var _this2$options, _this2$options$crypto;
|
|
49
|
-
|
|
50
31
|
var _this2;
|
|
51
|
-
|
|
52
32
|
(0, _classCallCheck2.default)(this, CryptoHash);
|
|
53
33
|
_this2 = _super.call(this);
|
|
54
34
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "name", void 0);
|
|
@@ -57,21 +37,17 @@ var CryptoHash = function (_Hash) {
|
|
|
57
37
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "_hash", void 0);
|
|
58
38
|
_this2.options = options;
|
|
59
39
|
_this2._algorithm = (_this2$options = _this2.options) === null || _this2$options === void 0 ? void 0 : (_this2$options$crypto = _this2$options.crypto) === null || _this2$options$crypto === void 0 ? void 0 : _this2$options$crypto.algorithm;
|
|
60
|
-
|
|
61
40
|
if (!_this2._algorithm) {
|
|
62
41
|
throw new Error(_this2.name);
|
|
63
42
|
}
|
|
64
|
-
|
|
65
43
|
_this2.name = _this2._algorithm.toLowerCase();
|
|
66
44
|
return _this2;
|
|
67
45
|
}
|
|
68
|
-
|
|
69
46
|
(0, _createClass2.default)(CryptoHash, [{
|
|
70
47
|
key: "preload",
|
|
71
48
|
value: function () {
|
|
72
49
|
var _preload = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
73
50
|
var _this$options, _this$options$modules, algo;
|
|
74
|
-
|
|
75
51
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
76
52
|
while (1) {
|
|
77
53
|
switch (_context.prev = _context.next) {
|
|
@@ -80,29 +56,22 @@ var CryptoHash = function (_Hash) {
|
|
|
80
56
|
_context.next = 4;
|
|
81
57
|
break;
|
|
82
58
|
}
|
|
83
|
-
|
|
84
59
|
CryptoJS = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : (_this$options$modules = _this$options.modules) === null || _this$options$modules === void 0 ? void 0 : _this$options$modules.CryptoJS;
|
|
85
|
-
|
|
86
60
|
if (CryptoJS) {
|
|
87
61
|
_context.next = 4;
|
|
88
62
|
break;
|
|
89
63
|
}
|
|
90
|
-
|
|
91
64
|
throw new Error(this.name);
|
|
92
|
-
|
|
93
65
|
case 4:
|
|
94
66
|
if (!this._hash) {
|
|
95
67
|
algo = CryptoJS.algo[this._algorithm];
|
|
96
68
|
this._hash = algo.create();
|
|
97
69
|
}
|
|
98
|
-
|
|
99
70
|
if (this._hash) {
|
|
100
71
|
_context.next = 7;
|
|
101
72
|
break;
|
|
102
73
|
}
|
|
103
|
-
|
|
104
74
|
throw new Error(this.name);
|
|
105
|
-
|
|
106
75
|
case 7:
|
|
107
76
|
case "end":
|
|
108
77
|
return _context.stop();
|
|
@@ -110,11 +79,9 @@ var CryptoHash = function (_Hash) {
|
|
|
110
79
|
}
|
|
111
80
|
}, _callee, this);
|
|
112
81
|
}));
|
|
113
|
-
|
|
114
82
|
function preload() {
|
|
115
83
|
return _preload.apply(this, arguments);
|
|
116
84
|
}
|
|
117
|
-
|
|
118
85
|
return preload;
|
|
119
86
|
}()
|
|
120
87
|
}, {
|
|
@@ -128,11 +95,9 @@ var CryptoHash = function (_Hash) {
|
|
|
128
95
|
case 0:
|
|
129
96
|
_context2.next = 2;
|
|
130
97
|
return this.preload();
|
|
131
|
-
|
|
132
98
|
case 2:
|
|
133
99
|
typedWordArray = CryptoJS.lib.WordArray.create(input);
|
|
134
100
|
return _context2.abrupt("return", this._hash.update(typedWordArray).finalize().toString(CryptoJS.enc.Base64));
|
|
135
|
-
|
|
136
101
|
case 4:
|
|
137
102
|
case "end":
|
|
138
103
|
return _context2.stop();
|
|
@@ -140,122 +105,89 @@ var CryptoHash = function (_Hash) {
|
|
|
140
105
|
}
|
|
141
106
|
}, _callee2, this);
|
|
142
107
|
}));
|
|
143
|
-
|
|
144
108
|
function hash(_x) {
|
|
145
109
|
return _hash.apply(this, arguments);
|
|
146
110
|
}
|
|
147
|
-
|
|
148
111
|
return hash;
|
|
149
112
|
}()
|
|
150
113
|
}, {
|
|
151
114
|
key: "hashBatches",
|
|
152
115
|
value: function hashBatches(asyncIterator) {
|
|
153
116
|
var _this = this;
|
|
154
|
-
|
|
155
117
|
return (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee3() {
|
|
156
118
|
var _this$options2, _this$options2$crypto, _this$options2$crypto2;
|
|
157
|
-
|
|
158
|
-
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk, typedWordArray, hash;
|
|
159
|
-
|
|
119
|
+
var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, typedWordArray, hash;
|
|
160
120
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
161
121
|
while (1) {
|
|
162
122
|
switch (_context3.prev = _context3.next) {
|
|
163
123
|
case 0:
|
|
164
124
|
_context3.next = 2;
|
|
165
125
|
return (0, _awaitAsyncGenerator2.default)(_this.preload());
|
|
166
|
-
|
|
167
126
|
case 2:
|
|
168
|
-
|
|
127
|
+
_iteratorAbruptCompletion = false;
|
|
169
128
|
_didIteratorError = false;
|
|
170
129
|
_context3.prev = 4;
|
|
171
|
-
_iterator = (
|
|
172
|
-
|
|
130
|
+
_iterator = _asyncIterator(asyncIterator);
|
|
173
131
|
case 6:
|
|
174
132
|
_context3.next = 8;
|
|
175
133
|
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
176
|
-
|
|
177
134
|
case 8:
|
|
178
|
-
_step = _context3.sent
|
|
179
|
-
|
|
180
|
-
_context3.next = 12;
|
|
181
|
-
return (0, _awaitAsyncGenerator2.default)(_step.value);
|
|
182
|
-
|
|
183
|
-
case 12:
|
|
184
|
-
_value = _context3.sent;
|
|
185
|
-
|
|
186
|
-
if (_iteratorNormalCompletion) {
|
|
187
|
-
_context3.next = 22;
|
|
135
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context3.sent).done)) {
|
|
136
|
+
_context3.next = 17;
|
|
188
137
|
break;
|
|
189
138
|
}
|
|
190
|
-
|
|
191
|
-
chunk = _value;
|
|
139
|
+
chunk = _step.value;
|
|
192
140
|
typedWordArray = CryptoJS.lib.WordArray.create(chunk);
|
|
193
|
-
|
|
194
141
|
_this._hash.update(typedWordArray);
|
|
195
|
-
|
|
196
|
-
_context3.next = 19;
|
|
142
|
+
_context3.next = 14;
|
|
197
143
|
return chunk;
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
_iteratorNormalCompletion = true;
|
|
144
|
+
case 14:
|
|
145
|
+
_iteratorAbruptCompletion = false;
|
|
201
146
|
_context3.next = 6;
|
|
202
147
|
break;
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
_context3.next = 28;
|
|
148
|
+
case 17:
|
|
149
|
+
_context3.next = 23;
|
|
206
150
|
break;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
_context3.prev = 24;
|
|
151
|
+
case 19:
|
|
152
|
+
_context3.prev = 19;
|
|
210
153
|
_context3.t0 = _context3["catch"](4);
|
|
211
154
|
_didIteratorError = true;
|
|
212
155
|
_iteratorError = _context3.t0;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
_context3.prev =
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
219
|
-
_context3.next = 33;
|
|
156
|
+
case 23:
|
|
157
|
+
_context3.prev = 23;
|
|
158
|
+
_context3.prev = 24;
|
|
159
|
+
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
160
|
+
_context3.next = 28;
|
|
220
161
|
break;
|
|
221
162
|
}
|
|
222
|
-
|
|
223
|
-
_context3.next = 33;
|
|
163
|
+
_context3.next = 28;
|
|
224
164
|
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
_context3.prev = 33;
|
|
228
|
-
|
|
165
|
+
case 28:
|
|
166
|
+
_context3.prev = 28;
|
|
229
167
|
if (!_didIteratorError) {
|
|
230
|
-
_context3.next =
|
|
168
|
+
_context3.next = 31;
|
|
231
169
|
break;
|
|
232
170
|
}
|
|
233
|
-
|
|
234
171
|
throw _iteratorError;
|
|
235
|
-
|
|
236
|
-
case 36:
|
|
237
|
-
return _context3.finish(33);
|
|
238
|
-
|
|
239
|
-
case 37:
|
|
172
|
+
case 31:
|
|
240
173
|
return _context3.finish(28);
|
|
241
|
-
|
|
242
|
-
|
|
174
|
+
case 32:
|
|
175
|
+
return _context3.finish(23);
|
|
176
|
+
case 33:
|
|
243
177
|
hash = _this._hash.finalize().toString(CryptoJS.enc.Base64);
|
|
244
178
|
(_this$options2 = _this.options) === null || _this$options2 === void 0 ? void 0 : (_this$options2$crypto = _this$options2.crypto) === null || _this$options2$crypto === void 0 ? void 0 : (_this$options2$crypto2 = _this$options2$crypto.onEnd) === null || _this$options2$crypto2 === void 0 ? void 0 : _this$options2$crypto2.call(_this$options2$crypto, {
|
|
245
179
|
hash: hash
|
|
246
180
|
});
|
|
247
|
-
|
|
248
|
-
case 40:
|
|
181
|
+
case 35:
|
|
249
182
|
case "end":
|
|
250
183
|
return _context3.stop();
|
|
251
184
|
}
|
|
252
185
|
}
|
|
253
|
-
}, _callee3, null, [[4,
|
|
186
|
+
}, _callee3, null, [[4, 19, 23, 33], [24,, 28, 32]]);
|
|
254
187
|
}))();
|
|
255
188
|
}
|
|
256
189
|
}]);
|
|
257
190
|
return CryptoHash;
|
|
258
191
|
}(_hash2.Hash);
|
|
259
|
-
|
|
260
192
|
exports.CryptoHash = CryptoHash;
|
|
261
193
|
//# sourceMappingURL=crypto-hash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"crypto-hash.js","names":["CryptoJS","CryptoHash","options","_algorithm","crypto","algorithm","Error","name","toLowerCase","modules","_hash","algo","create","input","preload","typedWordArray","lib","WordArray","update","finalize","toString","enc","Base64","asyncIterator","chunk","hash","onEnd","Hash"],"sources":["../../../src/lib/crypto-hash.ts"],"sourcesContent":["// This dependency is too big, application must provide it\nimport type * as CryptoJSNamespace from 'crypto-js';\nimport {Hash} from './hash';\n\ntype CryptoHashOptions = {\n modules: {[moduleName: string]: any};\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\nlet CryptoJS: typeof CryptoJSNamespace;\n\n/**\n * A transform that calculates Cryptographic Hash using Crypto JS library\n * @deprecated Warning, experimental class\n */\nexport class CryptoHash extends Hash {\n readonly name;\n\n options: CryptoHashOptions;\n private _algorithm;\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n super();\n this.options = options;\n this._algorithm = this.options?.crypto?.algorithm;\n if (!this._algorithm) {\n throw new Error(this.name);\n }\n this.name = this._algorithm.toLowerCase();\n }\n\n async preload(): Promise<void> {\n if (!CryptoJS) {\n CryptoJS = this.options?.modules?.CryptoJS;\n if (!CryptoJS) {\n throw new Error(this.name);\n }\n }\n if (!this._hash) {\n const algo = CryptoJS.algo[this._algorithm];\n this._hash = algo.create();\n }\n if (!this._hash) {\n throw new Error(this.name);\n }\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer): Promise<string> {\n await this.preload();\n // arrayBuffer is accepted, even though types and docs say no\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n // @ts-expect-error\n const typedWordArray = CryptoJS.lib.WordArray.create(input);\n return this._hash.update(typedWordArray).finalize().toString(CryptoJS.enc.Base64);\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n await this.preload();\n for await (const chunk of asyncIterator) {\n // arrayBuffer is accepted, even though types and docs say no\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n // @ts-expect-error\n const typedWordArray = CryptoJS.lib.WordArray.create(chunk);\n this._hash.update(typedWordArray);\n yield chunk;\n }\n const hash = this._hash.finalize().toString(CryptoJS.enc.Base64);\n this.options?.crypto?.onEnd?.({hash});\n }\n}\n"],"mappings":"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"}
|