@loaders.gl/crypto 4.2.0-alpha.4 → 4.2.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.
Files changed (58) hide show
  1. package/dist/crypto-worker.js +1 -1
  2. package/dist/crypto-worker.js.map +2 -2
  3. package/dist/dist.dev.js +609 -47
  4. package/dist/dist.min.js +9 -0
  5. package/dist/index.cjs +44 -549
  6. package/dist/index.cjs.map +7 -0
  7. package/dist/index.d.ts +9 -9
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +28 -16
  10. package/dist/lib/algorithms/crc32.js +32 -17
  11. package/dist/lib/algorithms/crc32c.js +34 -20
  12. package/dist/lib/algorithms/md5-wasm.js +413 -406
  13. package/dist/lib/crc32-hash.d.ts +1 -1
  14. package/dist/lib/crc32-hash.d.ts.map +1 -1
  15. package/dist/lib/crc32-hash.js +30 -36
  16. package/dist/lib/crc32c-hash.d.ts +1 -1
  17. package/dist/lib/crc32c-hash.d.ts.map +1 -1
  18. package/dist/lib/crc32c-hash.js +35 -36
  19. package/dist/lib/crypto-hash.d.ts +1 -1
  20. package/dist/lib/crypto-hash.d.ts.map +1 -1
  21. package/dist/lib/crypto-hash.js +53 -51
  22. package/dist/lib/hash.js +20 -30
  23. package/dist/lib/md5-hash.d.ts +1 -1
  24. package/dist/lib/md5-hash.d.ts.map +1 -1
  25. package/dist/lib/md5-hash.js +24 -13
  26. package/dist/lib/node-hash.d.ts +1 -1
  27. package/dist/lib/node-hash.d.ts.map +1 -1
  28. package/dist/lib/node-hash.js +23 -13
  29. package/dist/lib/sha256-hash.d.ts +1 -1
  30. package/dist/lib/sha256-hash.d.ts.map +1 -1
  31. package/dist/lib/sha256-hash.js +9 -10
  32. package/dist/lib/utils/base64-utils.js +148 -75
  33. package/dist/lib/utils/digest-utils.js +55 -34
  34. package/dist/types.js +3 -1
  35. package/dist/workers/crypto-worker-node.d.ts +1 -1
  36. package/dist/workers/crypto-worker-node.d.ts.map +1 -1
  37. package/dist/workers/crypto-worker-node.js +0 -1
  38. package/dist/workers/crypto-worker.d.ts +2 -2
  39. package/dist/workers/crypto-worker.d.ts.map +1 -1
  40. package/dist/workers/crypto-worker.js +17 -17
  41. package/package.json +10 -7
  42. package/dist/index.js.map +0 -1
  43. package/dist/lib/algorithms/crc32.js.map +0 -1
  44. package/dist/lib/algorithms/crc32c.js.map +0 -1
  45. package/dist/lib/algorithms/md5-wasm.js.map +0 -1
  46. package/dist/lib/crc32-hash.js.map +0 -1
  47. package/dist/lib/crc32c-hash.js.map +0 -1
  48. package/dist/lib/crypto-hash.js.map +0 -1
  49. package/dist/lib/hash.js.map +0 -1
  50. package/dist/lib/md5-hash.js.map +0 -1
  51. package/dist/lib/node-hash.js.map +0 -1
  52. package/dist/lib/sha256-hash.js.map +0 -1
  53. package/dist/lib/utils/base64-utils.js.map +0 -1
  54. package/dist/lib/utils/digest-utils.js.map +0 -1
  55. package/dist/types.js.map +0 -1
  56. package/dist/workers/crypto-worker-node.js.map +0 -1
  57. package/dist/workers/crypto-worker.js.map +0 -1
  58. package/dist/workers/cryptojs-worker.ts.disabled +0 -30
