@loaders.gl/crypto 4.0.0-alpha.1 → 4.0.0-alpha.11
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/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/crypto-worker-node.js +2 -0
- package/dist/crypto-worker-node.js.map +7 -0
- package/dist/crypto-worker.js +2 -0
- package/dist/crypto-worker.js.map +7 -0
- package/dist/dist.min.js +2 -2
- package/dist/dist.min.js.map +7 -1
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/index.js +83 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/algorithms/crc32.js +41 -0
- package/dist/es5/lib/algorithms/crc32.js.map +1 -0
- package/dist/es5/lib/algorithms/crc32c.js +44 -0
- package/dist/es5/lib/algorithms/crc32c.js.map +1 -0
- package/dist/es5/lib/algorithms/md5-wasm.js +436 -0
- package/dist/es5/lib/algorithms/md5-wasm.js.map +1 -0
- package/dist/es5/lib/crc32-hash.js +150 -0
- package/dist/es5/lib/crc32-hash.js.map +1 -0
- package/dist/es5/lib/crc32c-hash.js +149 -0
- package/dist/es5/lib/crc32c-hash.js.map +1 -0
- package/dist/es5/lib/crypto-hash.js +186 -0
- package/dist/es5/lib/crypto-hash.js.map +1 -0
- package/dist/es5/lib/hash.js +149 -0
- package/dist/es5/lib/hash.js.map +1 -0
- package/dist/es5/lib/md5-hash.js +66 -0
- package/dist/es5/lib/md5-hash.js.map +1 -0
- package/dist/es5/lib/node-hash.js +147 -0
- package/dist/es5/lib/node-hash.js.map +1 -0
- package/dist/es5/lib/sha256-hash.js +33 -0
- package/dist/es5/lib/sha256-hash.js.map +1 -0
- package/dist/es5/lib/utils/base64-utils.js +55 -0
- package/dist/es5/lib/utils/base64-utils.js.map +1 -0
- package/dist/es5/lib/utils/digest-utils.js +23 -0
- package/dist/es5/lib/utils/digest-utils.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/workers/worker.js +65 -0
- package/dist/es5/workers/worker.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/algorithms/crc32.js +24 -0
- package/dist/esm/lib/algorithms/crc32.js.map +1 -0
- package/dist/esm/lib/algorithms/crc32c.js +27 -0
- package/dist/esm/lib/algorithms/crc32c.js.map +1 -0
- package/dist/esm/lib/algorithms/md5-wasm.js +428 -0
- package/dist/esm/lib/algorithms/md5-wasm.js.map +1 -0
- package/dist/esm/lib/crc32-hash.js +43 -0
- package/dist/esm/lib/crc32-hash.js.map +1 -0
- package/dist/esm/lib/crc32c-hash.js +42 -0
- package/dist/esm/lib/crc32c-hash.js.map +1 -0
- package/dist/esm/lib/crypto-hash.js +54 -0
- package/dist/esm/lib/crypto-hash.js.map +1 -0
- package/dist/esm/lib/hash.js +30 -0
- package/dist/esm/lib/hash.js.map +1 -0
- package/dist/esm/lib/md5-hash.js +19 -0
- package/dist/esm/lib/md5-hash.js.map +1 -0
- package/dist/esm/lib/node-hash.js +38 -0
- package/dist/esm/lib/node-hash.js.map +1 -0
- package/dist/esm/lib/sha256-hash.js +13 -0
- package/dist/esm/lib/sha256-hash.js.map +1 -0
- package/dist/esm/lib/utils/base64-utils.js +49 -0
- package/dist/esm/lib/utils/base64-utils.js.map +1 -0
- package/dist/esm/lib/utils/digest-utils.js +14 -0
- package/dist/esm/lib/utils/digest-utils.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/workers/cryptojs-worker.ts.disabled +26 -0
- package/dist/esm/workers/worker.js +22 -0
- package/dist/esm/workers/worker.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -25
- package/dist/lib/algorithms/crc32.d.ts +10 -0
- package/dist/lib/algorithms/crc32.d.ts.map +1 -0
- package/dist/lib/algorithms/crc32.js +25 -23
- package/dist/lib/algorithms/crc32c.d.ts +11 -0
- package/dist/lib/algorithms/crc32c.d.ts.map +1 -0
- package/dist/lib/algorithms/crc32c.js +33 -24
- package/dist/lib/algorithms/md5-wasm.d.ts +2 -0
- package/dist/lib/algorithms/md5-wasm.d.ts.map +1 -0
- package/dist/lib/algorithms/md5-wasm.js +414 -449
- package/dist/lib/crc32-hash.d.ts +18 -0
- package/dist/lib/crc32-hash.d.ts.map +1 -0
- package/dist/lib/crc32-hash.js +45 -54
- package/dist/lib/crc32c-hash.d.ts +22 -0
- package/dist/lib/crc32c-hash.d.ts.map +1 -0
- package/dist/lib/crc32c-hash.js +49 -53
- package/dist/lib/crypto-hash.d.ts +32 -0
- package/dist/lib/crypto-hash.d.ts.map +1 -0
- package/dist/lib/crypto-hash.js +55 -70
- package/dist/lib/hash.d.ts +22 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/hash.js +27 -36
- package/dist/lib/md5-hash.d.ts +15 -0
- package/dist/lib/md5-hash.d.ts.map +1 -0
- package/dist/lib/md5-hash.js +31 -22
- package/dist/lib/node-hash.d.ts +28 -0
- package/dist/lib/node-hash.d.ts.map +1 -0
- package/dist/lib/node-hash.js +39 -49
- package/dist/lib/sha256-hash.d.ts +19 -0
- package/dist/lib/sha256-hash.d.ts.map +1 -0
- package/dist/lib/sha256-hash.js +13 -11
- package/dist/lib/utils/base64-utils.d.ts +3 -2
- package/dist/lib/utils/base64-utils.d.ts.map +1 -0
- package/dist/lib/utils/base64-utils.js +62 -57
- package/dist/lib/utils/digest-utils.d.ts +6 -3
- package/dist/lib/utils/digest-utils.d.ts.map +1 -0
- package/dist/lib/utils/digest-utils.js +25 -12
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -2
- package/dist/workers/worker.d.ts +4 -0
- package/dist/workers/worker.d.ts.map +1 -0
- package/dist/workers/worker.js +22 -24
- package/package.json +12 -11
- package/src/lib/algorithms/{crc32.js → crc32.ts} +2 -0
- package/src/lib/algorithms/{crc32c.js → crc32c.ts} +3 -0
- package/src/lib/hash.ts +1 -1
- package/src/lib/md5-hash.ts +1 -0
- package/src/lib/utils/{base64-utils.js → base64-utils.ts} +3 -2
- package/src/lib/utils/digest-utils.ts +24 -0
- package/dist/bundle.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/algorithms/crc32.js.map +0 -1
- package/dist/lib/algorithms/crc32c.js.map +0 -1
- package/dist/lib/algorithms/md5-wasm.js.map +0 -1
- package/dist/lib/crc32-hash.js.map +0 -1
- package/dist/lib/crc32c-hash.js.map +0 -1
- package/dist/lib/crypto-hash.js.map +0 -1
- package/dist/lib/hash.js.map +0 -1
- package/dist/lib/md5-hash.js.map +0 -1
- package/dist/lib/node-hash.js.map +0 -1
- package/dist/lib/sha256-hash.js.map +0 -1
- package/dist/lib/utils/base64-utils.js.map +0 -1
- package/dist/lib/utils/digest-utils.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/worker.js +0 -5072
- package/dist/worker.js.map +0 -1
- package/dist/workers/worker.js.map +0 -1
- package/src/lib/utils/base64-utils.d.ts +0 -5
- package/src/lib/utils/digest-utils.d.ts +0 -6
- package/src/lib/utils/digest-utils.js +0 -25
- package/dist/{workers → es5/workers}/cryptojs-worker.ts.disabled +0 -0
- package/src/lib/algorithms/{md5-wasm.js → md5-wasm.ts} +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5-wasm.js","names":["atb","atob","Buffer","nodeATOB","identity","wasmB64","wasm","WebAssembly","str2AB","buffer","crypt","makeCrypt","biteSize","bounder","Math","floor","upperLimit","parmTypeErrStr","tooBigErrStr","console","log","md5WASM","data","mem","memView","importObj","imports","len","buff","thenFun","catchFun","result","endTime","md5JS","makeMD5JS","md5WA","makeMD5WA","returnObj","startTime","Date","getTime","fun","getThen","constructor","Uint8Array","ArrayBuffer","getCatch","TypeError","length","Error","Memory","initial","Uint32Array","instantiate","then","giterdone","obj","instance","exports","r","res","Boolean","err","loop","loops","getA","setA","getB","setB","getC","setC","getD","setD","getX","setX","message","m00","m01","m02","m03","m04","m05","m06","m07","m08","m09","m10","m11","m12","m13","m14","m15","aa","bb","cc","dd","m","k","qwerty","md5Used","a","b","c","d","i","l","bytesToWordsNewer","____","endian","s","t","n","bytes","words","j","b0","b1","b2","b3","mView","options","digestbytes","wordsToBytes","asBytes","bytesToHex","bytesToWords","str","buffView","charCodeAt","from","toString","x","base64map","rotl","Number","push","hex","join"],"sources":["../../../../src/lib/algorithms/md5-wasm.ts"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n/* !\n * MD5 WebAssembly\n * https://github.com/briantbutton/md5-wasm\n * (c) 2020 Brian Todd Button\n * Released under the MIT license\n */\n\n// *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-*\n// This contains two functions designed to achieve the same thing\n// -> A WebAssembly function for larger files\n// -> A JavaScript function for the others\n//\nconst atb = typeof atob === 'function' ? atob : typeof Buffer === 'function' ? nodeATOB : identity,\n wasmB64 = atb(\n 'AGFzbQEAAAABDANgAX8AYAAAYAABfwIeAgdpbXBvcnRzA2xvZwAAB2ltcG9ydHMDbWVtAgABAzIxAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgIAAAAAAAaYARt/AUGBxpS6Bgt/AUGJ17b+fgt/AUH+uevFeQt/AUH2qMmBAQt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALB7oCJQhvbmVGdWxsQQAYCG9uZUZ1bGxCABkIb25lRnVsbEMAGghvbmVGdWxsRAAbBWxvb3BzAAEEbG9vcAACBXByaW1lAAMFbG9vcEEABAZsb29wQTEABQZsb29wQTIABgZsb29wQTMABwZsb29wQTQACAVsb29wQgAJBmxvb3BCMQAKBmxvb3BCMgALBmxvb3BCMwAMBmxvb3BCNAANBWxvb3BDAA4GbG9vcEMxAA8GbG9vcEMyABAGbG9vcEMzABEGbG9vcEM0ABIFbG9vcEQAEwZsb29wRDEAFAZsb29wRDIAFQZsb29wRDMAFgZsb29wRDQAFwRnZXRBACgEZ2V0QgApBGdldEMAKgRnZXREACsEZ2V0WAAsBHNldEEALQRzZXRCAC4Ec2V0QwAvBHNldEQAMARzZXRYADEKzA0xWwEBf0EAJAggAEEGdCEBAkADQCMIIAFGDQEjACQEIwEkBSMCJAYjAyQHEAIjBCMAaiQAIwUjAWokASMGIwJqJAIjByMDaiQDIwhBwABqJAgMAAsLIwgjGmokGgsTACMIIxpqJAkQAxAEEAkQDhATC6IBAEEAIwlqKAIAJApBBCMJaigCACQLQQgjCWooAgAkDEEMIwlqKAIAJA1BECMJaigCACQOQRQjCWooAgAkD0EYIwlqKAIAJBBBHCMJaigCACQRQSAjCWooAgAkEkEkIwlqKAIAJBNBKCMJaigCACQUQSwjCWooAgAkFUEwIwlqKAIAJBZBNCMJaigCACQXQTgjCWooAgAkGEE8IwlqKAIAJBkLCgAQBRAGEAcQCAsuAEH4yKq7fSMKahAYQdbunsZ+IwtqEBtB2+GBoQIjDGoQGkHunfeNfCMNahAZCy0AQa+f8Kt/Iw5qEBhBqoyfvAQjD2oQG0GTjMHBeiMQahAaQYGqmmojEWoQGQssAEHYsYLMBiMSahAYQa/vk9p4IxNqEBtBsbd9IxRqEBpBvq/zyngjFWoQGQstAEGiosDcBiMWahAYQZPj4WwjF2oQG0GOh+WzeiMYahAaQaGQ0M0EIxlqEBkLCgAQChALEAwQDQsuAEHiyviwfyMLahAcQcDmgoJ8IxBqEB9B0bT5sgIjFWoQHkGqj9vNfiMKahAdCy0AQd2gvLF9Iw9qEBxB06iQEiMUahAfQYHNh8V9IxlqEB5ByPfPvn4jDmoQHQsuAEHmm4ePAiMTahAcQdaP3Jl8IxhqEB9Bh5vUpn8jDWoQHkHtqeiqBCMSahAdCy0AQYXSj896IxdqEBxB+Me+ZyMMahAfQdmFvLsGIxFqEB5Bipmp6XgjFmoQHQsKABAPEBAQERASCysAQcLyaCMPahAgQYHtx7t4IxJqECNBosL17AYjFWoQIkGM8JRvIxhqECELLgBBxNT7pXojC2oQIEGpn/veBCMOahAjQeCW7bV/IxFqECJB8Pj+9XsjFGoQIQstAEHG/e3EAiMXahAgQfrPhNV+IwpqECNBheG8p30jDWoQIkGFuqAkIxBqECELLgBBuaDTzn0jE2oQIEHls+62fiMWahAjQfj5if0BIxlqECJB5ayxpXwjDGoQIQsKABAUEBUQFhAXCy0AQcTEpKF/IwpqECRBl/+rmQQjEWoQJ0Gnx9DceiMYahAmQbnAzmQjD2oQJQstAEHDs+2qBiMWahAkQZKZs/h4Iw1qECdB/ei/fyMUahAmQdG7kax4IwtqECULLQBBz/yh/QYjEmoQJEHgzbNxIxlqECdBlIaFmHojEGoQJkGho6DwBCMXahAlCy4AQYL9zbp/Iw5qECRBteTr6XsjFWoQJ0G7pd/WAiMMahAmQZGnm9x+IxNqECULKAEBf0F/IwFzIwNxIwEjAnFyIwBqIABqIgFBB3QgAUEZdnIjAWokAAsoAQF/QX8jAnMjAHEjAiMDcXIjAWogAGoiAUEWdCABQQp2ciMCaiQBCygBAX9BfyMDcyMBcSMDIwBxciMCaiAAaiIBQRF0IAFBD3ZyIwNqJAILKAEBf0F/IwBzIwJxIwAjAXFyIwNqIABqIgFBDHQgAUEUdnIjAGokAwsoAQF/IwJBfyMDc3EjASMDcXIjAGogAGoiAUEFdCABQRt2ciMBaiQACygBAX8jA0F/IwBzcSMCIwBxciMBaiAAaiIBQRR0IAFBDHZyIwJqJAELKAEBfyMAQX8jAXNxIwMjAXFyIwJqIABqIgFBDnQgAUESdnIjA2okAgsoAQF/IwFBfyMCc3EjACMCcXIjA2ogAGoiAUEJdCABQRd2ciMAaiQDCyIBAX8jASMCcyMDcyMAaiAAaiIBQQR0IAFBHHZyIwFqJAALIgEBfyMCIwNzIwBzIwFqIABqIgFBF3QgAUEJdnIjAmokAQsiAQF/IwMjAHMjAXMjAmogAGoiAUEQdCABQRB2ciMDaiQCCyIBAX8jACMBcyMCcyMDaiAAaiIBQQt0IAFBFXZyIwBqJAMLJQEBf0F/IwNzIwFyIwJzIwBqIABqIgFBBnQgAUEadnIjAWokAAslAQF/QX8jAHMjAnIjA3MjAWogAGoiAUEVdCABQQt2ciMCaiQBCyUBAX9BfyMBcyMDciMAcyMCaiAAaiIBQQ90IAFBEXZyIwNqJAILJQEBf0F/IwJzIwByIwFzIwNqIABqIgFBCnQgAUEWdnIjAGokAwsEACMACwQAIwELBAAjAgsEACMDCwQAIxoLBgAgACQACwYAIAAkAQsGACAAJAILBgAgACQDCwYAIAAkGgsA6gQEbmFtZQGSAzIAA2xvZwEFbG9vcHMCBGxvb3ADBXByaW1lBAVsb29wQQUGbG9vcEExBgZsb29wQTIHBmxvb3BBMwgGbG9vcEE0CQVsb29wQgoGbG9vcEIxCwZsb29wQjIMBmxvb3BCMw0GbG9vcEI0DgVsb29wQw8GbG9vcEMxEAZsb29wQzIRBmxvb3BDMxIGbG9vcEM0EwVsb29wRBQGbG9vcEQxFQZsb29wRDIWBmxvb3BEMxcGbG9vcEQ0GAhvbmVGdWxsQRkIb25lRnVsbEIaCG9uZUZ1bGxDGwhvbmVGdWxsRBwIdHdvRnVsbEEdCHR3b0Z1bGxCHgh0d29GdWxsQx8IdHdvRnVsbEQgCHRyZUZ1bGxBIQh0cmVGdWxsQiIIdHJlRnVsbEMjCHRyZUZ1bGxEJAhxdWFGdWxsQSUIcXVhRnVsbEImCHF1YUZ1bGxDJwhxdWFGdWxsRCgEZ2V0QSkEZ2V0QioEZ2V0QysEZ2V0RCwEZ2V0WC0Ec2V0QS4Ec2V0Qi8Ec2V0QzAEc2V0RDEEc2V0WALNATIAAQAAAQIAAAEIbnVtbG9vcHMCAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgCAAABAW4ZAgAAAQFuGgIAAAEBbhsCAAABAW4cAgAAAQFuHQIAAAEBbh4CAAABAW4fAgAAAQFuIAIAAAEBbiECAAABAW4iAgAAAQFuIwIAAAEBbiQCAAABAW4lAgAAAQFuJgIAAAEBbicCAAABAW4oACkAKgArACwALQEAAC4BAAAvAQAAMAEAADEBAAA='\n ),\n wasm = WebAssembly && atb !== identity ? str2AB(wasmB64).buffer : false,\n crypt = makeCrypt(),\n biteSize = 240 * 16 * 16,\n bounder = Math.floor(biteSize * 16 * 1.066666667),\n upperLimit = 268435456 - 65536,\n parmTypeErrStr = 'Parameter must be Buffer, ArrayBuffer or Uint8Array',\n tooBigErrStr = 'Parameter exceeds max size of 255.9 Mbytes';\n\nif (!wasm) {\n console.log(\n 'WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript'\n );\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - -\n// This returns a Promise-like object (I was farting around, so sue me)\n// which supports '.catch' and '.then'\nexport default function md5WASM(data) {\n var mem, memView, importObj, imports, len, buff, thenFun, catchFun, result, endTime;\n const md5JS = makeMD5JS(),\n md5WA = makeMD5WA(),\n returnObj = {},\n startTime = new Date().getTime();\n\n returnObj['then'] = function (fun) {\n thenFun = fun;\n getThen();\n return returnObj;\n };\n returnObj['catch'] = function (fun) {\n catchFun = fun;\n return returnObj;\n };\n\n // Sift the incoming parameter and the environment\n // If we are good, set buff\n if (true) {\n if (data && typeof data === 'object') {\n if (typeof Buffer === 'function' && data.constructor === Buffer) {\n buff = data;\n } else {\n if (data.constructor === Uint8Array || data.constructor === ArrayBuffer) {\n buff = data.constructor === ArrayBuffer ? new Uint8Array(data) : data;\n } else {\n getCatch(new TypeError(parmTypeErrStr));\n }\n }\n } else {\n getCatch(new TypeError(parmTypeErrStr));\n }\n }\n\n // - - - - - - - - - - - - - - - - - - - - - - - - - -\n // Make some choices based on the size of the incoming data\n // ~ Use WebAssembly or just JavaScript\n // ~ If Webassemly, allocate appropriate memory\n //\n if (buff) {\n len = buff.length;\n if (wasm && len > bounder) {\n if (len > upperLimit) {\n getCatch(new Error(tooBigErrStr));\n } else {\n mem = new WebAssembly.Memory({\n initial: len > 32000000 ? (len > 64000000 ? (len > 128000000 ? 4096 : 2048) : 1024) : 512\n });\n memView = new Uint32Array(mem.buffer);\n imports = {mem: mem, log: console.log};\n importObj = {imports};\n WebAssembly.instantiate(wasm, importObj).then(giterdone);\n }\n } else {\n getThen(md5JS(buff));\n }\n }\n return returnObj;\n\n function giterdone(obj) {\n getThen(md5WA(buff, obj.instance.exports, memView));\n }\n function getThen(r) {\n var res = Boolean(r) ? r : result;\n if (Boolean(r)) {\n endTime = new Date().getTime();\n }\n if (typeof thenFun === 'function') {\n if (Boolean(res)) {\n thenFun(res, endTime - startTime);\n thenFun = catchFun = null;\n }\n } else {\n if (Boolean(r)) {\n result = r;\n }\n }\n }\n function getCatch(err) {\n if (typeof catchFun === 'function') {\n catchFun(err);\n }\n }\n}\n\nfunction makeMD5WA() {\n var loop, loops;\n var getA, setA, getB, setB, getC, setC, getD, setD, getX, setX, memView;\n\n var md5WA = function (message) {\n var m00,\n m01,\n m02,\n m03,\n m04,\n m05,\n m06,\n m07,\n m08,\n m09,\n m10,\n m11,\n m12,\n m13,\n m14,\n m15,\n aa,\n bb,\n cc,\n dd,\n m,\n k;\n var qwerty = new Date().getTime();\n var md5Used = 0;\n\n var a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n i = 0,\n l = message.length * 8,\n len;\n\n len = bytesToWordsNewer(message, memView);\n memView[l >>> 5] |= 0x80 << l % 32;\n memView[(((l + 64) >>> 9) << 4) + 14] = l;\n len = (((l + 64) >>> 9) << 4) + 15;\n m = memView;\n\n // console.log(\"first loop took \"+((new Date().getTime())-qwerty)+\"ms\");\n\n while (i < len) {\n if (len > i + bounder) {\n setA(a);\n setB(b);\n setC(c);\n setD(d);\n loops(biteSize);\n i = i + biteSize * 16;\n a = getA();\n b = getB();\n c = getC();\n d = getD();\n md5Used++;\n } else {\n aa = a;\n bb = b;\n cc = c;\n dd = d;\n m00 = m[i + 0] >>> 0;\n m01 = m[i + 1] >>> 0;\n m02 = m[i + 2] >>> 0;\n m03 = m[i + 3] >>> 0;\n m04 = m[i + 4] >>> 0;\n m05 = m[i + 5] >>> 0;\n m06 = m[i + 6] >>> 0;\n m07 = m[i + 7] >>> 0;\n m08 = m[i + 8] >>> 0;\n m09 = m[i + 9] >>> 0;\n m10 = m[i + 10] >>> 0;\n m11 = m[i + 11] >>> 0;\n m12 = m[i + 12] >>> 0;\n m13 = m[i + 13] >>> 0;\n m14 = m[i + 14] >>> 0;\n m15 = m[i + 15] >>> 0;\n\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c;\n\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c;\n\n a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c;\n\n a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c;\n\n i = i + 16;\n a = (a + aa) >>> 0;\n b = (b + bb) >>> 0;\n c = (c + cc) >>> 0;\n d = (d + dd) >>> 0;\n }\n }\n\n // console.log(\"md5WA, elapsed=\"+((new Date().getTime())-qwerty)+(md5Used?\", WebAssembly called \"+md5Used+\" times\":\", WebAssembly not called\"));\n\n return crypt.endian([a, b, c, d]);\n\n function ____(s, t, n) {\n return (n << s) | (n >>> t);\n }\n\n // Convert a byte array to big-endian 32-bit words\n function bytesToWordsNewer(bytes, words) {\n var i = -1,\n l = Math.floor((bytes.length - 1) / 4),\n j = 0,\n b0,\n b1,\n b2,\n b3;\n while (l - 8 > i++) {\n j = i << 2;\n words[i] = bytes[j + 0] | (bytes[j + 1] << 8) | (bytes[j + 2] << 16) | (bytes[j + 3] << 24);\n }\n i--;\n while (l > i++) {\n j = i << 2;\n b0 = typeof bytes[j + 0] === 'undefined' ? 0 : bytes[j + 0];\n b1 = typeof bytes[j + 1] === 'undefined' ? 0 : bytes[j + 1];\n b2 = typeof bytes[j + 2] === 'undefined' ? 0 : bytes[j + 2];\n b3 = typeof bytes[j + 3] === 'undefined' ? 0 : bytes[j + 3];\n words[i] = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);\n }\n return l + 1;\n }\n };\n\n return function (message, exports, mView, options) {\n var digestbytes;\n loops = exports.loops;\n loop = exports.loop;\n getA = exports.getA;\n getB = exports.getB;\n getC = exports.getC;\n getD = exports.getD;\n getX = exports.getX;\n setA = exports.setA;\n setB = exports.setB;\n setC = exports.setC;\n setD = exports.setD;\n setX = exports.setX;\n memView = mView;\n digestbytes = crypt.wordsToBytes(md5WA(message));\n return options && options.asBytes ? digestbytes : crypt.bytesToHex(digestbytes);\n };\n}\n\nfunction makeMD5JS() {\n var md5JS = function (message, options) {\n var m00,\n m01,\n m02,\n m03,\n m04,\n m05,\n m06,\n m07,\n m08,\n m09,\n m10,\n m11,\n m12,\n m13,\n m14,\n m15,\n aa,\n bb,\n cc,\n dd,\n m;\n var qwerty = new Date().getTime();\n\n // console.log(\"md5 start\");\n\n var a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n l = message.length * 8;\n\n m = crypt.bytesToWords(message);\n\n // Swap endian\n for (var j = 0; j < m.length; j++) {\n m[j] =\n (((m[j] << 8) | (m[j] >>> 24)) & 0x00ff00ff) | (((m[j] << 24) | (m[j] >>> 8)) & 0xff00ff00);\n }\n\n // Padding\n m[l >>> 5] |= 0x80 << l % 32;\n m[(((l + 64) >>> 9) << 4) + 14] = l;\n\n for (var i = 0; i < m.length; i += 16) {\n aa = a;\n bb = b;\n cc = c;\n dd = d;\n m00 = m[i + 0] >>> 0;\n m01 = m[i + 1] >>> 0;\n m02 = m[i + 2] >>> 0;\n m03 = m[i + 3] >>> 0;\n m04 = m[i + 4] >>> 0;\n m05 = m[i + 5] >>> 0;\n m06 = m[i + 6] >>> 0;\n m07 = m[i + 7] >>> 0;\n m08 = m[i + 8] >>> 0;\n m09 = m[i + 9] >>> 0;\n m10 = m[i + 10] >>> 0;\n m11 = m[i + 11] >>> 0;\n m12 = m[i + 12] >>> 0;\n m13 = m[i + 13] >>> 0;\n m14 = m[i + 14] >>> 0;\n m15 = m[i + 15] >>> 0;\n\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c;\n\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c;\n\n a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c;\n\n a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c;\n\n a = (a + aa) >>> 0;\n b = (b + bb) >>> 0;\n c = (c + cc) >>> 0;\n d = (d + dd) >>> 0;\n }\n\n // console.log(\"md5JS, elapsed=\"+((new Date().getTime())-qwerty));\n\n return crypt.endian([a, b, c, d]);\n\n function ____(s, t, n) {\n return (n << s) | (n >>> t);\n }\n };\n\n return function (message, options) {\n var digestbytes = crypt.wordsToBytes(md5JS(message, options)),\n result = options && options.asBytes ? digestbytes : crypt.bytesToHex(digestbytes);\n return result;\n };\n}\nfunction str2AB(str) {\n var l,\n buff,\n buffView,\n i = -1;\n l = str.length - 1;\n buff = new ArrayBuffer(str.length);\n buffView = new Uint8Array(buff);\n while (l > i++) {\n buffView[i] = str.charCodeAt(i);\n }\n return buffView;\n}\nfunction nodeATOB(str) {\n return Buffer.from(str, 'base64').toString('binary');\n}\nfunction identity(x) {\n return x;\n}\n\nfunction makeCrypt() {\n var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n return {\n rotl: function (n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n endian: function (n) {\n if (n.constructor == Number) {\n return (crypt.rotl(n, 8) & 0x00ff00ff) | (crypt.rotl(n, 24) & 0xff00ff00);\n }\n for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]);\n return n;\n },\n\n bytesToWords: function (bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - (b % 32));\n return words;\n },\n\n wordsToBytes: function (words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - (b % 32))) & 0xff);\n return bytes;\n },\n\n bytesToHex: function (bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xf).toString(16));\n }\n return hex.join('');\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Hash } from './hash';
|
|
3
|
+
import CRC32 from './algorithms/crc32';
|
|
4
|
+
import { toHex, hexToBase64 } from './utils/digest-utils';
|
|
5
|
+
export class CRC32Hash extends Hash {
|
|
6
|
+
constructor() {
|
|
7
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8
|
+
super();
|
|
9
|
+
_defineProperty(this, "name", 'crc32');
|
|
10
|
+
_defineProperty(this, "options", void 0);
|
|
11
|
+
_defineProperty(this, "_hash", void 0);
|
|
12
|
+
this.options = {
|
|
13
|
+
crypto: {},
|
|
14
|
+
...options
|
|
15
|
+
};
|
|
16
|
+
this._hash = new CRC32();
|
|
17
|
+
this.hashBatches = this.hashBatches.bind(this);
|
|
18
|
+
}
|
|
19
|
+
async hash(input) {
|
|
20
|
+
return this.hashSync(input);
|
|
21
|
+
}
|
|
22
|
+
hashSync(input) {
|
|
23
|
+
this._hash.update(input);
|
|
24
|
+
const hashValue = this._hash.finalize();
|
|
25
|
+
const hex = toHex(hashValue);
|
|
26
|
+
const hash = hexToBase64(hex);
|
|
27
|
+
return hash;
|
|
28
|
+
}
|
|
29
|
+
async *hashBatches(asyncIterator) {
|
|
30
|
+
var _this$options$crypto, _this$options$crypto$;
|
|
31
|
+
for await (const chunk of asyncIterator) {
|
|
32
|
+
this._hash.update(chunk);
|
|
33
|
+
yield chunk;
|
|
34
|
+
}
|
|
35
|
+
const hashValue = this._hash.finalize();
|
|
36
|
+
const hex = toHex(hashValue);
|
|
37
|
+
const hash = hexToBase64(hex);
|
|
38
|
+
(_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, {
|
|
39
|
+
hash
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=crc32-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc32-hash.js","names":["Hash","CRC32","toHex","hexToBase64","CRC32Hash","constructor","options","arguments","length","undefined","_defineProperty","crypto","_hash","hashBatches","bind","hash","input","hashSync","update","hashValue","finalize","hex","asyncIterator","_this$options$crypto","_this$options$crypto$","chunk","onEnd","call"],"sources":["../../../src/lib/crc32-hash.ts"],"sourcesContent":["// CRC32\nimport {Hash} from './hash';\nimport CRC32 from './algorithms/crc32';\nimport {toHex, hexToBase64} from './utils/digest-utils';\n\n/**\n * Calculates CRC32 Cryptographic Hash\n */\nexport class CRC32Hash extends Hash {\n readonly name = 'crc32';\n\n options;\n private _hash: CRC32;\n\n constructor(options = {}) {\n super();\n this.options = {crypto: {}, ...options};\n this._hash = new CRC32();\n this.hashBatches = this.hashBatches.bind(this);\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 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,SAAQA,IAAI,QAAO,QAAQ;AAC3B,OAAOC,KAAK,MAAM,oBAAoB;AACtC,SAAQC,KAAK,EAAEC,WAAW,QAAO,sBAAsB;AAKvD,OAAO,MAAMC,SAAS,SAASJ,IAAI,CAAC;EAMlCK,WAAWA,CAAA,EAAe;IAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACtB,KAAK,CAAC,CAAC;IAACG,eAAA,eANM,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAOrB,IAAI,CAACJ,OAAO,GAAG;MAACK,MAAM,EAAE,CAAC,CAAC;MAAE,GAAGL;IAAO,CAAC;IACvC,IAAI,CAACM,KAAK,GAAG,IAAIX,KAAK,CAAC,CAAC;IACxB,IAAI,CAACY,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;EAChD;EAMA,MAAMC,IAAIA,CAACC,KAAkB,EAAmB;IAC9C,OAAO,IAAI,CAACC,QAAQ,CAACD,KAAK,CAAC;EAC7B;EAEAC,QAAQA,CAACD,KAAkB,EAAU;IACnC,IAAI,CAACJ,KAAK,CAACM,MAAM,CAACF,KAAK,CAAC;IACxB,MAAMG,SAAS,GAAG,IAAI,CAACP,KAAK,CAACQ,QAAQ,CAAC,CAAC;IACvC,MAAMC,GAAG,GAAGnB,KAAK,CAACiB,SAAS,CAAC;IAC5B,MAAMJ,IAAI,GAAGZ,WAAW,CAACkB,GAAG,CAAC;IAC7B,OAAON,IAAI;EACb;EAEA,OAAOF,WAAWA,CAChBS,aAAiE,EACrC;IAAA,IAAAC,oBAAA,EAAAC,qBAAA;IAC5B,WAAW,MAAMC,KAAK,IAAIH,aAAa,EAAE;MACvC,IAAI,CAACV,KAAK,CAACM,MAAM,CAACO,KAAK,CAAC;MACxB,MAAMA,KAAK;IACb;IACA,MAAMN,SAAS,GAAG,IAAI,CAACP,KAAK,CAACQ,QAAQ,CAAC,CAAC;IACvC,MAAMC,GAAG,GAAGnB,KAAK,CAACiB,SAAS,CAAC;IAC5B,MAAMJ,IAAI,GAAGZ,WAAW,CAACkB,GAAG,CAAC;IAC7B,CAAAE,oBAAA,OAAI,CAACjB,OAAO,CAACK,MAAM,cAAAY,oBAAA,wBAAAC,qBAAA,GAAnBD,oBAAA,CAAqBG,KAAK,cAAAF,qBAAA,uBAA1BA,qBAAA,CAAAG,IAAA,CAAAJ,oBAAA,EAA6B;MAACR;IAAI,CAAC,CAAC;EACtC;AACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Hash } from './hash';
|
|
3
|
+
import CRC32C from './algorithms/crc32c';
|
|
4
|
+
import { toHex, hexToBase64 } from './utils/digest-utils';
|
|
5
|
+
export class CRC32CHash extends Hash {
|
|
6
|
+
constructor() {
|
|
7
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8
|
+
super();
|
|
9
|
+
_defineProperty(this, "name", 'crc32c');
|
|
10
|
+
_defineProperty(this, "options", void 0);
|
|
11
|
+
_defineProperty(this, "_hash", void 0);
|
|
12
|
+
this.options = {
|
|
13
|
+
crypto: {},
|
|
14
|
+
...options
|
|
15
|
+
};
|
|
16
|
+
this._hash = new CRC32C(options);
|
|
17
|
+
}
|
|
18
|
+
async hash(input) {
|
|
19
|
+
return this.hashSync(input);
|
|
20
|
+
}
|
|
21
|
+
hashSync(input) {
|
|
22
|
+
this._hash.update(input);
|
|
23
|
+
const hashValue = this._hash.finalize();
|
|
24
|
+
const hex = toHex(hashValue);
|
|
25
|
+
const hash = hexToBase64(hex);
|
|
26
|
+
return hash;
|
|
27
|
+
}
|
|
28
|
+
async *hashBatches(asyncIterator) {
|
|
29
|
+
var _this$options$crypto, _this$options$crypto$;
|
|
30
|
+
for await (const chunk of asyncIterator) {
|
|
31
|
+
this._hash.update(chunk);
|
|
32
|
+
yield chunk;
|
|
33
|
+
}
|
|
34
|
+
const hashValue = this._hash.finalize();
|
|
35
|
+
const hex = toHex(hashValue);
|
|
36
|
+
const hash = hexToBase64(hex);
|
|
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
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=crc32c-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc32c-hash.js","names":["Hash","CRC32C","toHex","hexToBase64","CRC32CHash","constructor","options","arguments","length","undefined","_defineProperty","crypto","_hash","hash","input","hashSync","update","hashValue","finalize","hex","hashBatches","asyncIterator","_this$options$crypto","_this$options$crypto$","chunk","onEnd","call"],"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,SAAQA,IAAI,QAAO,QAAQ;AAC3B,OAAOC,MAAM,MAAM,qBAAqB;AACxC,SAAQC,KAAK,EAAEC,WAAW,QAAO,sBAAsB;AAKvD,OAAO,MAAMC,UAAU,SAASJ,IAAI,CAAC;EAUnCK,WAAWA,CAAA,EAAe;IAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACtB,KAAK,CAAC,CAAC;IAACG,eAAA,eAVM,QAAQ;IAAAA,eAAA;IAAAA,eAAA;IAWtB,IAAI,CAACJ,OAAO,GAAG;MAACK,MAAM,EAAE,CAAC,CAAC;MAAE,GAAGL;IAAO,CAAC;IACvC,IAAI,CAACM,KAAK,GAAG,IAAIX,MAAM,CAACK,OAAO,CAAC;EAClC;EAMA,MAAMO,IAAIA,CAACC,KAAkB,EAAmB;IAC9C,OAAO,IAAI,CAACC,QAAQ,CAACD,KAAK,CAAC;EAC7B;EAEAC,QAAQA,CAACD,KAAkB,EAAU;IACnC,IAAI,CAACF,KAAK,CAACI,MAAM,CAACF,KAAK,CAAC;IACxB,MAAMG,SAAS,GAAG,IAAI,CAACL,KAAK,CAACM,QAAQ,CAAC,CAAC;IACvC,MAAMC,GAAG,GAAGjB,KAAK,CAACe,SAAS,CAAC;IAC5B,MAAMJ,IAAI,GAAGV,WAAW,CAACgB,GAAG,CAAC;IAC7B,OAAON,IAAI;EACb;EAIA,OAAOO,WAAWA,CAChBC,aAAiE,EACrC;IAAA,IAAAC,oBAAA,EAAAC,qBAAA;IAC5B,WAAW,MAAMC,KAAK,IAAIH,aAAa,EAAE;MACvC,IAAI,CAACT,KAAK,CAACI,MAAM,CAACQ,KAAK,CAAC;MACxB,MAAMA,KAAK;IACb;IACA,MAAMP,SAAS,GAAG,IAAI,CAACL,KAAK,CAACM,QAAQ,CAAC,CAAC;IACvC,MAAMC,GAAG,GAAGjB,KAAK,CAACe,SAAS,CAAC;IAC5B,MAAMJ,IAAI,GAAGV,WAAW,CAACgB,GAAG,CAAC;IAC7B,CAAAG,oBAAA,OAAI,CAAChB,OAAO,CAACK,MAAM,cAAAW,oBAAA,wBAAAC,qBAAA,GAAnBD,oBAAA,CAAqBG,KAAK,cAAAF,qBAAA,uBAA1BA,qBAAA,CAAAG,IAAA,CAAAJ,oBAAA,EAA6B;MAACT;IAAI,CAAC,CAAC;EACtC;AACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Hash } from './hash';
|
|
3
|
+
let CryptoJS;
|
|
4
|
+
export class CryptoHash extends Hash {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
var _this$options, _this$options$crypto;
|
|
7
|
+
super();
|
|
8
|
+
_defineProperty(this, "name", void 0);
|
|
9
|
+
_defineProperty(this, "options", void 0);
|
|
10
|
+
_defineProperty(this, "_algorithm", void 0);
|
|
11
|
+
_defineProperty(this, "_hash", void 0);
|
|
12
|
+
this.options = options;
|
|
13
|
+
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;
|
|
14
|
+
if (!this._algorithm) {
|
|
15
|
+
throw new Error(this.name);
|
|
16
|
+
}
|
|
17
|
+
this.name = this._algorithm.toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
async preload() {
|
|
20
|
+
if (!CryptoJS) {
|
|
21
|
+
var _this$options2, _this$options2$module;
|
|
22
|
+
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;
|
|
23
|
+
if (!CryptoJS) {
|
|
24
|
+
throw new Error(this.name);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!this._hash) {
|
|
28
|
+
const algo = CryptoJS.algo[this._algorithm];
|
|
29
|
+
this._hash = algo.create();
|
|
30
|
+
}
|
|
31
|
+
if (!this._hash) {
|
|
32
|
+
throw new Error(this.name);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async hash(input) {
|
|
36
|
+
await this.preload();
|
|
37
|
+
const typedWordArray = CryptoJS.lib.WordArray.create(input);
|
|
38
|
+
return this._hash.update(typedWordArray).finalize().toString(CryptoJS.enc.Base64);
|
|
39
|
+
}
|
|
40
|
+
async *hashBatches(asyncIterator) {
|
|
41
|
+
var _this$options3, _this$options3$crypto, _this$options3$crypto2;
|
|
42
|
+
await this.preload();
|
|
43
|
+
for await (const chunk of asyncIterator) {
|
|
44
|
+
const typedWordArray = CryptoJS.lib.WordArray.create(chunk);
|
|
45
|
+
this._hash.update(typedWordArray);
|
|
46
|
+
yield chunk;
|
|
47
|
+
}
|
|
48
|
+
const hash = this._hash.finalize().toString(CryptoJS.enc.Base64);
|
|
49
|
+
(_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, {
|
|
50
|
+
hash
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=crypto-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-hash.js","names":["Hash","CryptoJS","CryptoHash","constructor","options","_this$options","_this$options$crypto","_defineProperty","_algorithm","crypto","algorithm","Error","name","toLowerCase","preload","_this$options2","_this$options2$module","modules","_hash","algo","create","hash","input","typedWordArray","lib","WordArray","update","finalize","toString","enc","Base64","hashBatches","asyncIterator","_this$options3","_this$options3$crypto","_this$options3$crypto2","chunk","onEnd","call"],"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":";AAEA,SAAQA,IAAI,QAAO,QAAQ;AAU3B,IAAIC,QAAkC;AAMtC,OAAO,MAAMC,UAAU,SAASF,IAAI,CAAC;EAOnCG,WAAWA,CAACC,OAA0B,EAAE;IAAA,IAAAC,aAAA,EAAAC,oBAAA;IACtC,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACR,IAAI,CAACH,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACI,UAAU,IAAAH,aAAA,GAAG,IAAI,CAACD,OAAO,cAAAC,aAAA,wBAAAC,oBAAA,GAAZD,aAAA,CAAcI,MAAM,cAAAH,oBAAA,uBAApBA,oBAAA,CAAsBI,SAAS;IACjD,IAAI,CAAC,IAAI,CAACF,UAAU,EAAE;MACpB,MAAM,IAAIG,KAAK,CAAC,IAAI,CAACC,IAAI,CAAC;IAC5B;IACA,IAAI,CAACA,IAAI,GAAG,IAAI,CAACJ,UAAU,CAACK,WAAW,CAAC,CAAC;EAC3C;EAEA,MAAMC,OAAOA,CAAA,EAAkB;IAC7B,IAAI,CAACb,QAAQ,EAAE;MAAA,IAAAc,cAAA,EAAAC,qBAAA;MACbf,QAAQ,IAAAc,cAAA,GAAG,IAAI,CAACX,OAAO,cAAAW,cAAA,wBAAAC,qBAAA,GAAZD,cAAA,CAAcE,OAAO,cAAAD,qBAAA,uBAArBA,qBAAA,CAAuBf,QAAQ;MAC1C,IAAI,CAACA,QAAQ,EAAE;QACb,MAAM,IAAIU,KAAK,CAAC,IAAI,CAACC,IAAI,CAAC;MAC5B;IACF;IACA,IAAI,CAAC,IAAI,CAACM,KAAK,EAAE;MACf,MAAMC,IAAI,GAAGlB,QAAQ,CAACkB,IAAI,CAAC,IAAI,CAACX,UAAU,CAAC;MAC3C,IAAI,CAACU,KAAK,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC;IAC5B;IACA,IAAI,CAAC,IAAI,CAACF,KAAK,EAAE;MACf,MAAM,IAAIP,KAAK,CAAC,IAAI,CAACC,IAAI,CAAC;IAC5B;EACF;EAMA,MAAMS,IAAIA,CAACC,KAAkB,EAAmB;IAC9C,MAAM,IAAI,CAACR,OAAO,CAAC,CAAC;IAIpB,MAAMS,cAAc,GAAGtB,QAAQ,CAACuB,GAAG,CAACC,SAAS,CAACL,MAAM,CAACE,KAAK,CAAC;IAC3D,OAAO,IAAI,CAACJ,KAAK,CAACQ,MAAM,CAACH,cAAc,CAAC,CAACI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC3B,QAAQ,CAAC4B,GAAG,CAACC,MAAM,CAAC;EACnF;EAEA,OAAOC,WAAWA,CAChBC,aAAiE,EACrC;IAAA,IAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA;IAC5B,MAAM,IAAI,CAACrB,OAAO,CAAC,CAAC;IACpB,WAAW,MAAMsB,KAAK,IAAIJ,aAAa,EAAE;MAIvC,MAAMT,cAAc,GAAGtB,QAAQ,CAACuB,GAAG,CAACC,SAAS,CAACL,MAAM,CAACgB,KAAK,CAAC;MAC3D,IAAI,CAAClB,KAAK,CAACQ,MAAM,CAACH,cAAc,CAAC;MACjC,MAAMa,KAAK;IACb;IACA,MAAMf,IAAI,GAAG,IAAI,CAACH,KAAK,CAACS,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC3B,QAAQ,CAAC4B,GAAG,CAACC,MAAM,CAAC;IAChE,CAAAG,cAAA,OAAI,CAAC7B,OAAO,cAAA6B,cAAA,wBAAAC,qBAAA,GAAZD,cAAA,CAAcxB,MAAM,cAAAyB,qBAAA,wBAAAC,sBAAA,GAApBD,qBAAA,CAAsBG,KAAK,cAAAF,sBAAA,uBAA3BA,sBAAA,CAAAG,IAAA,CAAAJ,qBAAA,EAA8B;MAACb;IAAI,CAAC,CAAC;EACvC;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';
|
|
3
|
+
export class Hash {
|
|
4
|
+
constructor() {
|
|
5
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
6
|
+
_defineProperty(this, "name", void 0);
|
|
7
|
+
_defineProperty(this, "options", void 0);
|
|
8
|
+
this.hashBatches = this.hashBatches.bind(this);
|
|
9
|
+
}
|
|
10
|
+
async preload() {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
async *hashBatches(asyncIterator) {
|
|
14
|
+
var _this$options$crypto, _this$options$crypto$;
|
|
15
|
+
const arrayBuffers = [];
|
|
16
|
+
for await (const arrayBuffer of asyncIterator) {
|
|
17
|
+
arrayBuffers.push(arrayBuffer);
|
|
18
|
+
yield arrayBuffer;
|
|
19
|
+
}
|
|
20
|
+
const output = await this.concatenate(arrayBuffers);
|
|
21
|
+
const hash = await this.hash(output);
|
|
22
|
+
(_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, {
|
|
23
|
+
hash
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async concatenate(asyncIterator) {
|
|
27
|
+
return await concatenateArrayBuffersAsync(asyncIterator);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","names":["concatenateArrayBuffersAsync","Hash","constructor","options","arguments","length","undefined","_defineProperty","hashBatches","bind","preload","asyncIterator","_this$options$crypto","_this$options$crypto$","arrayBuffers","arrayBuffer","push","output","concatenate","hash","crypto","onEnd","call"],"sources":["../../../src/lib/hash.ts"],"sourcesContent":["// Hash\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\n\ntype HashOptions = {\n modules?: {[moduleName: string]: any};\n crypto?: {\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/** Abstract hash base class */\nexport abstract class Hash {\n abstract readonly name: string;\n abstract readonly options: HashOptions;\n\n constructor(options: HashOptions = {}) {\n this.hashBatches = this.hashBatches.bind(this);\n }\n\n async preload(): Promise<void> {\n return;\n }\n\n abstract hash(arrayBuffer: ArrayBuffer): Promise<string>;\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const arrayBuffer of asyncIterator) {\n arrayBuffers.push(arrayBuffer);\n yield arrayBuffer;\n }\n const output = await this.concatenate(arrayBuffers);\n const hash = await this.hash(output);\n this.options.crypto?.onEnd?.({hash});\n }\n\n // HELPERS\n\n protected async concatenate(asyncIterator): Promise<ArrayBuffer> {\n return await concatenateArrayBuffersAsync(asyncIterator);\n }\n}\n"],"mappings":";AACA,SAAQA,4BAA4B,QAAO,0BAA0B;AAUrE,OAAO,MAAeC,IAAI,CAAC;EAIzBC,WAAWA,CAAA,EAA4B;IAAA,IAA3BC,OAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAAG,eAAA;IAAAA,eAAA;IACnC,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;EAChD;EAEA,MAAMC,OAAOA,CAAA,EAAkB;IAC7B;EACF;EAIA,OAAOF,WAAWA,CAChBG,aAAiE,EACrC;IAAA,IAAAC,oBAAA,EAAAC,qBAAA;IAC5B,MAAMC,YAA2B,GAAG,EAAE;IACtC,WAAW,MAAMC,WAAW,IAAIJ,aAAa,EAAE;MAC7CG,YAAY,CAACE,IAAI,CAACD,WAAW,CAAC;MAC9B,MAAMA,WAAW;IACnB;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACC,WAAW,CAACJ,YAAY,CAAC;IACnD,MAAMK,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,CAACF,MAAM,CAAC;IACpC,CAAAL,oBAAA,OAAI,CAACT,OAAO,CAACiB,MAAM,cAAAR,oBAAA,wBAAAC,qBAAA,GAAnBD,oBAAA,CAAqBS,KAAK,cAAAR,qBAAA,uBAA1BA,qBAAA,CAAAS,IAAA,CAAAV,oBAAA,EAA6B;MAACO;IAAI,CAAC,CAAC;EACtC;EAIA,MAAgBD,WAAWA,CAACP,aAAa,EAAwB;IAC/D,OAAO,MAAMX,4BAA4B,CAACW,aAAa,CAAC;EAC1D;AACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Hash } from './hash';
|
|
3
|
+
import md5WASM from './algorithms/md5-wasm';
|
|
4
|
+
import { hexToBase64 } from './utils/digest-utils';
|
|
5
|
+
export class MD5Hash extends Hash {
|
|
6
|
+
constructor() {
|
|
7
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8
|
+
super();
|
|
9
|
+
_defineProperty(this, "name", 'md5');
|
|
10
|
+
_defineProperty(this, "options", void 0);
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
async hash(input) {
|
|
14
|
+
const md5Promise = new Promise((resolve, reject) => md5WASM(input).then(resolve).catch(reject));
|
|
15
|
+
const hex = await md5Promise;
|
|
16
|
+
return hexToBase64(hex);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=md5-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5-hash.js","names":["Hash","md5WASM","hexToBase64","MD5Hash","constructor","options","arguments","length","undefined","_defineProperty","hash","input","md5Promise","Promise","resolve","reject","then","catch","hex"],"sources":["../../../src/lib/md5-hash.ts"],"sourcesContent":["// Fork of https://github.com/briantbutton/md5-wasm under MIT license\nimport {Hash} from './hash';\nimport md5WASM from './algorithms/md5-wasm';\nimport {hexToBase64} from './utils/digest-utils';\n\n/**\n * A transform that calculates MD5 hashes, passing data through\n */\nexport class MD5Hash extends Hash {\n readonly name = 'md5';\n readonly options;\n\n constructor(options = {}) {\n super();\n this.options = options;\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer): Promise<string> {\n const md5Promise = new Promise<string>((resolve, reject) =>\n // @ts-expect-error\n md5WASM(input).then(resolve).catch(reject)\n );\n const hex = await md5Promise;\n return hexToBase64(hex);\n }\n}\n"],"mappings":";AACA,SAAQA,IAAI,QAAO,QAAQ;AAC3B,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,SAAQC,WAAW,QAAO,sBAAsB;AAKhD,OAAO,MAAMC,OAAO,SAASH,IAAI,CAAC;EAIhCI,WAAWA,CAAA,EAAe;IAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACtB,KAAK,CAAC,CAAC;IAACG,eAAA,eAJM,KAAK;IAAAA,eAAA;IAKnB,IAAI,CAACJ,OAAO,GAAGA,OAAO;EACxB;EAMA,MAAMK,IAAIA,CAACC,KAAkB,EAAmB;IAC9C,MAAMC,UAAU,GAAG,IAAIC,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAErDd,OAAO,CAACU,KAAK,CAAC,CAACK,IAAI,CAACF,OAAO,CAAC,CAACG,KAAK,CAACF,MAAM,CAC3C,CAAC;IACD,MAAMG,GAAG,GAAG,MAAMN,UAAU;IAC5B,OAAOV,WAAW,CAACgB,GAAG,CAAC;EACzB;AACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Hash } from './hash';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
4
|
+
export class NodeHash extends Hash {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
var _this$options, _this$options$crypto;
|
|
7
|
+
super();
|
|
8
|
+
_defineProperty(this, "name", 'crypto-node');
|
|
9
|
+
_defineProperty(this, "options", void 0);
|
|
10
|
+
_defineProperty(this, "_algorithm", void 0);
|
|
11
|
+
_defineProperty(this, "_hash", void 0);
|
|
12
|
+
this.options = options;
|
|
13
|
+
if (!((_this$options = this.options) !== null && _this$options !== void 0 && (_this$options$crypto = _this$options.crypto) !== null && _this$options$crypto !== void 0 && _this$options$crypto.algorithm)) {
|
|
14
|
+
throw new Error(this.name);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async hash(input) {
|
|
18
|
+
var _this$options2, _this$options2$crypto, _this$options2$crypto2;
|
|
19
|
+
await this.preload();
|
|
20
|
+
const hash = createHash((_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.algorithm) === null || _this$options2$crypto2 === void 0 ? void 0 : _this$options2$crypto2.toLowerCase());
|
|
21
|
+
const inputArray = new Uint8Array(input);
|
|
22
|
+
return hash.update(inputArray).digest('base64');
|
|
23
|
+
}
|
|
24
|
+
async *hashBatches(asyncIterator) {
|
|
25
|
+
var _this$options3, _this$options3$crypto, _this$options3$crypto2, _this$options4, _this$options4$crypto, _this$options4$crypto2;
|
|
26
|
+
await this.preload();
|
|
27
|
+
const hash = createHash((_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.algorithm) === null || _this$options3$crypto2 === void 0 ? void 0 : _this$options3$crypto2.toLowerCase());
|
|
28
|
+
for await (const chunk of asyncIterator) {
|
|
29
|
+
const inputArray = new Uint8Array(chunk);
|
|
30
|
+
hash.update(inputArray);
|
|
31
|
+
yield chunk;
|
|
32
|
+
}
|
|
33
|
+
(_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : (_this$options4$crypto = _this$options4.crypto) === null || _this$options4$crypto === void 0 ? void 0 : (_this$options4$crypto2 = _this$options4$crypto.onEnd) === null || _this$options4$crypto2 === void 0 ? void 0 : _this$options4$crypto2.call(_this$options4$crypto, {
|
|
34
|
+
hash: hash.digest('base64')
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=node-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-hash.js","names":["Hash","createHash","NodeHash","constructor","options","_this$options","_this$options$crypto","_defineProperty","crypto","algorithm","Error","name","hash","input","_this$options2","_this$options2$crypto","_this$options2$crypto2","preload","toLowerCase","inputArray","Uint8Array","update","digest","hashBatches","asyncIterator","_this$options3","_this$options3$crypto","_this$options3$crypto2","_this$options4","_this$options4$crypto","_this$options4$crypto2","chunk","onEnd","call"],"sources":["../../../src/lib/node-hash.ts"],"sourcesContent":["// This dependency is too big, application must provide it\nimport {Hash} from './hash';\nimport {createHash} from 'crypto'; // Node.js builtin\n\ntype CryptoHashOptions = {\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * Calculates Cryptographic Hash using Node.js crypto library\n * @deprecated Warning, experimental class\n */\nexport class NodeHash extends Hash {\n readonly name = 'crypto-node';\n\n options: CryptoHashOptions;\n // @ts-ignore\n private _algorithm;\n // @ts-ignore\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n super();\n this.options = options;\n if (!this.options?.crypto?.algorithm) {\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 const hash = createHash(this.options?.crypto?.algorithm?.toLowerCase());\n const inputArray = new Uint8Array(input);\n return hash.update(inputArray).digest('base64');\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n await this.preload();\n const hash = createHash(this.options?.crypto?.algorithm?.toLowerCase());\n for await (const chunk of asyncIterator) {\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n const inputArray = new Uint8Array(chunk);\n hash.update(inputArray);\n yield chunk;\n }\n this.options?.crypto?.onEnd?.({hash: hash.digest('base64')});\n }\n}\n"],"mappings":";AACA,SAAQA,IAAI,QAAO,QAAQ;AAC3B,SAAQC,UAAU,QAAO,QAAQ;AAajC,OAAO,MAAMC,QAAQ,SAASF,IAAI,CAAC;EASjCG,WAAWA,CAACC,OAA0B,EAAE;IAAA,IAAAC,aAAA,EAAAC,oBAAA;IACtC,KAAK,CAAC,CAAC;IAACC,eAAA,eATM,aAAa;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAU3B,IAAI,CAACH,OAAO,GAAGA,OAAO;IACtB,IAAI,GAAAC,aAAA,GAAC,IAAI,CAACD,OAAO,cAAAC,aAAA,gBAAAC,oBAAA,GAAZD,aAAA,CAAcG,MAAM,cAAAF,oBAAA,eAApBA,oBAAA,CAAsBG,SAAS,GAAE;MACpC,MAAM,IAAIC,KAAK,CAAC,IAAI,CAACC,IAAI,CAAC;IAC5B;EACF;EAMA,MAAMC,IAAIA,CAACC,KAAkB,EAAmB;IAAA,IAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA;IAC9C,MAAM,IAAI,CAACC,OAAO,CAAC,CAAC;IACpB,MAAML,IAAI,GAAGX,UAAU,EAAAa,cAAA,GAAC,IAAI,CAACV,OAAO,cAAAU,cAAA,wBAAAC,qBAAA,GAAZD,cAAA,CAAcN,MAAM,cAAAO,qBAAA,wBAAAC,sBAAA,GAApBD,qBAAA,CAAsBN,SAAS,cAAAO,sBAAA,uBAA/BA,sBAAA,CAAiCE,WAAW,CAAC,CAAC,CAAC;IACvE,MAAMC,UAAU,GAAG,IAAIC,UAAU,CAACP,KAAK,CAAC;IACxC,OAAOD,IAAI,CAACS,MAAM,CAACF,UAAU,CAAC,CAACG,MAAM,CAAC,QAAQ,CAAC;EACjD;EAEA,OAAOC,WAAWA,CAChBC,aAAiE,EACrC;IAAA,IAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA;IAC5B,MAAM,IAAI,CAACb,OAAO,CAAC,CAAC;IACpB,MAAML,IAAI,GAAGX,UAAU,EAAAwB,cAAA,GAAC,IAAI,CAACrB,OAAO,cAAAqB,cAAA,wBAAAC,qBAAA,GAAZD,cAAA,CAAcjB,MAAM,cAAAkB,qBAAA,wBAAAC,sBAAA,GAApBD,qBAAA,CAAsBjB,SAAS,cAAAkB,sBAAA,uBAA/BA,sBAAA,CAAiCT,WAAW,CAAC,CAAC,CAAC;IACvE,WAAW,MAAMa,KAAK,IAAIP,aAAa,EAAE;MAEvC,MAAML,UAAU,GAAG,IAAIC,UAAU,CAACW,KAAK,CAAC;MACxCnB,IAAI,CAACS,MAAM,CAACF,UAAU,CAAC;MACvB,MAAMY,KAAK;IACb;IACA,CAAAH,cAAA,OAAI,CAACxB,OAAO,cAAAwB,cAAA,wBAAAC,qBAAA,GAAZD,cAAA,CAAcpB,MAAM,cAAAqB,qBAAA,wBAAAC,sBAAA,GAApBD,qBAAA,CAAsBG,KAAK,cAAAF,sBAAA,uBAA3BA,sBAAA,CAAAG,IAAA,CAAAJ,qBAAA,EAA8B;MAACjB,IAAI,EAAEA,IAAI,CAACU,MAAM,CAAC,QAAQ;IAAC,CAAC,CAAC;EAC9D;AACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CryptoHash } from './crypto-hash';
|
|
2
|
+
export class SHA256Hash extends CryptoHash {
|
|
3
|
+
constructor(options) {
|
|
4
|
+
super({
|
|
5
|
+
...options,
|
|
6
|
+
crypto: {
|
|
7
|
+
...options.crypto,
|
|
8
|
+
algorithm: 'SHA256'
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sha256-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256-hash.js","names":["CryptoHash","SHA256Hash","constructor","options","crypto","algorithm"],"sources":["../../../src/lib/sha256-hash.ts"],"sourcesContent":["//\nimport {CryptoHash} from './crypto-hash';\n\ntype CryptoHashOptions = {\n modules: {[moduleName: string]: any};\n crypto?: {\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * A transform that calculates Cryptographic Hash\n */\nexport class SHA256Hash extends CryptoHash {\n constructor(options: CryptoHashOptions) {\n super({...options, crypto: {...options.crypto, algorithm: 'SHA256'}});\n }\n}\n"],"mappings":"AACA,SAAQA,UAAU,QAAO,eAAe;AAYxC,OAAO,MAAMC,UAAU,SAASD,UAAU,CAAC;EACzCE,WAAWA,CAACC,OAA0B,EAAE;IACtC,KAAK,CAAC;MAAC,GAAGA,OAAO;MAAEC,MAAM,EAAE;QAAC,GAAGD,OAAO,CAACC,MAAM;QAAEC,SAAS,EAAE;MAAQ;IAAC,CAAC,CAAC;EACvE;AACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export function toBase64(string) {
|
|
2
|
+
string = "".concat(string);
|
|
3
|
+
for (let i = 0; i < string.length; i++) {
|
|
4
|
+
if (string.charCodeAt(i) > 255) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
let out = '';
|
|
9
|
+
for (let i = 0; i < string.length; i += 3) {
|
|
10
|
+
const groupsOfSix = [undefined, undefined, undefined, undefined];
|
|
11
|
+
groupsOfSix[0] = string.charCodeAt(i) >> 2;
|
|
12
|
+
groupsOfSix[1] = (string.charCodeAt(i) & 0x03) << 4;
|
|
13
|
+
if (string.length > i + 1) {
|
|
14
|
+
groupsOfSix[1] |= string.charCodeAt(i + 1) >> 4;
|
|
15
|
+
groupsOfSix[2] = (string.charCodeAt(i + 1) & 0x0f) << 2;
|
|
16
|
+
}
|
|
17
|
+
if (string.length > i + 2) {
|
|
18
|
+
groupsOfSix[2] |= string.charCodeAt(i + 2) >> 6;
|
|
19
|
+
groupsOfSix[3] = string.charCodeAt(i + 2) & 0x3f;
|
|
20
|
+
}
|
|
21
|
+
for (let j = 0; j < groupsOfSix.length; j++) {
|
|
22
|
+
if (typeof groupsOfSix[j] === 'undefined') {
|
|
23
|
+
out += '=';
|
|
24
|
+
} else {
|
|
25
|
+
out += btoaLookup(groupsOfSix[j]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
function btoaLookup(idx) {
|
|
32
|
+
if (idx < 26) {
|
|
33
|
+
return String.fromCharCode(idx + 'A'.charCodeAt(0));
|
|
34
|
+
}
|
|
35
|
+
if (idx < 52) {
|
|
36
|
+
return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0));
|
|
37
|
+
}
|
|
38
|
+
if (idx < 62) {
|
|
39
|
+
return String.fromCharCode(idx - 52 + '0'.charCodeAt(0));
|
|
40
|
+
}
|
|
41
|
+
if (idx === 62) {
|
|
42
|
+
return '+';
|
|
43
|
+
}
|
|
44
|
+
if (idx === 63) {
|
|
45
|
+
return '/';
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=base64-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64-utils.js","names":["toBase64","string","concat","i","length","charCodeAt","out","groupsOfSix","undefined","j","btoaLookup","idx","String","fromCharCode"],"sources":["../../../../src/lib/utils/base64-utils.ts"],"sourcesContent":["/**\n * `btoa()` polyfill as defined by the HTML and Infra specs, which mostly just references\n * RFC 4648.\n */\nexport function toBase64(string: string): string | null {\n // String conversion as required by Web IDL.\n string = `${string}`;\n // \"The btoa() method must throw an \"InvalidCharacterError\" DOMException if\n // data contains any character whose code point is greater than U+00FF.\"\n for (let i = 0; i < string.length; i++) {\n if (string.charCodeAt(i) > 255) {\n return null;\n }\n }\n let out = '';\n for (let i = 0; i < string.length; i += 3) {\n /** @type {Array[4]} */\n const groupsOfSix: (number | undefined)[] = [undefined, undefined, undefined, undefined];\n groupsOfSix[0] = string.charCodeAt(i) >> 2;\n groupsOfSix[1] = (string.charCodeAt(i) & 0x03) << 4;\n if (string.length > i + 1) {\n groupsOfSix[1] |= string.charCodeAt(i + 1) >> 4;\n groupsOfSix[2] = (string.charCodeAt(i + 1) & 0x0f) << 2;\n }\n if (string.length > i + 2) {\n // @ts-expect-error\n groupsOfSix[2] |= string.charCodeAt(i + 2) >> 6;\n groupsOfSix[3] = string.charCodeAt(i + 2) & 0x3f;\n }\n for (let j = 0; j < groupsOfSix.length; j++) {\n if (typeof groupsOfSix[j] === 'undefined') {\n out += '=';\n } else {\n out += btoaLookup(groupsOfSix[j]);\n }\n }\n }\n return out;\n}\n\n/**\n * Lookup table for btoa(), which converts a six-bit number into the\n * corresponding ASCII character.\n */\nfunction btoaLookup(idx) {\n if (idx < 26) {\n return String.fromCharCode(idx + 'A'.charCodeAt(0));\n }\n if (idx < 52) {\n return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0));\n }\n if (idx < 62) {\n return String.fromCharCode(idx - 52 + '0'.charCodeAt(0));\n }\n if (idx === 62) {\n return '+';\n }\n if (idx === 63) {\n return '/';\n }\n // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the teststring.\n return undefined;\n}\n"],"mappings":"AAIA,OAAO,SAASA,QAAQA,CAACC,MAAc,EAAiB;EAEtDA,MAAM,MAAAC,MAAA,CAAMD,MAAM,CAAE;EAGpB,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACtC,IAAIF,MAAM,CAACI,UAAU,CAACF,CAAC,CAAC,GAAG,GAAG,EAAE;MAC9B,OAAO,IAAI;IACb;EACF;EACA,IAAIG,GAAG,GAAG,EAAE;EACZ,KAAK,IAAIH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IAEzC,MAAMI,WAAmC,GAAG,CAACC,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEA,SAAS,CAAC;IACxFD,WAAW,CAAC,CAAC,CAAC,GAAGN,MAAM,CAACI,UAAU,CAACF,CAAC,CAAC,IAAI,CAAC;IAC1CI,WAAW,CAAC,CAAC,CAAC,GAAG,CAACN,MAAM,CAACI,UAAU,CAACF,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;IACnD,IAAIF,MAAM,CAACG,MAAM,GAAGD,CAAC,GAAG,CAAC,EAAE;MACzBI,WAAW,CAAC,CAAC,CAAC,IAAIN,MAAM,CAACI,UAAU,CAACF,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;MAC/CI,WAAW,CAAC,CAAC,CAAC,GAAG,CAACN,MAAM,CAACI,UAAU,CAACF,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;IACzD;IACA,IAAIF,MAAM,CAACG,MAAM,GAAGD,CAAC,GAAG,CAAC,EAAE;MAEzBI,WAAW,CAAC,CAAC,CAAC,IAAIN,MAAM,CAACI,UAAU,CAACF,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;MAC/CI,WAAW,CAAC,CAAC,CAAC,GAAGN,MAAM,CAACI,UAAU,CAACF,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;IAClD;IACA,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,WAAW,CAACH,MAAM,EAAEK,CAAC,EAAE,EAAE;MAC3C,IAAI,OAAOF,WAAW,CAACE,CAAC,CAAC,KAAK,WAAW,EAAE;QACzCH,GAAG,IAAI,GAAG;MACZ,CAAC,MAAM;QACLA,GAAG,IAAII,UAAU,CAACH,WAAW,CAACE,CAAC,CAAC,CAAC;MACnC;IACF;EACF;EACA,OAAOH,GAAG;AACZ;AAMA,SAASI,UAAUA,CAACC,GAAG,EAAE;EACvB,IAAIA,GAAG,GAAG,EAAE,EAAE;IACZ,OAAOC,MAAM,CAACC,YAAY,CAACF,GAAG,GAAG,GAAG,CAACN,UAAU,CAAC,CAAC,CAAC,CAAC;EACrD;EACA,IAAIM,GAAG,GAAG,EAAE,EAAE;IACZ,OAAOC,MAAM,CAACC,YAAY,CAACF,GAAG,GAAG,EAAE,GAAG,GAAG,CAACN,UAAU,CAAC,CAAC,CAAC,CAAC;EAC1D;EACA,IAAIM,GAAG,GAAG,EAAE,EAAE;IACZ,OAAOC,MAAM,CAACC,YAAY,CAACF,GAAG,GAAG,EAAE,GAAG,GAAG,CAACN,UAAU,CAAC,CAAC,CAAC,CAAC;EAC1D;EACA,IAAIM,GAAG,KAAK,EAAE,EAAE;IACd,OAAO,GAAG;EACZ;EACA,IAAIA,GAAG,KAAK,EAAE,EAAE;IACd,OAAO,GAAG;EACZ;EAEA,OAAOH,SAAS;AAClB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { toBase64 } from './base64-utils';
|
|
2
|
+
export function toHex(cipher) {
|
|
3
|
+
const hexString = cipher.toString(16);
|
|
4
|
+
return hexString === '0' ? "0".concat(hexString) : hexString;
|
|
5
|
+
}
|
|
6
|
+
export function hexToBase64(hexstring) {
|
|
7
|
+
if (hexstring.length % 2 !== 0) {
|
|
8
|
+
hexstring = "0".concat(hexstring);
|
|
9
|
+
}
|
|
10
|
+
const matches = hexstring.match(/\w{2}/g) || [];
|
|
11
|
+
const string = matches.map(a => String.fromCharCode(parseInt(a, 16))).join('');
|
|
12
|
+
return toBase64(string) || '';
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=digest-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-utils.js","names":["toBase64","toHex","cipher","hexString","toString","concat","hexToBase64","hexstring","length","matches","match","string","map","a","String","fromCharCode","parseInt","join"],"sources":["../../../../src/lib/utils/digest-utils.ts"],"sourcesContent":["import {toBase64} from './base64-utils';\n\n/**\n *\n */\nexport function toHex(cipher: number): string {\n const hexString = cipher.toString(16);\n return hexString === '0' ? `0${hexString}` : hexString;\n}\n\n/**\n * @see https://stackoverflow.com/questions/23190056/hex-to-base64-converter-for-javascript\n */\nexport function hexToBase64(hexstring: string): string {\n // Add leading zero to keep even count of digits\n // eg. f85d741 => 0f85d741\n if (hexstring.length % 2 !== 0) {\n hexstring = `0${hexstring}`;\n }\n const matches = hexstring.match(/\\w{2}/g) || [];\n const string = matches.map((a) => String.fromCharCode(parseInt(a, 16))).join('');\n // TODO - define how to handle failures\n return toBase64(string) || '';\n}\n"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,gBAAgB;AAKvC,OAAO,SAASC,KAAKA,CAACC,MAAc,EAAU;EAC5C,MAAMC,SAAS,GAAGD,MAAM,CAACE,QAAQ,CAAC,EAAE,CAAC;EACrC,OAAOD,SAAS,KAAK,GAAG,OAAAE,MAAA,CAAOF,SAAS,IAAKA,SAAS;AACxD;AAKA,OAAO,SAASG,WAAWA,CAACC,SAAiB,EAAU;EAGrD,IAAIA,SAAS,CAACC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;IAC9BD,SAAS,OAAAF,MAAA,CAAOE,SAAS,CAAE;EAC7B;EACA,MAAME,OAAO,GAAGF,SAAS,CAACG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;EAC/C,MAAMC,MAAM,GAAGF,OAAO,CAACG,GAAG,CAAEC,CAAC,IAAKC,MAAM,CAACC,YAAY,CAACC,QAAQ,CAACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAACI,IAAI,CAAC,EAAE,CAAC;EAEhF,OAAOjB,QAAQ,CAACW,MAAM,CAAC,IAAI,EAAE;AAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["export type CryptoHashOptions = {\n modules?: {[moduleName: string]: any};\n crypto?: {\n algorithm;\n onEnd?;\n };\n};\n"],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type {CryptoHashOptions} from '../lib/crypto-hash';
|
|
2
|
+
import {createWorker} from '@loaders.gl/worker-utils';
|
|
3
|
+
import {CryptoHash} from '../lib/crypto-hash';
|
|
4
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
5
|
+
import * as CryptoJS from 'crypto-js';
|
|
6
|
+
|
|
7
|
+
// Assuming we can bundle as module
|
|
8
|
+
export {CryptoHash};
|
|
9
|
+
|
|
10
|
+
createWorker(async (data, options) => {
|
|
11
|
+
options = {
|
|
12
|
+
...options,
|
|
13
|
+
modules: {CryptoJS}
|
|
14
|
+
};
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
const {operation} = options;
|
|
17
|
+
|
|
18
|
+
switch (operation) {
|
|
19
|
+
case 'crc32':
|
|
20
|
+
return await new CryptoHash(options).hash(data);
|
|
21
|
+
case 'crc32c':
|
|
22
|
+
return await new CryptoHash(options).hash(data);
|
|
23
|
+
default:
|
|
24
|
+
throw new Error(`invalid option: ${operation}`);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createWorker } from '@loaders.gl/worker-utils';
|
|
2
|
+
import { CRC32Hash } from '../lib/crc32-hash';
|
|
3
|
+
import { CRC32CHash } from '../lib/crc32c-hash';
|
|
4
|
+
import { MD5Hash } from '../lib/md5-hash';
|
|
5
|
+
export { CRC32Hash, CRC32CHash };
|
|
6
|
+
createWorker(async function (data) {
|
|
7
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
8
|
+
const {
|
|
9
|
+
operation
|
|
10
|
+
} = options;
|
|
11
|
+
switch (operation) {
|
|
12
|
+
case 'crc32':
|
|
13
|
+
return await new CRC32Hash(options).hash(data);
|
|
14
|
+
case 'crc32c':
|
|
15
|
+
return await new CRC32CHash(options).hash(data);
|
|
16
|
+
case 'md5':
|
|
17
|
+
return await new MD5Hash(options).hash(data);
|
|
18
|
+
default:
|
|
19
|
+
throw new Error("invalid option: ".concat(operation));
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","names":["createWorker","CRC32Hash","CRC32CHash","MD5Hash","data","options","arguments","length","undefined","operation","hash","Error","concat"],"sources":["../../../src/workers/worker.ts"],"sourcesContent":["import {createWorker} from '@loaders.gl/worker-utils';\nimport {CRC32Hash} from '../lib/crc32-hash';\nimport {CRC32CHash} from '../lib/crc32c-hash';\nimport {MD5Hash} from '../lib/md5-hash';\n\n// Assuming we can bundle as module\nexport {CRC32Hash, CRC32CHash};\n\ncreateWorker(async (data, options = {}) => {\n // @ts-ignore\n const {operation} = options;\n\n switch (operation) {\n case 'crc32':\n return await new CRC32Hash(options).hash(data);\n case 'crc32c':\n return await new CRC32CHash(options).hash(data);\n case 'md5':\n return await new MD5Hash(options).hash(data);\n default:\n throw new Error(`invalid option: ${operation}`);\n }\n});\n"],"mappings":"AAAA,SAAQA,YAAY,QAAO,0BAA0B;AACrD,SAAQC,SAAS,QAAO,mBAAmB;AAC3C,SAAQC,UAAU,QAAO,oBAAoB;AAC7C,SAAQC,OAAO,QAAO,iBAAiB;AAGvC,SAAQF,SAAS,EAAEC,UAAU;AAE7BF,YAAY,CAAC,gBAAOI,IAAI,EAAmB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEpC,MAAM;IAACG;EAAS,CAAC,GAAGJ,OAAO;EAE3B,QAAQI,SAAS;IACf,KAAK,OAAO;MACV,OAAO,MAAM,IAAIR,SAAS,CAACI,OAAO,CAAC,CAACK,IAAI,CAACN,IAAI,CAAC;IAChD,KAAK,QAAQ;MACX,OAAO,MAAM,IAAIF,UAAU,CAACG,OAAO,CAAC,CAACK,IAAI,CAACN,IAAI,CAAC;IACjD,KAAK,KAAK;MACR,OAAO,MAAM,IAAID,OAAO,CAACE,OAAO,CAAC,CAACK,IAAI,CAACN,IAAI,CAAC;IAC9C;MACE,MAAM,IAAIO,KAAK,oBAAAC,MAAA,CAAoBH,SAAS,CAAE,CAAC;EACnD;AACF,CAAC,CAAC"}
|