diff --git a/lib/plugins/json.js b/lib/plugins/json.js index caf63de9..8f09772e 100644 --- a/lib/plugins/json.js +++ b/lib/plugins/json.js @@ -8,9 +8,16 @@ var inherits = require('util').inherits; var Transform = require('readable-stream').Transform; -var crc32 = require('buffer-crc32'); var util = require('archiver-utils'); +var crc32Unsigned; + +try { + crc32Unsigned = require('@node-rs/crc32').crc32; +} catch (e) { + crc32Unsigned = require('buffer-crc32').unsigned; +} + /** * @constructor * @param {(JsonOptions|TransformOptions)} options @@ -78,7 +85,7 @@ Json.prototype.append = function(source, data, callback) { } data.size = sourceBuffer.length || 0; - data.crc32 = crc32.unsigned(sourceBuffer); + data.crc32 = crc32Unsigned(sourceBuffer); self.files.push(data); diff --git a/package-lock.json b/package-lock.json index 247b18a5..772ecabf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,94 @@ "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", "dev": true }, + "@napi-rs/triples": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.2.tgz", + "integrity": "sha512-EL3SiX43m9poFSnhDx4d4fn9SSaqyO2rHsCNhETi9bWPmjXK3uPJ0QpPFtx39FEdHcz1vJmsiW41kqc0AgvtzQ==", + "optional": true + }, + "@node-rs/crc32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.1.0.tgz", + "integrity": "sha512-f3LSfNx3jw93ThDF8SrFOCGeKqBt9gOnOdUyPiBL6peQ5qS8035ByilkNUomcz7OpaAXtRjNWSanP+E2/XKTFw==", + "optional": true, + "requires": { + "@node-rs/crc32-android-arm64": "^1.1.0", + "@node-rs/crc32-darwin-arm64": "^1.1.0", + "@node-rs/crc32-darwin-x64": "^1.1.0", + "@node-rs/crc32-linux-arm-gnueabihf": "^1.1.0", + "@node-rs/crc32-linux-arm64-gnu": "^1.1.0", + "@node-rs/crc32-linux-x64-gnu": "^1.1.0", + "@node-rs/crc32-linux-x64-musl": "^1.1.0", + "@node-rs/crc32-win32-ia32-msvc": "^1.1.0", + "@node-rs/crc32-win32-x64-msvc": "^1.1.0", + "@node-rs/helper": "^1.1.0" + } + }, + "@node-rs/crc32-android-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.1.0.tgz", + "integrity": "sha512-DXcsyCmTXEHr+aCocDtrSTBkIghvQ87rZNxQrThpNU3RgCAvCtNCPJw4F8/Il5MXN3c+xzl/ZglN03USqSPmAA==", + "optional": true + }, + "@node-rs/crc32-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-dE04JL+w4+V0YBw+nrnzw7U0c5yTtAWg1jelNuZl+4BWCFrkHpAmUR+dHiz2OhZvbKV7RApwDNmYbvG+ppYK0Q==", + "optional": true + }, + "@node-rs/crc32-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.1.0.tgz", + "integrity": "sha512-/nfj8EixjXc3iuyR5CybB2vOzQ23xjv/MrQiWtozcS2mLNsbMG/Ue0C9QLq4FQbL6HXEnhbrVbAQnByNurP4Ew==", + "optional": true + }, + "@node-rs/crc32-linux-arm-gnueabihf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.1.0.tgz", + "integrity": "sha512-RX7VTEKfM/KMLeRMw89vJdsdvxZafoHQrwUvR290vuHE2Zfqc10YQQMJvq0iU7IaKmgDAnYZtUPhSAv1FdbtFQ==", + "optional": true + }, + "@node-rs/crc32-linux-arm64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.1.0.tgz", + "integrity": "sha512-Age/YDyYhQEMSBZgHx4RhHXx6xcWNSGA3jDBu5NcBXo5dZZ2b3HAOjosdhfHqTGIrOdd+CAx3BqO5O46UiLU2Q==", + "optional": true + }, + "@node-rs/crc32-linux-x64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.1.0.tgz", + "integrity": "sha512-QUB3hkejwnziEyOT4zo51/qHEAW6YMs3eogQxOyB/IIkji8SwC1dgx94PC6MypBWSnjs2eAi0UiiZh6iK5+7kw==", + "optional": true + }, + "@node-rs/crc32-linux-x64-musl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.1.0.tgz", + "integrity": "sha512-avmN8ZU69+U1kUZ9CKjhpBcwL4LD29pg+sRJ4+zQSbqbAqOaMfWsvEemKymfOENrQJLR80azwKWfgxldP7/X3A==", + "optional": true + }, + "@node-rs/crc32-win32-ia32-msvc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.1.0.tgz", + "integrity": "sha512-91SMBA7836eubTR9sd2xCwYt6c2MZwBw8j0x+jt3bxn32opgcwL4n6O89lKpMRZO8k6S8An51hBs1nYBB/5Wwg==", + "optional": true + }, + "@node-rs/crc32-win32-x64-msvc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.1.0.tgz", + "integrity": "sha512-dqEQP+PxidHalhaEdat/54pGKx/aVIt7FDgWho5AEp2Wfc90aUdH4o1UX/sE4azDejo7eXc+kUHrTn3ZZWrRfw==", + "optional": true + }, + "@node-rs/helper": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.1.0.tgz", + "integrity": "sha512-r43YnnrY5JNzDuXJdW3sBJrKzvejvFmFWbiItUEoBJsaPzOIWFMhXB7i5j4c9EMXcFfxveF4l7hT+rLmwtjrVQ==", + "optional": true, + "requires": { + "@napi-rs/triples": "^1.0.2", + "tslib": "^2.1.0" + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -1125,6 +1213,12 @@ "is-number": "^7.0.0" } }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "optional": true + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", diff --git a/package.json b/package.json index ccbad9a2..6f905f59 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,9 @@ "tar": "^6.1.0", "yauzl": "^2.9.0" }, + "optionalDependencies": { + "@node-rs/crc32": "^1.1.0" + }, "keywords": [ "archive", "archiver",