@@ -1,4 +1,4 @@
1
- import { Hash } from './hash';
1
+ import { Hash } from "./hash.js";
2
2
  /**
3
3
  * Calculates CRC32 Cryptographic Hash
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"crc32-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crc32-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAI5B;;GAEG;AACH,qBAAa,SAAU,SAAQ,IAAI;IACjC,QAAQ,CAAC,IAAI,WAAW;IAExB,OAAO,MAAC;gBAEI,OAAO,KAAK;IAMxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM;IAOzD,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAS9B"}
1
+ {"version":3,"file":"crc32-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crc32-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,kBAAe;AAI5B;;GAEG;AACH,qBAAa,SAAU,SAAQ,IAAI;IACjC,QAAQ,CAAC,IAAI,WAAW;IAExB,OAAO,MAAC;gBAEI,OAAO,KAAK;IAMxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM;IAOzD,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAS9B"}
@@ -1,46 +1,40 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { Hash } from "./hash.js";
2
5
  import CRC32 from "./algorithms/crc32.js";
3
6
  import { encodeNumber } from "./utils/digest-utils.js";
7
+ /**
8
+ * Calculates CRC32 Cryptographic Hash
9
+ */
4
10
  export class CRC32Hash extends Hash {
5
- constructor() {
6
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7
- super();
8
- this.name = 'crc32';
9
- this.options = void 0;
10
- this.options = {
11
- crypto: {},
12
- ...options
13
- };
14
- this.hashBatches = this.hashBatches.bind(this);
15
- }
16
- async hash(input, encoding) {
17
- return this.hashSync(input, encoding);
18
- }
19
- hashSync(input, encoding) {
20
- const hash = new CRC32();
21
- hash.update(input);
22
- const digest = hash.finalize();
23
- return encodeNumber(digest, encoding);
24
- }
25
- hashBatches(asyncIterator) {
26
- try {
27
- var _this = this;
28
- let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64';
29
- return async function* () {
30
- var _this$options$crypto, _this$options$crypto$;
11
+ name = 'crc32';
12
+ options;
13
+ constructor(options = {}) {
14
+ super();
15
+ this.options = { crypto: {}, ...options };
16
+ this.hashBatches = this.hashBatches.bind(this);
17
+ }
18
+ /**
19
+ * Atomic hash calculation
20
+ * @returns base64 encoded hash
21
+ */
22
+ async hash(input, encoding) {
23
+ return this.hashSync(input, encoding);
24
+ }
25
+ hashSync(input, encoding) {
26
+ const hash = new CRC32();
27
+ hash.update(input);
28
+ const digest = hash.finalize();
29
+ return encodeNumber(digest, encoding);
30
+ }
31
+ async *hashBatches(asyncIterator, encoding = 'base64') {
31
32
  const hash = new CRC32();
32
33
  for await (const chunk of asyncIterator) {
33
- hash.update(chunk);
34
- yield chunk;
34
+ hash.update(chunk);
35
+ yield chunk;
35
36
  }
36
37
  const digest = hash.finalize();
37
- (_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, {
38
- hash: encodeNumber(digest, encoding)
39
- });
40
- }();
41
- } catch (e) {
42
- return Promise.reject(e);
38
+ this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) });
43
39
  }
44
- }
45
40
  }
46
- //# sourceMappingURL=crc32-hash.js.map
@@ -1,4 +1,4 @@
1
- import { Hash } from './hash';
1
+ import { Hash } from "./hash.js";
2
2
  /**
3
3
  * A transform that calculates CRC32c Hash
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"crc32c-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crc32c-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAI5B;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,MAAC;IAER;;;OAGG;gBACS,OAAO,KAAK;IAKxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM;IASzD,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAS9B"}
1
+ {"version":3,"file":"crc32c-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crc32c-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,kBAAe;AAI5B;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,MAAC;IAER;;;OAGG;gBACS,OAAO,KAAK;IAKxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM;IASzD,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAS9B"}
@@ -1,45 +1,44 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { Hash } from "./hash.js";
2
5
  import CRC32C from "./algorithms/crc32c.js";
3
6
  import { encodeNumber } from "./utils/digest-utils.js";
7
+ /**
8
+ * A transform that calculates CRC32c Hash
9
+ */
4
10
  export class CRC32CHash extends Hash {
5
- constructor() {
6
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7
- super();
8
- this.name = 'crc32c';
9
- this.options = void 0;
10
- this.options = {
11
- crypto: {},
12
- ...options
13
- };
14
- }
15
- async hash(input, encoding) {
16
- return this.hashSync(input, encoding);
17
- }
18
- hashSync(input, encoding) {
19
- const hash = new CRC32C(this.options);
20
- hash.update(input);
21
- const digest = hash.finalize();
22
- return encodeNumber(digest, encoding);
23
- }
24
- hashBatches(asyncIterator) {
25
- try {
26
- var _this = this;
27
- let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64';
28
- return async function* () {
29
- var _this$options$crypto, _this$options$crypto$;
30
- const hash = new CRC32C(_this.options);
11
+ name = 'crc32c';
12
+ options;
13
+ /**
14
+ * Atomic hash calculation
15
+ * @returns base64 encoded hash
16
+ */
17
+ constructor(options = {}) {
18
+ super();
19
+ this.options = { crypto: {}, ...options };
20
+ }
21
+ /**
22
+ * Atomic hash calculation
23
+ * @returns base64 encoded hash
24
+ */
25
+ async hash(input, encoding) {
26
+ return this.hashSync(input, encoding);
27
+ }
28
+ hashSync(input, encoding) {
29
+ const hash = new CRC32C(this.options);
30
+ hash.update(input);
31
+ const digest = hash.finalize();
32
+ return encodeNumber(digest, encoding);
33
+ }
34
+ // runInBatches inherited
35
+ async *hashBatches(asyncIterator, encoding = 'base64') {
36
+ const hash = new CRC32C(this.options);
31
37
  for await (const chunk of asyncIterator) {
32
- hash.update(chunk);
33
- yield chunk;
38
+ hash.update(chunk);
39
+ yield chunk;
34
40
  }
35
41
  const digest = hash.finalize();
36
- (_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, {
37
- hash: encodeNumber(digest, encoding)
38
- });
39
- }();
40
- } catch (e) {
41
- return Promise.reject(e);
42
+ this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) });
42
43
  }
43
- }
44
44
  }
45
- //# sourceMappingURL=crc32c-hash.js.map
@@ -1,4 +1,4 @@
1
- import { Hash } from './hash';
1
+ import { Hash } from "./hash.js";
2
2
  type CryptoHashOptions = {
3
3
  modules?: {
4
4
  [moduleName: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crypto-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACtC,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAIF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,QAAQ,CAAC,IAAI,MAAC;IAEd,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,UAAU,CAAC;IACnB,yBAAyB;IACzB,OAAO,CAAC,KAAK,CAAC;gBAEF,OAAO,EAAE,iBAAiB;IAUhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBpE,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAqB9B"}
1
+ {"version":3,"file":"crypto-hash.d.ts","sourceRoot":"","sources":["../../src/lib/crypto-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,kBAAe;AAE5B,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACtC,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAIF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAClC,QAAQ,CAAC,IAAI,MAAC;IAEd,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,UAAU,CAAC;IACnB,yBAAyB;IACzB,OAAO,CAAC,KAAK,CAAC;gBAEF,OAAO,EAAE,iBAAiB;IAUhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBpE,WAAW,CAChB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EACjE,QAAQ,GAAE,KAAK,GAAG,QAAmB,GACpC,aAAa,CAAC,WAAW,CAAC;CAqB9B"}
@@ -1,65 +1,67 @@
1
1
  import { Hash } from "./hash.js";
2
2
  let CryptoJS;
3
+ /**
4
+ * A transform that calculates Cryptographic Hash using Crypto JS library
5
+ * @deprecated Warning, experimental class
6
+ */
3
7
  export class CryptoHash extends Hash {
4
- constructor(options) {
5
- var _this$options, _this$options$crypto;
6
- super();
7
- this.name = void 0;
8
- this.options = void 0;
9
- this._algorithm = void 0;
10
- this._algo = void 0;
11
- this.options = options;
12
- this._algorithm = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : (_this$options$crypto = _this$options.crypto) === null || _this$options$crypto === void 0 ? void 0 : _this$options$crypto.algorithm;
13
- if (!this._algorithm) {
14
- throw new Error(this.name);
15
- }
16
- this.name = this._algorithm.toLowerCase();
17
- }
18
- async preload() {
19
- if (!CryptoJS) {
20
- var _this$options2, _this$options2$module;
21
- CryptoJS = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : (_this$options2$module = _this$options2.modules) === null || _this$options2$module === void 0 ? void 0 : _this$options2$module.CryptoJS;
8
+ name;
9
+ options;
10
+ /** Name of digest algorithm */
11
+ _algorithm;
12
+ /** CryptoJS algorithm */
13
+ _algo;
14
+ constructor(options) {
15
+ super();
16
+ this.options = options;
17
+ this._algorithm = this.options?.crypto?.algorithm;
18
+ if (!this._algorithm) {
19
+ throw new Error(this.name);
20
+ }
21
+ this.name = this._algorithm.toLowerCase();
22
22
  }
23
- if (!CryptoJS) {
24
- throw new Error(this.name);
23
+ async preload() {
24
+ if (!CryptoJS) {
25
+ CryptoJS = this.options?.modules?.CryptoJS;
26
+ }
27
+ if (!CryptoJS) {
28
+ throw new Error(this.name);
29
+ }
30
+ this._algo = CryptoJS.algo[this._algorithm];
25
31
  }
26
- this._algo = CryptoJS.algo[this._algorithm];
27
- }
28
- async hash(input, encoding) {
29
- await this.preload();
30
- const hash = this._algo.create();
31
- if (!hash) {
32
- throw new Error(this.name);
32
+ /**
33
+ * Atomic hash calculation
34
+ * @returns base64 encoded hash
35
+ */
36
+ async hash(input, encoding) {
37
+ await this.preload();
38
+ const hash = this._algo.create();
39
+ if (!hash) {
40
+ throw new Error(this.name);
41
+ }
42
+ // arrayBuffer is accepted, even though types and docs say no
43
+ // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer
44
+ const typedWordArray = CryptoJS.lib.WordArray.create(input);
45
+ // Map our encoding constant to Crypto library
46
+ const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex;
47
+ return hash.update(typedWordArray).finalize().toString(enc);
33
48
  }
34
- const typedWordArray = CryptoJS.lib.WordArray.create(input);
35
- const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex;
36
- return hash.update(typedWordArray).finalize().toString(enc);
37
- }
38
- hashBatches(asyncIterator) {
39
- try {
40
- var _this = this;
41
- let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64';
42
- return async function* () {
43
- var _this$options3, _this$options3$crypto, _this$options3$crypto2;
44
- await _this.preload();
45
- const hash = _this._algo.create();
49
+ async *hashBatches(asyncIterator, encoding = 'base64') {
50
+ await this.preload();
51
+ const hash = this._algo.create();
46
52
  if (!hash) {
47
- throw new Error(_this.name);
53
+ throw new Error(this.name);
48
54
  }
49
55
  for await (const chunk of asyncIterator) {
50
- const typedWordArray = CryptoJS.lib.WordArray.create(chunk);
51
- hash.update(typedWordArray);
52
- yield chunk;
56
+ // arrayBuffer is accepted, even though types and docs say no
57
+ // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer
58
+ const typedWordArray = CryptoJS.lib.WordArray.create(chunk);
59
+ hash.update(typedWordArray);
60
+ yield chunk;
53
61
  }
62
+ // Map our encoding constant to Crypto library
54
63
  const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex;
55
64
  const digest = hash.finalize().toString(enc);
56
- (_this$options3 = _this.options) === null || _this$options3 === void 0 ? void 0 : (_this$options3$crypto = _this$options3.crypto) === null || _this$options3$crypto === void 0 ? void 0 : (_this$options3$crypto2 = _this$options3$crypto.onEnd) === null || _this$options3$crypto2 === void 0 ? void 0 : _this$options3$crypto2.call(_this$options3$crypto, {
57
- hash: digest
58
- });
59
- }();
60
- } catch (e) {
61
- return Promise.reject(e);
65
+ this.options?.crypto?.onEnd?.({ hash: digest });
62
66
  }
63
- }
64
67
  }
65
- //# sourceMappingURL=crypto-hash.js.map
package/dist/lib/hash.js CHANGED
@@ -1,37 +1,27 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';
5
+ /** Abstract hash base class */
2
6
  export class Hash {
3
- constructor() {
4
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
- this.name = void 0;
6
- this.options = void 0;
7
- this.hashBatches = this.hashBatches.bind(this);
8
- }
9
- async preload() {
10
- return;
11
- }
12
- hashBatches(asyncIterator) {
13
- try {
14
- var _this = this;
15
- let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64';
16
- return async function* () {
17
- var _this$options$crypto, _this$options$crypto$;
7
+ constructor(options = {}) {
8
+ this.hashBatches = this.hashBatches.bind(this);
9
+ }
10
+ async preload() {
11
+ return;
12
+ }
13
+ async *hashBatches(asyncIterator, encoding = 'base64') {
18
14
  const arrayBuffers = [];
19
15
  for await (const arrayBuffer of asyncIterator) {
20
- arrayBuffers.push(arrayBuffer);
21
- yield arrayBuffer;
16
+ arrayBuffers.push(arrayBuffer);
17
+ yield arrayBuffer;
22
18
  }
23
- const output = await _this.concatenate(arrayBuffers);
24
- const hash = await _this.hash(output, encoding);
25
- (_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, {
26
- hash
27
- });
28
- }();
29
- } catch (e) {
30
- return Promise.reject(e);
19
+ const output = await this.concatenate(arrayBuffers);
20
+ const hash = await this.hash(output, encoding);
21
+ this.options.crypto?.onEnd?.({ hash });
22
+ }
23
+ // HELPERS
24
+ async concatenate(asyncIterator) {
25
+ return await concatenateArrayBuffersAsync(asyncIterator);
31
26
  }
32
- }
33
- async concatenate(asyncIterator) {
34
- return await concatenateArrayBuffersAsync(asyncIterator);
35
- }
36
27
  }
37
- //# sourceMappingURL=hash.js.map
@@ -1,4 +1,4 @@
1
- import { Hash } from './hash';
1
+ import { Hash } from "./hash.js";
2
2
  /**
3
3
  * A transform that calculates MD5 hashes, passing data through
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"md5-hash.d.ts","sourceRoot":"","sources":["../../src/lib/md5-hash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAI5B;;GAEG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,OAAO,MAAC;gBAEL,OAAO,KAAK;IAKxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ5E"}
1
+ {"version":3,"file":"md5-hash.d.ts","sourceRoot":"","sources":["../../src/lib/md5-hash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,IAAI,EAAC,kBAAe;AAI5B;;GAEG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,OAAO,MAAC;gBAEL,OAAO,KAAK;IAKxB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ5E"}
@@ -1,18 +1,29 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Fork of https://github.com/briantbutton/md5-wasm under MIT license
1
5
  import { Hash } from "./hash.js";
2
6
  import md5WASM from "./algorithms/md5-wasm.js";
3
7
  import { encodeHex } from "./utils/digest-utils.js";
8
+ /**
9
+ * A transform that calculates MD5 hashes, passing data through
10
+ */
4
11
  export class MD5Hash extends Hash {
5
- constructor() {
6
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7
- super();
8
- this.name = 'md5';
9
- this.options = void 0;
10
- this.options = options;
11
- }
12
- async hash(input, encoding) {
13
- const md5Promise = new Promise((resolve, reject) => md5WASM(input).then(resolve).catch(reject));
14
- const hex = await md5Promise;
15
- return encodeHex(hex, encoding);
16
- }
12
+ name = 'md5';
13
+ options;
14
+ constructor(options = {}) {
15
+ super();
16
+ this.options = options;
17
+ }
18
+ /**
19
+ * Atomic hash calculation
20
+ * @returns base64 encoded hash
21
+ */
22
+ async hash(input, encoding) {
23
+ const md5Promise = new Promise((resolve, reject) =>
24
+ // @ts-expect-error
25
+ md5WASM(input).then(resolve).catch(reject));
26
+ const hex = await md5Promise;
27
+ return encodeHex(hex, encoding);
28
+ }
17
29
  }
18
- //# sourceMappingURL=md5-hash.js.map
@@ -1,4 +1,4 @@
1
- import { Hash } from './hash';
1
+ import { Hash } from "./hash.js";
2
2
  type NodeHashOptions = {
3
3
  crypto: {
4
4
  algorithm: string;
@@ -1 +1 @@
1
- {"version":3,"file":"node-hash.d.ts","sourceRoot":"","sources":["../../src/lib/node-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,IAAI,MAAC;IACd,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEtB,OAAO,EAAE,eAAe;IASpC;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5E"}
1
+ {"version":3,"file":"node-hash.d.ts","sourceRoot":"","sources":["../../src/lib/node-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,kBAAe;AAE5B,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,IAAI,MAAC;IACd,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEtB,OAAO,EAAE,eAAe;IASpC;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5E"}
@@ -1,17 +1,27 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { Hash } from "./hash.js";
5
+ /**
6
+ * A transform that calculates Cryptographic Hash using Node's Crypto library
7
+ * @deprecated Only available in Node.js
8
+ */
2
9
  export class NodeHash extends Hash {
3
- constructor(options) {
4
- super();
5
- this.name = void 0;
6
- this.options = void 0;
7
- this.options = options;
8
- if (!globalThis.loaders.NodeHash) {
9
- throw new Error('install @loaders.gl/crypto on Node.js to use NodeHash');
10
+ name;
11
+ options;
12
+ constructor(options) {
13
+ super();
14
+ this.options = options;
15
+ if (!globalThis.loaders.NodeHash) {
16
+ throw new Error('install @loaders.gl/crypto on Node.js to use NodeHash');
17
+ }
18
+ return new globalThis.loaders.NodeHash(options);
19
+ }
20
+ /**
21
+ * Atomic hash calculation
22
+ * @returns base64 encoded hash
23
+ */
24
+ async hash(input, encoding) {
25
+ throw new Error('Not implemented');
10
26
  }
11
- return new globalThis.loaders.NodeHash(options);
12
- }
13
- async hash(input, encoding) {
14
- throw new Error('Not implemented');
15
- }
16
27
  }
17
- //# sourceMappingURL=node-hash.js.map
@@ -1,4 +1,4 @@
1
- import { CryptoHash } from './crypto-hash';
1
+ import { CryptoHash } from "./crypto-hash.js";
2
2
  type CryptoHashOptions = {
3
3
  modules: {
4
4
  [moduleName: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"sha256-hash.d.ts","sourceRoot":"","sources":["../../src/lib/sha256-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACrC,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,EAAE,iBAAiB;CAGvC"}
1
+ {"version":3,"file":"sha256-hash.d.ts","sourceRoot":"","sources":["../../src/lib/sha256-hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,yBAAsB;AAEzC,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE;QAAC,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACrC,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,KAAK,GAAG,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,EAAE,iBAAiB;CAGvC"}
@@ -1,13 +1,12 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { CryptoHash } from "./crypto-hash.js";
5
+ /**
6
+ * A transform that calculates Cryptographic Hash
7
+ */
2
8
  export class SHA256Hash extends CryptoHash {
3
- constructor(options) {
4
- super({
5
- ...options,
6
- crypto: {
7
- ...options.crypto,
8
- algorithm: 'SHA256'
9
- }
10
- });
11
- }
9
+ constructor(options) {
10
+ super({ ...options, crypto: { ...options.crypto, algorithm: 'SHA256' } });
11
+ }
12
12
  }
13
- //# sourceMappingURL=sha256-hash.js.map