nitro-patcher 1.0.0 → 1.1.0
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/browser.d.ts +12 -0
- package/dist/browser.js +978 -7
- package/dist/browser.js.LEGAL.txt +204 -0
- package/dist/browser.js.map +4 -4
- package/dist/{chunk-B7NTPBDX.js → chunk-ZQM3LT5L.js} +293 -1
- package/dist/chunk-ZQM3LT5L.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/nitro-patch-helper.d.ts +13 -1
- package/dist/nitro-patch-helper.js +3 -1
- package/package.json +3 -2
- package/src/browser.ts +17 -0
- package/src/nitro-patch-helper.ts +2 -0
- package/src/patch/create.ts +341 -0
- package/src/patch/xdelta3-LICENSE +201 -0
- package/dist/chunk-B7NTPBDX.js.map +0 -1
package/dist/browser.js
CHANGED
|
@@ -11101,7 +11101,7 @@ var require_lib = __commonJS({
|
|
|
11101
11101
|
module.exports.encodings = null;
|
|
11102
11102
|
module.exports.defaultCharUnicode = "\uFFFD";
|
|
11103
11103
|
module.exports.defaultCharSingleByte = "?";
|
|
11104
|
-
module.exports.encode = function
|
|
11104
|
+
module.exports.encode = function encode2(str, encoding, options) {
|
|
11105
11105
|
str = "" + (str || "");
|
|
11106
11106
|
var encoder = module.exports.getEncoder(encoding, options);
|
|
11107
11107
|
var res = encoder.write(str);
|
|
@@ -11223,6 +11223,184 @@ var require_lib = __commonJS({
|
|
|
11223
11223
|
}
|
|
11224
11224
|
});
|
|
11225
11225
|
|
|
11226
|
+
// node_modules/.pnpm/@limrun+xdelta3-wasm@0.2.0/node_modules/@limrun/xdelta3-wasm/dist/wasm-embedded.js
|
|
11227
|
+
var require_wasm_embedded = __commonJS({
|
|
11228
|
+
"node_modules/.pnpm/@limrun+xdelta3-wasm@0.2.0/node_modules/@limrun/xdelta3-wasm/dist/wasm-embedded.js"(exports) {
|
|
11229
|
+
"use strict";
|
|
11230
|
+
init_buffer();
|
|
11231
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11232
|
+
exports.xdelta3WasmBase64 = void 0;
|
|
11233
|
+
exports.xdelta3WasmBase64 = "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ogcBA38gACgCkAMiAQRAA0AgASgCBCECIAEoAgAiAwRAIAAoAkggAyAAKAJEEQEACyAAKAJIIAEgACgCRBEBACACIgENAAsLIAAoAqQBIgEEQCAAKAJIIAEgACgCRBEBAAsgACgCwAEiAQRAIAAoAkggASAAKAJEEQEACyAAKAK8ASIBBEAgACgCSCABIAAoAkQRAQALIAAoAuABIgEEQCAAKAJIIAEgACgCRBEBAAsgACgCxAEiAQRAIAAoAkggASAAKAJEEQEACyAAKALYAiIBBEADQCABKAIMIQIgASgCACIDBEAgACgCSCADIAAoAkQRAQALIAAoAkggASAAKAJEEQEAIAIiAQ0ACwsgACgC3AIiAQRAA0AgASgCDCECIAEoAgAiAwRAIAAoAkggAyAAKAJEEQEACyAAKAJIIAEgACgCRBEBACACIgENAAsLIAAoAuACIgEEQANAIAEoAgwhAiABKAIAIgMEQCAAKAJIIAMgACgCRBEBAAsgACgCSCABIAAoAkQRAQAgAiIBDQALCyAAKALkAiIBBEADQCABKAIMIQIgASgCACIDBEAgACgCSCADIAAoAkQRAQALIAAoAkggASAAKAJEEQEAIAIiAQ0ACwsgACgC1AIiAQRAA0AgASgCDCECIAEoAgAiAwRAIAAoAkggAyAAKAJEEQEACyAAKAJIIAEgACgCRBEBACACIgENAAsLIAAoAvABIgEEQCAAKAJIIAEgACgCRBEBAAsgACgC9AEiAQRAIAAoAkggASAAKAJEEQEACyAAKALMBCIBBEAgACgCSCABIAAoAkQRAQALIAAoAuwEIgEEQCAAKAJIIAEgACgCRBEBAAsgACgCjAUiAQRAIAAoAkggASAAKAJEEQEACyAAKAKoBCEBAkAgACgCrAQiAkUNACABIAJGDQAgACgCSCACIAAoAkQRAQAgACgCqAQhAQsgAQRAIAAoAkggASAAKAJEEQEACyAAKALAAiIBBEAgACgCSCABIAAoAkQRAQALIAAoAsgDIgEEQCAAKAJIIAEgACgCRBEBAAsgACgCvAMiAQRAIAAoAkggASAAKAJEEQEACyAAKAKoBSIBBEAgACgCSCABIAAoAkQRAQALIAAoAsAFIgEEQCAAKAJIIAEgACgCRBEBAAsgACgCzAUiAQRAIAAoAkggASAAKAJEEQEACyAAKALY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IAFBoA8pAgA3AoABQQAMBAsgAUGwDigCADYCoAEgAUGoDikCADcCmAEgAUGgDikCADcCkAEgAUGYDikCADcCiAEgAUGQDikCADcCgAFBAAwDCyABQdQOKAIANgKgASABQcwOKQIANwKYASABQcQOKQIANwKQASABQbwOKQIANwKIASABQbQOKQIANwKAAQtBAAwBC0HS9X4LDQEgAUGAgIACNgKAByABQYAHaiEDAkAgBUUNAEGAgIAgIQQgBUH///8fSw0AQYCAgAIhAgNAIAIiBEEBdCECIAQgBUkNAAsLIAFBADYCmAcgASAENgKMByABQv////8PNwKQByABIAMiBjYCJCADQgA3AhxBASEEIAMCfyADKAIAIgNpQQFGBEAgA2gMAQsDQCAEIgJBAXQhBCACIANJDQALIAYgAjYCACACaAsiCDYCJCAGQn8gCK2Gp0F/cyIHNgIoQQEhAgJAIAYoAgwiA2lBAUYEQCADIQQMAQsDQCACIgRBAXQhAiADIARLDQALCyAGQQE2AkAgBiAFIAdxNgI8IAYgBSAIdjYCOCAGQYCAASAEIARBgIABTRs2AgwgAQVBAAsPCyABEAUgASgCyAcQKSABKALMBxApIAEQKUEAC5MKARJ/IAAoAkgiA0UEQEHR9X4PCyADQdAHaiEFAkACQCADKALQByIERQ0AIAMoAtQHIAJHDQBBACEEDAELAkAgAygC4AciDUUNACADKALkByACRw0AIANB4AdqIQVBgICAAiEEDAELAkAgAygC8AciBkUNACADKAL0ByACRw0AIANB8AdqIQVBgICABCEEDAELAkAgAygCgAgiDkUNACADKAKECCACRw0AIANBgAhqIQVBgICABiEEDAELAkAgAygCkAgiB0UNACADKAKUCCACRw0AIANBkAhqIQVBgICACCEEDAELAkAgAygCoAgiD0UNACADKAKkCCACRw0AIANBoAhqIQVBgICACiEEDAELAkAgAygCsAgiCEUNACADKAK0CCACRw0AIANBsAhqIQVBgICADCEEDAELAkAgAygCwAgiEEUNACADKALECCACRw0AIANBwAhqIQVBgICADiEEDAELAkAgAygC0AgiCUUNACADKALUCCACRw0AIANB0AhqIQVBgICAECEEDAELAkAgAygC4AgiEUUNACADKALkCCACRw0AIANB4AhqIQVBgICAEiEEDAELAkAgAygC8AgiCkUNACADKAL0CCACRw0AIANB8AhqIQVBgICAFCEEDAELAkAgAygCgAkiEkUNACADKAKECSACRw0AIANBgAlqIQVBgICAFiEEDAELAkAgAygCkAkiC0UNACADKAKUCSACRw0AIANBkAlqIQVBgICAGCEEDAELAkAgAygCoAkiE0UNACADKAKkCSACRw0AIANBoAlqIQVBgICAGiEEDAELAkAgAygCsAkiDEUNACADKAK0CSACRw0AIANBsAlqIQVBgICAHCEEDAELAkAgAygCwAkiFEUNACADKALECSACRw0AIANBwAlqIQVBgICAHiEEDAELIARBAEdBA0ECIAYbIARFIA1FciIEG0EFQQQgBxsgDkUgBCAGRXJyIgQbQQdBBiAIGyAPRSAEIAdFcnIiBBtBCUEIIAkbIBBFIAQgCEVyciIEQQFxG0ELQQogChsgEUUgBCAJRXJyIgRBAXEbQQ1BDCALGyASRSAEIApFcnIiBEEBcRtBD0EOIAwbIBNFIAQgC0VyckEBcSIGGyEEAkAgBg0AIAxFDQAgFEUNAEEPQQ5BDUEMQQtBCkEJQQhBB0EGQQVBBEEDQQIgAygC7AcgAygC3AdJIgQgAygC/AcgBSAEQQR0aigCDEkbIgQgAygCjAggBSAEQQR0aigCDEkbIgQgAygCnAggBSAEQQR0aigCDEkbIgQgAygCrAggBSAEQQR0aigCDEkbIgQgAygCvAggBSAEQQR0aigCDEkbIgQgAygCzAggBSAEQQR0aigCDEkbIgQgAygC3AggBSAEQQR0aigCDEkbIgQgAygC7AggBSAEQQR0aigCDEkbIgQgAygC/AggBSAEQQR0aigCDEkbIgQgAygCjAkgBSAEQQR0aigCDEkbIgQgAygCnAkgBSAEQQR0aigCDEkbIgQgAygCrAkgBSAEQQR0aigCDEkbIgQgAygCvAkgBSAEQQR0aigCDEkbIgQgAygCzAkgBSAEQQR0aigCDEkbIQQLIAMgAjYC2AkgAyAENgLUCSABIAI2AjQgAEGxCDYCIEHX9X4PCyADIAMoAtAJQQFqIgA2AtAJIAUgADYCDCADKALMByEAIAEgAjYCECABIAAgBGo2AhggASAFKAIINgIUQQALHwAgAARAIAAQBSAAKALIBxApIAAoAswHECkgABApCwsRACAARQRAQQAPCyAAKALIBwspAQJ/AkAgAEUNACAAKALUCSICQQ9LDQAgACgCzAcgAkEWdGohAQsgAQsHAEGAgIACCyUBAXwCQCAARQ0AIAAoAtQJQQ9LDQAgACgC2AlBFnS4IQELIAELRwECfwJAIABFDQAgACgC1AlBD0sNAEGAgIACIAAoAsQHIgEgACgC2AlBFnQiAGsiAiACQYCAgAJPG0EAIAAgAUkbIQELIAELKwAgAARAIAIEQCAAIAAoAkxBEHI2AkwLIAAgATYCBCAAIAAoAsgHNgIACwvTLwEPfyAARQRAQdH1fg8LQQEhDyMAQSBrIgokAAJAAkACQAJ/AkACQCAAIgEoApwDBEAgAUG3CTYCIAwBCwJAAkACQAJAAkACQAJAAkAgASgC+AEOBwABAgMEBQYHCwJ/IAEoAkwhBQJAAkACQAJAAkAgASgCJCIABEAgASAAKAIMIAEoAowBbiABKAKIASABQagBahACIgINAQsgBUGAwABxRQRAIAEgASgCKCABKAKQASABQcwBahACIgINAQsgAUHYAmohBCABQegCaiEFAkAgASgC1AIiAgRAIAEgAigCDCIANgLUAgwBCyABKAJIQQFBECABKAJAEQAAIgJFDQMgASgCSEGAgAFBASABKAJAEQAAIgBFDQIgAkGAgAE2AgggAiAANgIAIAEoAtQCIQALIAJBADYCDCACQQA2AgQgBSACNgIAIAQgAjYCAAJAIAAEQCABIAAoAgwiAjYC1AIMAQtBASEDIAEoAkhBAUEQIAEoAkARAAAiAEUNAyABKAJIQYCAAUEBIAEoAkARAAAiAkUEQCAAIQIMAwsgAEGAgAE2AgggACACNgIAIAEoAtQCIQILIABBADYCDCAAQQA2AgQgASAANgLcAiABIAA2AuwCAkAgAgRAIAEgAigCDCIANgLUAgwBCyABKAJIQQFBECABKAJAEQAAIgJFBEBBAiEDDAQLIAEoAkhBgIABQQEgASgCQBEAACIARQRAQQIhAwwDCyACQYCAATYCCCACIAA2AgAgASgC1AIhAAsgAkEANgIMIAJBADYCBCABIAI2AuACIAEgAjYC8AICQCAABEAgASAAKAIMNgLUAgwBCyABKAJIQQFBECABKAJAEQAAIgJFBEBBAyEDDAQLIAEoAkhBgIABQQEgASgCQBEAACIARQRAQQMhAwwDCyACQYCAATYCCCACIAA2AgAgAiEACyAAQQA2AgwgAEEANgIEIAEgAUGEA2oiDjYCiAMgASAONgKEAyABIAFB/AJqIgI2AoADIAEgAjYC/AIgASAANgLkAiABIAA2AvQCIAEoAjQhAiABKAJIQQhBASABKAJAEQAAIgBFDQQgASgCSEEYIAIgASgCQBEAACIHRQRAIAFBgAg2AiAgAEEANgIAQTAMBgsgACAHNgIAIAAgASgCkAM2AgQgASAANgKQAwJAIAJFDQAgAkEDcSENQQAhA0EAIQAgAkEETwRAIAJBfHEhBQNAIAEoAogDIQQgASAHIABBGGxqIglBEGoiAjYCiAMgBCACNgIAIAkgBDYCFCAJIA42AhAgASgCiAMhBCABIAlBKGoiAjYCiAMgBCACNgIAIAkgBDYCLCAJIA42AiggASgCiAMhBCABIAlBQGsiAjYCiAMgBCACNgIAIAkgBDYCRCAJIA42AkAgASgCiAMhBCABIAlB2ABqIgI2AogDIAQgAjYCACAJIAQ2AlwgCSAONgJYIABBBGohACAGQQRqIgYgBUcNAAsgDUUNAQsDQCABKAKIAyEEIAEgByAAQRhsaiIFQRBqIgI2AogDIAQgAjYCACAFIAQ2AhQgBSAONgIQIABBAWohACADQQFqIgMgDUcNAAsLIAEgASgCpAUiAC0AATYC5AEgASAALQACNgLoASABIAEoApwFEQUANgKgBSABKALwASIABEAgASgCSCAAIAEoAkQRAQALIAEoAvQBIgAEQCABKAJIIAAgASgCRBEBAAsgASgC5AEiAARAIAEoAkggAEEEIAEoAkARAAAiAEUEQCABQQA2AvABDAYLIAEgADYC8AELQQAhAiABKALoASIARQ0AIAEoAkggAEEIdEEEIAEoAkARAAAiAEUEQCABQQA2AvQBDAULIAEgADYC9AELIAIMBAsgAUGACDYCICABKAJIIAIgASgCRBEBAAwBCyABQYAINgIgCyAFIANBAnQiAGpBADYCACAAIARqQQA2AgBBMAwBCyABQYAINgIgQTALIgINDCABQQE2AvgBCyABKAIARQRAQdn1fiECDAwLIAEoAsgCIgINCUEAIQIgASgCxAINCSABKAIEIAEoAihPDQogAS0ATEEQcQ0KDAkLAkAgASgCJEUNAAJAAkAgASgCmAIOAwABAQILIAEoAgQEQCABIAEoApwCEA0aIAFBAjYCmAIMAQsgAUEANgK0AiABQQM2ApgCCyABKAIERQ0AIAEQDiICDQsgASABKAKAAiABKAK0Amo2AoACCyABKAIEBEAgASABKAKEARECACICDQsLIAFBAzYC+AELIAFBARAMIgINCSABKAIEIgAgASgCiAIiAksEQCAKQQE6AAggCiACNgIMIAogACACazYCECABIApBCGoQDyICDQoLIAEoAowDIgAEQCABIAAgAC0AAhAQIgINCiABKAKMAyIFLQAAQQFHBEAgASgCiAMhAiABIAVBEGoiADYCiAMgAiAANgIAIAUgAjYCFCAFIAFBhANqNgIQCyABQQA2AowDCyABQQQ2AvgBCyABKAIkIgAEfyAAKAIcBUEAC0UhDiABKAJMIQ0CQCABKAIYDQAgASgCrAUhAyABKAKUAyEHIAFB6AJqIQgCQCABKALoAiIAKAIEIgQgACgCCEcEQCAAIQIMAQsCQCABKALUAiICBEAgASACKAIMNgLUAgwBCyABKAJIQQFBECABKAJAEQAAIgJFBEAgAUGACDYCIEEwIQIMDAsgASgCSEGAgAFBASABKAJAEQAAIgVFBEAgAUGACDYCICABKAJIIAIgASgCRBEBAEEwIQIMDAsgAkGAgAE2AgggAiAFNgIAC0EAIQQgAkEANgIEIAAgAjYCDCACQQA2AgwgCCACNgIACyACIARBAWo2AgQgAigCACAEakHWAToAAAJAIAgoAgAiACgCBCIEIAAoAghHBEAgACECDAELAkAgASgC1AIiAgRAIAEgAigCDDYC1AIMAQsgASgCSEEBQRAgASgCQBEAACICRQRAIAFBgAg2AiBBMCECDAwLIAEoAkhBgIABQQEgASgCQBEAACIFRQRAIAFBgAg2AiAgASgCSCACIAEoAkQRAQBBMCECDAwLIAJBgIABNgIIIAIgBTYCAAtBACEEIAJBADYCBCAAIAI2AgwgAkEANgIMIAggAjYCAAsgAiAEQQFqNgIEIAIoAgAgBGpBwwE6AAACQCAIKAIAIgAoAgQiBCAAKAIIRwRAIAAhAgwBCwJAIAEoAtQCIgIEQCABIAIoAgw2AtQCDAELIAEoAkhBAUEQIAEoAkARAAAiAkUEQCABQYAINgIgQTAhAgwMCyABKAJIQYCAAUEBIAEoAkARAAAiBUUEQCABQYAINgIgIAEoAkggAiABKAJEEQEAQTAhAgwMCyACQYCAATYCCCACIAU2AgALQQAhBCACQQA2AgQgACACNgIMIAJBADYCDCAIIAI2AgALIAIgBEEBajYCBCACKAIAIARqQcQBOgAAIAEgCEEAEAMiAg0JIAEgCCADQQBHIgBBBHIgACAHGxADIgINCSAHRQ0AIAEgCCABKAKYAxARIgINCSABIAggASgClAMgASgCmAMQBCICDQkLIAFB6AJqIQgCQCABKALoAiIAKAIEIgMgACgCCEcEQCAAIQIMAQsCQCABKALUAiICBEAgASACKAIMNgLUAgwBCyABKAJIQQFBECABKAJAEQAAIgJFBEAgAUGACDYCIEEwIQIMCwsgASgCSEGAgAFBASABKAJAEQAAIgVFBEAgAUGACDYCICABKAJIIAIgASgCRBEBAEEwIQIMCwsgAkGAgAE2AgggAiAFNgIAC0EAIQMgAkEANgIEIAAgAjYCDCACQQA2AgwgCCACNgIACyACIANBAWo2AgQgAigCACADaiAORSIAQQRyIAAgDUGAiAJxIg0bOgAAIAAEQCABKAIkKAIcIQJBCiEAA0AgACIFQQFrIgAgCkEIamoiBiACQYABcjoAACACQQd2IgINAAsgCiAKLQARQf8AcToAEUELIAVrIQQgASgC6AIiAigCBCEDA0AgAigCCCIHIANGBEACfyABKALUAiIABEAgASAAKAIMNgLUAiAAKAIIDAELIAEoAkhBAUEQIAEoAkARAAAiAEUEQCABQYAINgIgQTAhAgwNCyABKAJIQYCAAUEBIAEoAkARAAAiBUUEQCABQYAINgIgIAEoAkggACABKAJEEQEAQTAhAgwNCyAAQYCAATYCCCAAIAU2AgBBgIABCyEHQQAhAyAAQQA2AgQgAiAANgIMIABBADYCDCAIIAA2AgAgACECCyAHIANrIgAgBCAAIARJGyIABEAgAigCACADaiAGIAD8CgAACyACIAIoAgQgAGoiAzYCBCAAIAZqIQYgBCAAayIEDQALIAEoAiQoAiAhAkEKIQADQCAAIgVBAWsiACAKQQhqaiIGIAJBgAFyOgAAIAJBB3YiAg0ACyAKIAotABFB/wBxOgARQQsgBWshBCAIKAIAIgIoAgQhAwNAIAIoAggiByADRgRAAn8gASgC1AIiAARAIAEgACgCDDYC1AIgACgCCAwBCyABKAJIQQFBECABKAJAEQAAIgBFBEAgAUGACDYCIEEwIQIMDQsgASgCSEGAgAFBASABKAJAEQAAIgVFBEAgAUGACDYCICABKAJIIAAgASgCRBEBAEEwIQIMDQsgAEGAgAE2AgggACAFNgIAQYCAAQshB0EAIQMgAEEANgIEIAIgADYCDCAAQQA2AgwgCCAANgIAIAAhAgsgByADayIAIAQgACAESRsiAARAIAIoAgAgA2ogBiAA/AoAAAsgAiACKAIEIABqIgM2AgQgACAGaiEGIAQgAGsiBA0ACwsgASgC3AIiAgRAA0AgAigCBCALaiELIAIoAgwiAg0ACwsgASgC4AIiAgRAA0AgAigCBCAMaiEMIAIoAgwiAg0ACwsgASgCBCEHIAEoAuQCIgIEQANAIAIoAgQgCWohCSACKAIMIgINAAsLQQEhAgJ/QQEgB0GAAUkNABpBAiAHQYCAAUkNABpBAyAHQYCAgAFJDQAaQQRBBSAHQYCAgIABSRsLIQUCQCALQYABSQ0AIAtBgIABSQRAQQIhAgwBCyALQYCAgAFJBEBBAyECDAELQQRBBSALQYCAgIABSRshAgtBASEDAn9BASAMQYABSQ0AGkECIAxBgIABSQ0AGkEDIAxBgICAAUkNABpBBEEFIAxBgICAgAFJGwshAAJAIAlBgAFJDQAgCUGAgAFJBEBBAiEDDAELIAlBgICAAUkEQEEDIQMMAQtBBEEFIAlBgICAgAFJGyEDCyALQQVBASANG2ogDGogCWogBWogAmogAGogA2ohAkEKIQADQCAAIgVBAWsiACAKQQhqaiIGIAJBgAFyOgAAIAJBB3YiAg0ACyAKIAotABFB/wBxOgARQQsgBWshBCABKALoAiICKAIEIQMDQCACKAIIIgUgA0YEQAJ/IAEoAtQCIgAEQCABIAAoAgw2AtQCIAAoAggMAQsgASgCSEEBQRAgASgCQBEAACIARQRAIAFBgAg2AiBBMCECDAwLIAEoAkhBgIABQQEgASgCQBEAACIFRQRAIAFBgAg2AiAgASgCSCAAIAEoAkQRAQBBMCECDAwLIABBgIABNgIIIAAgBTYCAEGAgAELIQVBACEDIABBADYCBCACIAA2AgwgAEEANgIMIAggADYCACAAIQILIAUgA2siACAEIAAgBEkbIgAEQCACKAIAIANqIAYgAPwKAAALIAIgAigCBCAAaiIDNgIEIAAgBmohBiAEIABrIgQNAAtBCiECA0AgAiIAQQFrIgIgCkEIamoiBiAHQYABcjoAACAHQQd2IgcNAAsgCiAKLQARQf8AcToAEUELIABrIQQgCCgCACICKAIEIQMDQCACKAIIIgcgA0YEQAJ/IAEoAtQCIgAEQCABIAAoAgw2AtQCIAAoAggMAQsgASgCSEEBQRAgASgCQBEAACIARQRAIAFBgAg2AiBBMCECDAwLIAEoAkhBgIABQQEgASgCQBEAACIFRQRAIAFBgAg2AiAgASgCSCAAIAEoAkQRAQBBMCECDAwLIABBgIABNgIIIAAgBTYCAEGAgAELIQdBACEDIABBADYCBCACIAA2AgwgAEEANgIMIAggADYCACAAIQILIAcgA2siACAEIAAgBEkbIgAEQCACKAIAIANqIAYgAPwKAAALIAIgAigCBCAAaiIDNgIEIAAgBmohBiAEIABrIgQNAAsgASAIQQAQAyICDQggASAIIAsQESICDQggASAIIAwQESICDQggASAIIAkQESICDQggDQRAIAoCfyABLQBNQQRxBEAgASgCACEDQQAhBkEBIQsgASgCBCICBH8DQCACQbArIAIgAkGwK08bIgBrIQUCQCACQRBPBEADQCALIAMtAABqIgIgBmogAiADLQABaiICaiACIAMtAAJqIgJqIAIgAy0AA2oiAmogAiADLQAEaiICaiACIAMtAAVqIgJqIAIgAy0ABmoiAmogAiADLQAHaiICaiACIAMtAAhqIgJqIAIgAy0ACWoiAmogAiADLQAKaiICaiACIAMtAAtqIgJqIAIgAy0ADGoiAmogAiADLQANaiICaiACIAMtAA5qIgJqIAIgAy0AD2oiC2ohBiAAIgJBEGshACADQRBqIQMgAkEfSw0ACyAARQ0BC0EAIQwgAyECIAAhBCAAQQNxIg0EQANAIARBAWshBCALIAItAABqIgsgBmohBiACQQFqIQIgDEEBaiIMIA1HDQALCyAAQQFrQQNPBEADQCALIAItAABqIg4gAi0AAWoiByACLQACaiINIAItAANqIgsgDSAHIAYgDmpqamohBiACQQRqIQIgBEEEayIEDQALCyAAIANqIQMLIAZB8f8DcCEGIAtB8f8DcCELIAUiAg0ACyAGQRB0IAtyBUEBCwwBCyABKAL4AgsiAEEQeCAAc0GA/oN4cUEIdiAAQQh4czYACCABIAggCkEIakEEEAQiAg0JCyABIAEoAtgCIgI2AtACIAEoAugCIAEoAtwCNgIMIAFBADYC3AIgASgC7AIgASgC4AI2AgwgAUEANgLgAiABKALwAiABKALkAjYCDCABQQA2AuQCQQAMBQsgASgCEEUNAyABQZMINgIgDAILIAEQCiABQQE2AvgBIAEgASgCGEEBajYCGCABKALIAiICDQRB2fV+IQIMBgsgAUH2CjYCIAtB0vV+IQIMBAtBAQshAANAAkAgAEUEQCABQQU2AvgBIAEgAigCADYCDCABIAIoAgQiADYCECABIAAgASgCHGo2AhwgAEUNAUHY9X4hAgwFCyABIAEoAtACKAIMIgI2AtACIAJFBEAgAUEGNgL4ASABIAEoAgggASgCBGo2AghB1PV+IQIMBQtBACEADAELQQEhAAwACwALIAEoAsACIgBFBEAgASgCSCABKAIoQQEgASgCQBEAACIARQRAIAFBADYCwAIgAUGACDYCIEEwIQIMAwsgASAANgLAAiABKALIAiECCwJAIAJFBEAgASgCxAIhAwwBCyABKALMAiIFBEAgACACIAX8CgAACyABQQA2AsgCIAEgASgCzAIiAzYCxAIgASgCwAIhAAsgASgCKCADayIFIAEoAgQiAiACIAVLGyIFBEAgACADaiABKAIAIAX8CgAACyABIAEoAsQCIAVqIgI2AsQCAkAgBSABKAIEIgBJBEAgASAAIAVrNgLMAiABIAEoAgAgBWo2AsgCDAELIAIgASgCKE8NACABLQBMQRBxDQBB2fV+IQIMAgsgAUEANgLEAiABIAI2AgQgASABKALAAjYCAAsgASgC5AEiAARAIABBAnQiAARAIAEoAvABQQAgAPwLAAsgAUEANgLsAQsCQCABKALoASIARQ0AIABBCnQiAEUNACABKAL0AUEAIAD8CwALIAFBADYCiAIgAUKAgICAwAA3AoACIAFBAjYC+AFB1fV+IQILIApBIGokAAJAAkACQAJAAkACQCACIgBBrIoBag4GBQUDAQAEAgtBAg8LQQMPCyAARQ0CCyABIAA2AuAJIAEgASgCICICBH8gAgUgAEGyigFqIgJBC00E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QTA2AgBBfw8LQfQPIAA2AgAgAgsGACAAJAALBAAjAAsLgggCAEGACAvyB291dCBvZiBtZW1vcnkAc2xvdwBtaXNzZWQgY2FsbCB0byBjb25zdW1lIG91dHB1dABnZXRibGsgc291cmNlIGlucHV0AGZhc3Rlc3QAZmFzdABkZWZhdWx0AHNvZnQAdG9vIG1hbnkgc2Vjb25kYXJ5IGNvbXByZXNzb3IgdHlwZXMgc2V0AGZhc3RlcgBzcHJldnN6IGlzIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvAGVuY29kZXIvZGVjb2RlciB0cmFuc2l0aW9uAHVuYXZhaWxhYmxlIHNlY29uZGFyeSBjb21wcmVzc29yOiBGR0sgQWRhcHRpdmUgSHVmZm1hbgB1bmF2YWlsYWJsZSBzZWNvbmRhcnkgY29tcHJlc3NvcjogREpXIFN0YXRpYyBIdWZmbWFuAGludmFsaWQgc29mdCBzdHJpbmctbWF0Y2ggY29uZmlnAGVuY29kaW5nIGlzIGluY29tcGxldGUAaW52YWxpZCBzdGF0ZQBYRDNfU0VDIGZsYWdzIHJlcXVpcmUgYSBzZWNvbmRhcnkgY29tcHJlc3NvciB0eXBlAGludmFsaWQgc3RyaW5nIG1hdGNoIGNvbmZpZyB0eXBlAGludmFsaWQgeGRlbHRhMyBlbmNvZGVyIGhhbmRsZQBlb2YgaW4gZGVjb2RlAFhEM19PVVRQVVQAWEQzX0lOVkFMSURfSU5QVVQAWEQzX0lOUFVUAFhEM19XSU5TVEFSVABYRDNfR09USEVBREVSAFhEM19JTlRFUk5BTABYRDNfR0VUU1JDQkxLAFhEM19UT09GQVJCQUNLAFhEM19XSU5GSU5JU0gAWEQzX05PU0VDT05EAFhEM19JTlZBTElEAFhEM19VTklNUExFTUVOVEVEAHVuYXZhaWxhYmxlIHNlY29uZGFyeSBjb21wcmVzc29yOiBMWk1BABEEAw8EBgQBBAQGowMGrwMGuwMGxwMG0wMG3wME6wEE7wEE8wEE9wEE+AEE+QEE+gEE+wEE/AEE/QEE/gEE/wFSBAAABQAAAAkAAAADAAAABAAAAAgAAAACAAAAJAAAAEYAAAAOBAAABgAAAAkAAAACAAAABAAAACwAAAANAAAAWgAAAEYAAABFBAAABwAAAAkAAAAaAAAABAAAAAEAAAABAAAABgAAAAYAAACHBAAACAAAAAkAAAAPAAAABAAAAAEAAAABAAAAEgAAABIAAABNBAAACQAAAAkAAAAIAAAABAAAAAQAAAABAAAAEgAAACMAAACXBgAAfgYAAA8GAACLBgAARgYAAGEGAABwBgAAKwYAADgGAABTBgAABAYAACEGAEH1DwsCDgE=";
|
|
11234
|
+
}
|
|
11235
|
+
});
|
|
11236
|
+
|
|
11237
|
+
// node_modules/.pnpm/@limrun+xdelta3-wasm@0.2.0/node_modules/@limrun/xdelta3-wasm/dist/index.js
|
|
11238
|
+
var require_dist = __commonJS({
|
|
11239
|
+
"node_modules/.pnpm/@limrun+xdelta3-wasm@0.2.0/node_modules/@limrun/xdelta3-wasm/dist/index.js"(exports) {
|
|
11240
|
+
"use strict";
|
|
11241
|
+
init_buffer();
|
|
11242
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11243
|
+
exports.encode = encode2;
|
|
11244
|
+
var wasm_embedded_1 = require_wasm_embedded();
|
|
11245
|
+
var STATUS_NEED_INPUT = 1;
|
|
11246
|
+
var STATUS_HAVE_OUTPUT = 2;
|
|
11247
|
+
var STATUS_NEED_SOURCE_BLOCK = 3;
|
|
11248
|
+
var STATUS_CONTINUE = 4;
|
|
11249
|
+
var wasmModuleReady = null;
|
|
11250
|
+
var wasmImports = {
|
|
11251
|
+
env: {
|
|
11252
|
+
emscripten_notify_memory_growth: () => void 0
|
|
11253
|
+
}
|
|
11254
|
+
};
|
|
11255
|
+
function base64ToBytes(base64) {
|
|
11256
|
+
const maybeBuffer = globalThis.Buffer;
|
|
11257
|
+
if (maybeBuffer) {
|
|
11258
|
+
return new Uint8Array(maybeBuffer.from(base64, "base64"));
|
|
11259
|
+
}
|
|
11260
|
+
const binary = globalThis.atob(base64);
|
|
11261
|
+
const out = new Uint8Array(binary.length);
|
|
11262
|
+
for (let i2 = 0; i2 < binary.length; i2 += 1) {
|
|
11263
|
+
out[i2] = binary.charCodeAt(i2);
|
|
11264
|
+
}
|
|
11265
|
+
return out;
|
|
11266
|
+
}
|
|
11267
|
+
function base64ToArrayBuffer(base64) {
|
|
11268
|
+
const bytes2 = base64ToBytes(base64);
|
|
11269
|
+
const out = new Uint8Array(bytes2.byteLength);
|
|
11270
|
+
out.set(bytes2);
|
|
11271
|
+
return out.buffer;
|
|
11272
|
+
}
|
|
11273
|
+
async function loadWasmModule() {
|
|
11274
|
+
if (!wasmModuleReady) {
|
|
11275
|
+
wasmModuleReady = WebAssembly.compile(base64ToArrayBuffer(wasm_embedded_1.xdelta3WasmBase64));
|
|
11276
|
+
}
|
|
11277
|
+
return await wasmModuleReady;
|
|
11278
|
+
}
|
|
11279
|
+
async function instantiateWasm() {
|
|
11280
|
+
const wasmModule = await loadWasmModule();
|
|
11281
|
+
const instance = await WebAssembly.instantiate(wasmModule, wasmImports);
|
|
11282
|
+
const exports2 = instance.exports;
|
|
11283
|
+
exports2._initialize?.();
|
|
11284
|
+
return exports2;
|
|
11285
|
+
}
|
|
11286
|
+
function memoryBytes(wasm, ptr, len) {
|
|
11287
|
+
return new Uint8Array(wasm.memory.buffer, ptr, len);
|
|
11288
|
+
}
|
|
11289
|
+
function copyFromMemory(wasm, ptr, len) {
|
|
11290
|
+
const out = new Uint8Array(len);
|
|
11291
|
+
out.set(memoryBytes(wasm, ptr, len));
|
|
11292
|
+
return out;
|
|
11293
|
+
}
|
|
11294
|
+
function readCString(wasm, ptr) {
|
|
11295
|
+
if (ptr === 0) {
|
|
11296
|
+
return "";
|
|
11297
|
+
}
|
|
11298
|
+
const bytes2 = new Uint8Array(wasm.memory.buffer);
|
|
11299
|
+
let end = ptr;
|
|
11300
|
+
while (end < bytes2.length && bytes2[end] !== 0) {
|
|
11301
|
+
end += 1;
|
|
11302
|
+
}
|
|
11303
|
+
return new TextDecoder().decode(bytes2.subarray(ptr, end));
|
|
11304
|
+
}
|
|
11305
|
+
function errorMessage2(wasm, handle, code) {
|
|
11306
|
+
const message = readCString(wasm, wasm.xd3w_errmsg(handle));
|
|
11307
|
+
return new Error(message ? `xdelta3 encode failed: ${message} (code=${code})` : `xdelta3 encode failed (code=${code})`);
|
|
11308
|
+
}
|
|
11309
|
+
async function* drainEncoder(wasm, handle, source) {
|
|
11310
|
+
for (; ; ) {
|
|
11311
|
+
const status = wasm.xd3w_step(handle);
|
|
11312
|
+
switch (status) {
|
|
11313
|
+
case STATUS_NEED_INPUT:
|
|
11314
|
+
return;
|
|
11315
|
+
case STATUS_HAVE_OUTPUT: {
|
|
11316
|
+
const len = wasm.xd3w_output_len(handle);
|
|
11317
|
+
if (len > 0) {
|
|
11318
|
+
const ptr = wasm.xd3w_output_ptr(handle);
|
|
11319
|
+
if (ptr === 0) {
|
|
11320
|
+
throw new Error("xdelta3 encoder produced output without a pointer");
|
|
11321
|
+
}
|
|
11322
|
+
yield copyFromMemory(wasm, ptr, len);
|
|
11323
|
+
}
|
|
11324
|
+
wasm.xd3w_consume_output(handle);
|
|
11325
|
+
break;
|
|
11326
|
+
}
|
|
11327
|
+
case STATUS_NEED_SOURCE_BLOCK: {
|
|
11328
|
+
const sourcePtr = wasm.xd3w_source_ptr(handle);
|
|
11329
|
+
if (sourcePtr === 0) {
|
|
11330
|
+
throw new Error("xdelta3 encoder did not provide a source buffer");
|
|
11331
|
+
}
|
|
11332
|
+
const offset = wasm.xd3w_source_request_offset(handle);
|
|
11333
|
+
const maxLen = wasm.xd3w_source_request_len(handle);
|
|
11334
|
+
if (!Number.isFinite(offset) || offset < 0 || maxLen < 0) {
|
|
11335
|
+
throw new Error(`xdelta3 encoder requested invalid source range: offset=${offset} len=${maxLen}`);
|
|
11336
|
+
}
|
|
11337
|
+
const sourceView = memoryBytes(wasm, sourcePtr, maxLen);
|
|
11338
|
+
const bytesRead = maxLen === 0 ? 0 : await source.read(offset, sourceView);
|
|
11339
|
+
if (!Number.isInteger(bytesRead) || bytesRead < 0 || bytesRead > maxLen) {
|
|
11340
|
+
throw new Error(`source reader returned invalid byte count: ${bytesRead}`);
|
|
11341
|
+
}
|
|
11342
|
+
wasm.xd3w_provide_source(handle, bytesRead);
|
|
11343
|
+
break;
|
|
11344
|
+
}
|
|
11345
|
+
case STATUS_CONTINUE:
|
|
11346
|
+
break;
|
|
11347
|
+
default:
|
|
11348
|
+
throw errorMessage2(wasm, handle, status);
|
|
11349
|
+
}
|
|
11350
|
+
}
|
|
11351
|
+
}
|
|
11352
|
+
async function* feedChunk(wasm, handle, source, chunk, isFinalChunk) {
|
|
11353
|
+
const inputPtr = wasm.xd3w_input_buf(handle);
|
|
11354
|
+
const inputCap = wasm.xd3w_input_cap();
|
|
11355
|
+
if (inputPtr === 0 || inputCap <= 0) {
|
|
11356
|
+
throw new Error("xdelta3 encoder did not provide an input buffer");
|
|
11357
|
+
}
|
|
11358
|
+
if (chunk.byteLength === 0) {
|
|
11359
|
+
if (isFinalChunk) {
|
|
11360
|
+
wasm.xd3w_avail_input(handle, 0, 1);
|
|
11361
|
+
yield* drainEncoder(wasm, handle, source);
|
|
11362
|
+
}
|
|
11363
|
+
return;
|
|
11364
|
+
}
|
|
11365
|
+
for (let offset = 0; offset < chunk.byteLength; offset += inputCap) {
|
|
11366
|
+
const end = Math.min(offset + inputCap, chunk.byteLength);
|
|
11367
|
+
const segment = chunk.subarray(offset, end);
|
|
11368
|
+
memoryBytes(wasm, inputPtr, segment.byteLength).set(segment);
|
|
11369
|
+
const isFinalSegment = isFinalChunk && end === chunk.byteLength;
|
|
11370
|
+
wasm.xd3w_avail_input(handle, segment.byteLength, isFinalSegment ? 1 : 0);
|
|
11371
|
+
yield* drainEncoder(wasm, handle, source);
|
|
11372
|
+
}
|
|
11373
|
+
}
|
|
11374
|
+
async function* encode2(target, source) {
|
|
11375
|
+
const wasm = await instantiateWasm();
|
|
11376
|
+
const handle = wasm.xd3w_new(source.size);
|
|
11377
|
+
if (handle === 0) {
|
|
11378
|
+
throw new Error("failed to allocate xdelta3 encoder");
|
|
11379
|
+
}
|
|
11380
|
+
try {
|
|
11381
|
+
let pending = null;
|
|
11382
|
+
for await (const chunk of target) {
|
|
11383
|
+
if (pending) {
|
|
11384
|
+
yield* feedChunk(wasm, handle, source, pending, false);
|
|
11385
|
+
}
|
|
11386
|
+
pending = chunk;
|
|
11387
|
+
}
|
|
11388
|
+
if (pending) {
|
|
11389
|
+
yield* feedChunk(wasm, handle, source, pending, true);
|
|
11390
|
+
} else {
|
|
11391
|
+
yield* feedChunk(wasm, handle, source, new Uint8Array(0), true);
|
|
11392
|
+
}
|
|
11393
|
+
const closeRet = wasm.xd3w_close(handle);
|
|
11394
|
+
if (closeRet !== 0) {
|
|
11395
|
+
throw errorMessage2(wasm, handle, closeRet);
|
|
11396
|
+
}
|
|
11397
|
+
} finally {
|
|
11398
|
+
wasm.xd3w_free(handle);
|
|
11399
|
+
}
|
|
11400
|
+
}
|
|
11401
|
+
}
|
|
11402
|
+
});
|
|
11403
|
+
|
|
11226
11404
|
// src/browser.ts
|
|
11227
11405
|
init_buffer();
|
|
11228
11406
|
|
|
@@ -12216,7 +12394,9 @@ var fdt = new u82(32);
|
|
|
12216
12394
|
for (i = 0; i < 32; ++i)
|
|
12217
12395
|
fdt[i] = 5;
|
|
12218
12396
|
var i;
|
|
12397
|
+
var flm = /* @__PURE__ */ hMap(flt, 9, 0);
|
|
12219
12398
|
var flrm = /* @__PURE__ */ hMap(flt, 9, 1);
|
|
12399
|
+
var fdm = /* @__PURE__ */ hMap(fdt, 5, 0);
|
|
12220
12400
|
var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);
|
|
12221
12401
|
var max = function(a) {
|
|
12222
12402
|
var m = a[0];
|
|
@@ -12412,7 +12592,360 @@ var inflt = function(dat, st, buf, dict) {
|
|
|
12412
12592
|
} while (!final);
|
|
12413
12593
|
return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
|
|
12414
12594
|
};
|
|
12595
|
+
var wbits = function(d, p, v) {
|
|
12596
|
+
v <<= p & 7;
|
|
12597
|
+
var o = p / 8 | 0;
|
|
12598
|
+
d[o] |= v;
|
|
12599
|
+
d[o + 1] |= v >> 8;
|
|
12600
|
+
};
|
|
12601
|
+
var wbits16 = function(d, p, v) {
|
|
12602
|
+
v <<= p & 7;
|
|
12603
|
+
var o = p / 8 | 0;
|
|
12604
|
+
d[o] |= v;
|
|
12605
|
+
d[o + 1] |= v >> 8;
|
|
12606
|
+
d[o + 2] |= v >> 16;
|
|
12607
|
+
};
|
|
12608
|
+
var hTree = function(d, mb) {
|
|
12609
|
+
var t = [];
|
|
12610
|
+
for (var i2 = 0; i2 < d.length; ++i2) {
|
|
12611
|
+
if (d[i2])
|
|
12612
|
+
t.push({ s: i2, f: d[i2] });
|
|
12613
|
+
}
|
|
12614
|
+
var s = t.length;
|
|
12615
|
+
var t2 = t.slice();
|
|
12616
|
+
if (!s)
|
|
12617
|
+
return { t: et, l: 0 };
|
|
12618
|
+
if (s == 1) {
|
|
12619
|
+
var v = new u82(t[0].s + 1);
|
|
12620
|
+
v[t[0].s] = 1;
|
|
12621
|
+
return { t: v, l: 1 };
|
|
12622
|
+
}
|
|
12623
|
+
t.sort(function(a, b) {
|
|
12624
|
+
return a.f - b.f;
|
|
12625
|
+
});
|
|
12626
|
+
t.push({ s: -1, f: 25001 });
|
|
12627
|
+
var l = t[0], r = t[1], i0 = 0, i1 = 1, i22 = 2;
|
|
12628
|
+
t[0] = { s: -1, f: l.f + r.f, l, r };
|
|
12629
|
+
while (i1 != s - 1) {
|
|
12630
|
+
l = t[t[i0].f < t[i22].f ? i0++ : i22++];
|
|
12631
|
+
r = t[i0 != i1 && t[i0].f < t[i22].f ? i0++ : i22++];
|
|
12632
|
+
t[i1++] = { s: -1, f: l.f + r.f, l, r };
|
|
12633
|
+
}
|
|
12634
|
+
var maxSym = t2[0].s;
|
|
12635
|
+
for (var i2 = 1; i2 < s; ++i2) {
|
|
12636
|
+
if (t2[i2].s > maxSym)
|
|
12637
|
+
maxSym = t2[i2].s;
|
|
12638
|
+
}
|
|
12639
|
+
var tr = new u16(maxSym + 1);
|
|
12640
|
+
var mbt = ln(t[i1 - 1], tr, 0);
|
|
12641
|
+
if (mbt > mb) {
|
|
12642
|
+
var i2 = 0, dt = 0;
|
|
12643
|
+
var lft = mbt - mb, cst = 1 << lft;
|
|
12644
|
+
t2.sort(function(a, b) {
|
|
12645
|
+
return tr[b.s] - tr[a.s] || a.f - b.f;
|
|
12646
|
+
});
|
|
12647
|
+
for (; i2 < s; ++i2) {
|
|
12648
|
+
var i2_1 = t2[i2].s;
|
|
12649
|
+
if (tr[i2_1] > mb) {
|
|
12650
|
+
dt += cst - (1 << mbt - tr[i2_1]);
|
|
12651
|
+
tr[i2_1] = mb;
|
|
12652
|
+
} else
|
|
12653
|
+
break;
|
|
12654
|
+
}
|
|
12655
|
+
dt >>= lft;
|
|
12656
|
+
while (dt > 0) {
|
|
12657
|
+
var i2_2 = t2[i2].s;
|
|
12658
|
+
if (tr[i2_2] < mb)
|
|
12659
|
+
dt -= 1 << mb - tr[i2_2]++ - 1;
|
|
12660
|
+
else
|
|
12661
|
+
++i2;
|
|
12662
|
+
}
|
|
12663
|
+
for (; i2 >= 0 && dt; --i2) {
|
|
12664
|
+
var i2_3 = t2[i2].s;
|
|
12665
|
+
if (tr[i2_3] == mb) {
|
|
12666
|
+
--tr[i2_3];
|
|
12667
|
+
++dt;
|
|
12668
|
+
}
|
|
12669
|
+
}
|
|
12670
|
+
mbt = mb;
|
|
12671
|
+
}
|
|
12672
|
+
return { t: new u82(tr), l: mbt };
|
|
12673
|
+
};
|
|
12674
|
+
var ln = function(n, l, d) {
|
|
12675
|
+
return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;
|
|
12676
|
+
};
|
|
12677
|
+
var lc = function(c) {
|
|
12678
|
+
var s = c.length;
|
|
12679
|
+
while (s && !c[--s])
|
|
12680
|
+
;
|
|
12681
|
+
var cl = new u16(++s);
|
|
12682
|
+
var cli = 0, cln = c[0], cls = 1;
|
|
12683
|
+
var w = function(v) {
|
|
12684
|
+
cl[cli++] = v;
|
|
12685
|
+
};
|
|
12686
|
+
for (var i2 = 1; i2 <= s; ++i2) {
|
|
12687
|
+
if (c[i2] == cln && i2 != s)
|
|
12688
|
+
++cls;
|
|
12689
|
+
else {
|
|
12690
|
+
if (!cln && cls > 2) {
|
|
12691
|
+
for (; cls > 138; cls -= 138)
|
|
12692
|
+
w(32754);
|
|
12693
|
+
if (cls > 2) {
|
|
12694
|
+
w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);
|
|
12695
|
+
cls = 0;
|
|
12696
|
+
}
|
|
12697
|
+
} else if (cls > 3) {
|
|
12698
|
+
w(cln), --cls;
|
|
12699
|
+
for (; cls > 6; cls -= 6)
|
|
12700
|
+
w(8304);
|
|
12701
|
+
if (cls > 2)
|
|
12702
|
+
w(cls - 3 << 5 | 8208), cls = 0;
|
|
12703
|
+
}
|
|
12704
|
+
while (cls--)
|
|
12705
|
+
w(cln);
|
|
12706
|
+
cls = 1;
|
|
12707
|
+
cln = c[i2];
|
|
12708
|
+
}
|
|
12709
|
+
}
|
|
12710
|
+
return { c: cl.subarray(0, cli), n: s };
|
|
12711
|
+
};
|
|
12712
|
+
var clen = function(cf, cl) {
|
|
12713
|
+
var l = 0;
|
|
12714
|
+
for (var i2 = 0; i2 < cl.length; ++i2)
|
|
12715
|
+
l += cf[i2] * cl[i2];
|
|
12716
|
+
return l;
|
|
12717
|
+
};
|
|
12718
|
+
var wfblk = function(out, pos, dat) {
|
|
12719
|
+
var s = dat.length;
|
|
12720
|
+
var o = shft(pos + 2);
|
|
12721
|
+
out[o] = s & 255;
|
|
12722
|
+
out[o + 1] = s >> 8;
|
|
12723
|
+
out[o + 2] = out[o] ^ 255;
|
|
12724
|
+
out[o + 3] = out[o + 1] ^ 255;
|
|
12725
|
+
for (var i2 = 0; i2 < s; ++i2)
|
|
12726
|
+
out[o + i2 + 4] = dat[i2];
|
|
12727
|
+
return (o + 4 + s) * 8;
|
|
12728
|
+
};
|
|
12729
|
+
var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
|
|
12730
|
+
wbits(out, p++, final);
|
|
12731
|
+
++lf[256];
|
|
12732
|
+
var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l;
|
|
12733
|
+
var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l;
|
|
12734
|
+
var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
|
|
12735
|
+
var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
|
|
12736
|
+
var lcfreq = new u16(19);
|
|
12737
|
+
for (var i2 = 0; i2 < lclt.length; ++i2)
|
|
12738
|
+
++lcfreq[lclt[i2] & 31];
|
|
12739
|
+
for (var i2 = 0; i2 < lcdt.length; ++i2)
|
|
12740
|
+
++lcfreq[lcdt[i2] & 31];
|
|
12741
|
+
var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
|
|
12742
|
+
var nlcc = 19;
|
|
12743
|
+
for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
|
|
12744
|
+
;
|
|
12745
|
+
var flen = bl + 5 << 3;
|
|
12746
|
+
var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
|
|
12747
|
+
var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
|
|
12748
|
+
if (bs >= 0 && flen <= ftlen && flen <= dtlen)
|
|
12749
|
+
return wfblk(out, p, dat.subarray(bs, bs + bl));
|
|
12750
|
+
var lm, ll, dm, dl;
|
|
12751
|
+
wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
|
|
12752
|
+
if (dtlen < ftlen) {
|
|
12753
|
+
lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
|
|
12754
|
+
var llm = hMap(lct, mlcb, 0);
|
|
12755
|
+
wbits(out, p, nlc - 257);
|
|
12756
|
+
wbits(out, p + 5, ndc - 1);
|
|
12757
|
+
wbits(out, p + 10, nlcc - 4);
|
|
12758
|
+
p += 14;
|
|
12759
|
+
for (var i2 = 0; i2 < nlcc; ++i2)
|
|
12760
|
+
wbits(out, p + 3 * i2, lct[clim[i2]]);
|
|
12761
|
+
p += 3 * nlcc;
|
|
12762
|
+
var lcts = [lclt, lcdt];
|
|
12763
|
+
for (var it = 0; it < 2; ++it) {
|
|
12764
|
+
var clct = lcts[it];
|
|
12765
|
+
for (var i2 = 0; i2 < clct.length; ++i2) {
|
|
12766
|
+
var len = clct[i2] & 31;
|
|
12767
|
+
wbits(out, p, llm[len]), p += lct[len];
|
|
12768
|
+
if (len > 15)
|
|
12769
|
+
wbits(out, p, clct[i2] >> 5 & 127), p += clct[i2] >> 12;
|
|
12770
|
+
}
|
|
12771
|
+
}
|
|
12772
|
+
} else {
|
|
12773
|
+
lm = flm, ll = flt, dm = fdm, dl = fdt;
|
|
12774
|
+
}
|
|
12775
|
+
for (var i2 = 0; i2 < li; ++i2) {
|
|
12776
|
+
var sym = syms[i2];
|
|
12777
|
+
if (sym > 255) {
|
|
12778
|
+
var len = sym >> 18 & 31;
|
|
12779
|
+
wbits16(out, p, lm[len + 257]), p += ll[len + 257];
|
|
12780
|
+
if (len > 7)
|
|
12781
|
+
wbits(out, p, sym >> 23 & 31), p += fleb[len];
|
|
12782
|
+
var dst = sym & 31;
|
|
12783
|
+
wbits16(out, p, dm[dst]), p += dl[dst];
|
|
12784
|
+
if (dst > 3)
|
|
12785
|
+
wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst];
|
|
12786
|
+
} else {
|
|
12787
|
+
wbits16(out, p, lm[sym]), p += ll[sym];
|
|
12788
|
+
}
|
|
12789
|
+
}
|
|
12790
|
+
wbits16(out, p, lm[256]);
|
|
12791
|
+
return p + ll[256];
|
|
12792
|
+
};
|
|
12793
|
+
var deo = /* @__PURE__ */ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
|
|
12415
12794
|
var et = /* @__PURE__ */ new u82(0);
|
|
12795
|
+
var dflt = function(dat, lvl, plvl, pre, post, st) {
|
|
12796
|
+
var s = st.z || dat.length;
|
|
12797
|
+
var o = new u82(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post);
|
|
12798
|
+
var w = o.subarray(pre, o.length - post);
|
|
12799
|
+
var lst = st.l;
|
|
12800
|
+
var pos = (st.r || 0) & 7;
|
|
12801
|
+
if (lvl) {
|
|
12802
|
+
if (pos)
|
|
12803
|
+
w[0] = st.r >> 3;
|
|
12804
|
+
var opt = deo[lvl - 1];
|
|
12805
|
+
var n = opt >> 13, c = opt & 8191;
|
|
12806
|
+
var msk_1 = (1 << plvl) - 1;
|
|
12807
|
+
var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
|
|
12808
|
+
var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
|
|
12809
|
+
var hsh = function(i3) {
|
|
12810
|
+
return (dat[i3] ^ dat[i3 + 1] << bs1_1 ^ dat[i3 + 2] << bs2_1) & msk_1;
|
|
12811
|
+
};
|
|
12812
|
+
var syms = new i32(25e3);
|
|
12813
|
+
var lf = new u16(288), df = new u16(32);
|
|
12814
|
+
var lc_1 = 0, eb = 0, i2 = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
|
|
12815
|
+
for (; i2 + 2 < s; ++i2) {
|
|
12816
|
+
var hv = hsh(i2);
|
|
12817
|
+
var imod = i2 & 32767, pimod = head[hv];
|
|
12818
|
+
prev[imod] = pimod;
|
|
12819
|
+
head[hv] = imod;
|
|
12820
|
+
if (wi <= i2) {
|
|
12821
|
+
var rem = s - i2;
|
|
12822
|
+
if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) {
|
|
12823
|
+
pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i2 - bs, pos);
|
|
12824
|
+
li = lc_1 = eb = 0, bs = i2;
|
|
12825
|
+
for (var j = 0; j < 286; ++j)
|
|
12826
|
+
lf[j] = 0;
|
|
12827
|
+
for (var j = 0; j < 30; ++j)
|
|
12828
|
+
df[j] = 0;
|
|
12829
|
+
}
|
|
12830
|
+
var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
|
|
12831
|
+
if (rem > 2 && hv == hsh(i2 - dif)) {
|
|
12832
|
+
var maxn = Math.min(n, rem) - 1;
|
|
12833
|
+
var maxd = Math.min(32767, i2);
|
|
12834
|
+
var ml = Math.min(258, rem);
|
|
12835
|
+
while (dif <= maxd && --ch_1 && imod != pimod) {
|
|
12836
|
+
if (dat[i2 + l] == dat[i2 + l - dif]) {
|
|
12837
|
+
var nl = 0;
|
|
12838
|
+
for (; nl < ml && dat[i2 + nl] == dat[i2 + nl - dif]; ++nl)
|
|
12839
|
+
;
|
|
12840
|
+
if (nl > l) {
|
|
12841
|
+
l = nl, d = dif;
|
|
12842
|
+
if (nl > maxn)
|
|
12843
|
+
break;
|
|
12844
|
+
var mmd = Math.min(dif, nl - 2);
|
|
12845
|
+
var md = 0;
|
|
12846
|
+
for (var j = 0; j < mmd; ++j) {
|
|
12847
|
+
var ti = i2 - dif + j & 32767;
|
|
12848
|
+
var pti = prev[ti];
|
|
12849
|
+
var cd = ti - pti & 32767;
|
|
12850
|
+
if (cd > md)
|
|
12851
|
+
md = cd, pimod = ti;
|
|
12852
|
+
}
|
|
12853
|
+
}
|
|
12854
|
+
}
|
|
12855
|
+
imod = pimod, pimod = prev[imod];
|
|
12856
|
+
dif += imod - pimod & 32767;
|
|
12857
|
+
}
|
|
12858
|
+
}
|
|
12859
|
+
if (d) {
|
|
12860
|
+
syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];
|
|
12861
|
+
var lin = revfl[l] & 31, din = revfd[d] & 31;
|
|
12862
|
+
eb += fleb[lin] + fdeb[din];
|
|
12863
|
+
++lf[257 + lin];
|
|
12864
|
+
++df[din];
|
|
12865
|
+
wi = i2 + l;
|
|
12866
|
+
++lc_1;
|
|
12867
|
+
} else {
|
|
12868
|
+
syms[li++] = dat[i2];
|
|
12869
|
+
++lf[dat[i2]];
|
|
12870
|
+
}
|
|
12871
|
+
}
|
|
12872
|
+
}
|
|
12873
|
+
for (i2 = Math.max(i2, wi); i2 < s; ++i2) {
|
|
12874
|
+
syms[li++] = dat[i2];
|
|
12875
|
+
++lf[dat[i2]];
|
|
12876
|
+
}
|
|
12877
|
+
pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i2 - bs, pos);
|
|
12878
|
+
if (!lst) {
|
|
12879
|
+
st.r = pos & 7 | w[pos / 8 | 0] << 3;
|
|
12880
|
+
pos -= 7;
|
|
12881
|
+
st.h = head, st.p = prev, st.i = i2, st.w = wi;
|
|
12882
|
+
}
|
|
12883
|
+
} else {
|
|
12884
|
+
for (var i2 = st.w || 0; i2 < s + lst; i2 += 65535) {
|
|
12885
|
+
var e = i2 + 65535;
|
|
12886
|
+
if (e >= s) {
|
|
12887
|
+
w[pos / 8 | 0] = lst;
|
|
12888
|
+
e = s;
|
|
12889
|
+
}
|
|
12890
|
+
pos = wfblk(w, pos + 1, dat.subarray(i2, e));
|
|
12891
|
+
}
|
|
12892
|
+
st.i = s;
|
|
12893
|
+
}
|
|
12894
|
+
return slc(o, 0, pre + shft(pos) + post);
|
|
12895
|
+
};
|
|
12896
|
+
var crct = /* @__PURE__ */ (function() {
|
|
12897
|
+
var t = new Int32Array(256);
|
|
12898
|
+
for (var i2 = 0; i2 < 256; ++i2) {
|
|
12899
|
+
var c = i2, k = 9;
|
|
12900
|
+
while (--k)
|
|
12901
|
+
c = (c & 1 && -306674912) ^ c >>> 1;
|
|
12902
|
+
t[i2] = c;
|
|
12903
|
+
}
|
|
12904
|
+
return t;
|
|
12905
|
+
})();
|
|
12906
|
+
var crc = function() {
|
|
12907
|
+
var c = -1;
|
|
12908
|
+
return {
|
|
12909
|
+
p: function(d) {
|
|
12910
|
+
var cr = c;
|
|
12911
|
+
for (var i2 = 0; i2 < d.length; ++i2)
|
|
12912
|
+
cr = crct[cr & 255 ^ d[i2]] ^ cr >>> 8;
|
|
12913
|
+
c = cr;
|
|
12914
|
+
},
|
|
12915
|
+
d: function() {
|
|
12916
|
+
return ~c;
|
|
12917
|
+
}
|
|
12918
|
+
};
|
|
12919
|
+
};
|
|
12920
|
+
var dopt = function(dat, opt, pre, post, st) {
|
|
12921
|
+
if (!st) {
|
|
12922
|
+
st = { l: 1 };
|
|
12923
|
+
if (opt.dictionary) {
|
|
12924
|
+
var dict = opt.dictionary.subarray(-32768);
|
|
12925
|
+
var newDat = new u82(dict.length + dat.length);
|
|
12926
|
+
newDat.set(dict);
|
|
12927
|
+
newDat.set(dat, dict.length);
|
|
12928
|
+
dat = newDat;
|
|
12929
|
+
st.w = dict.length;
|
|
12930
|
+
}
|
|
12931
|
+
}
|
|
12932
|
+
return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st);
|
|
12933
|
+
};
|
|
12934
|
+
var mrg = function(a, b) {
|
|
12935
|
+
var o = {};
|
|
12936
|
+
for (var k in a)
|
|
12937
|
+
o[k] = a[k];
|
|
12938
|
+
for (var k in b)
|
|
12939
|
+
o[k] = b[k];
|
|
12940
|
+
return o;
|
|
12941
|
+
};
|
|
12942
|
+
var wbytes = function(d, b, v) {
|
|
12943
|
+
for (; v; ++b)
|
|
12944
|
+
d[b] = v, v >>>= 8;
|
|
12945
|
+
};
|
|
12946
|
+
function deflateSync(data, opts) {
|
|
12947
|
+
return dopt(data, opts || {}, 0, 0);
|
|
12948
|
+
}
|
|
12416
12949
|
var Inflate = /* @__PURE__ */ (function() {
|
|
12417
12950
|
function Inflate2(opts, cb) {
|
|
12418
12951
|
if (typeof opts == "function")
|
|
@@ -12450,6 +12983,20 @@ var Inflate = /* @__PURE__ */ (function() {
|
|
|
12450
12983
|
};
|
|
12451
12984
|
return Inflate2;
|
|
12452
12985
|
})();
|
|
12986
|
+
var fltn = function(d, p, t, o) {
|
|
12987
|
+
for (var k in d) {
|
|
12988
|
+
var val = d[k], n = p + k, op2 = o;
|
|
12989
|
+
if (Array.isArray(val))
|
|
12990
|
+
op2 = mrg(o, val[1]), val = val[0];
|
|
12991
|
+
if (ArrayBuffer.isView(val))
|
|
12992
|
+
t[n] = [val, op2];
|
|
12993
|
+
else {
|
|
12994
|
+
t[n += "/"] = [new u82(0), op2];
|
|
12995
|
+
fltn(val, n, t, o);
|
|
12996
|
+
}
|
|
12997
|
+
}
|
|
12998
|
+
};
|
|
12999
|
+
var te = typeof TextEncoder != "undefined" && /* @__PURE__ */ new TextEncoder();
|
|
12453
13000
|
var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
|
|
12454
13001
|
var tds = 0;
|
|
12455
13002
|
try {
|
|
@@ -12457,6 +13004,140 @@ try {
|
|
|
12457
13004
|
tds = 1;
|
|
12458
13005
|
} catch (e) {
|
|
12459
13006
|
}
|
|
13007
|
+
function strToU8(str, latin1) {
|
|
13008
|
+
if (latin1) {
|
|
13009
|
+
var ar_1 = new u82(str.length);
|
|
13010
|
+
for (var i2 = 0; i2 < str.length; ++i2)
|
|
13011
|
+
ar_1[i2] = str.charCodeAt(i2);
|
|
13012
|
+
return ar_1;
|
|
13013
|
+
}
|
|
13014
|
+
if (te)
|
|
13015
|
+
return te.encode(str);
|
|
13016
|
+
var l = str.length;
|
|
13017
|
+
var ar = new u82(str.length + (str.length >> 1));
|
|
13018
|
+
var ai = 0;
|
|
13019
|
+
var w = function(v) {
|
|
13020
|
+
ar[ai++] = v;
|
|
13021
|
+
};
|
|
13022
|
+
for (var i2 = 0; i2 < l; ++i2) {
|
|
13023
|
+
if (ai + 5 > ar.length) {
|
|
13024
|
+
var n = new u82(ai + 8 + (l - i2 << 1));
|
|
13025
|
+
n.set(ar);
|
|
13026
|
+
ar = n;
|
|
13027
|
+
}
|
|
13028
|
+
var c = str.charCodeAt(i2);
|
|
13029
|
+
if (c < 128 || latin1)
|
|
13030
|
+
w(c);
|
|
13031
|
+
else if (c < 2048)
|
|
13032
|
+
w(192 | c >> 6), w(128 | c & 63);
|
|
13033
|
+
else if (c > 55295 && c < 57344)
|
|
13034
|
+
c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i2) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);
|
|
13035
|
+
else
|
|
13036
|
+
w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);
|
|
13037
|
+
}
|
|
13038
|
+
return slc(ar, 0, ai);
|
|
13039
|
+
}
|
|
13040
|
+
var exfl = function(ex) {
|
|
13041
|
+
var le = 0;
|
|
13042
|
+
if (ex) {
|
|
13043
|
+
for (var k in ex) {
|
|
13044
|
+
var l = ex[k].length;
|
|
13045
|
+
if (l > 65535)
|
|
13046
|
+
err(9);
|
|
13047
|
+
le += l + 4;
|
|
13048
|
+
}
|
|
13049
|
+
}
|
|
13050
|
+
return le;
|
|
13051
|
+
};
|
|
13052
|
+
var wzh = function(d, b, f, fn, u, c, ce, co) {
|
|
13053
|
+
var fl2 = fn.length, ex = f.extra, col = co && co.length;
|
|
13054
|
+
var exl = exfl(ex);
|
|
13055
|
+
wbytes(d, b, ce != null ? 33639248 : 67324752), b += 4;
|
|
13056
|
+
if (ce != null)
|
|
13057
|
+
d[b++] = 20, d[b++] = f.os;
|
|
13058
|
+
d[b] = 20, b += 2;
|
|
13059
|
+
d[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8;
|
|
13060
|
+
d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
|
|
13061
|
+
var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
|
|
13062
|
+
if (y < 0 || y > 119)
|
|
13063
|
+
err(10);
|
|
13064
|
+
wbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4;
|
|
13065
|
+
if (c != -1) {
|
|
13066
|
+
wbytes(d, b, f.crc);
|
|
13067
|
+
wbytes(d, b + 4, c < 0 ? -c - 2 : c);
|
|
13068
|
+
wbytes(d, b + 8, f.size);
|
|
13069
|
+
}
|
|
13070
|
+
wbytes(d, b + 12, fl2);
|
|
13071
|
+
wbytes(d, b + 14, exl), b += 16;
|
|
13072
|
+
if (ce != null) {
|
|
13073
|
+
wbytes(d, b, col);
|
|
13074
|
+
wbytes(d, b + 6, f.attrs);
|
|
13075
|
+
wbytes(d, b + 10, ce), b += 14;
|
|
13076
|
+
}
|
|
13077
|
+
d.set(fn, b);
|
|
13078
|
+
b += fl2;
|
|
13079
|
+
if (exl) {
|
|
13080
|
+
for (var k in ex) {
|
|
13081
|
+
var exf = ex[k], l = exf.length;
|
|
13082
|
+
wbytes(d, b, +k);
|
|
13083
|
+
wbytes(d, b + 2, l);
|
|
13084
|
+
d.set(exf, b + 4), b += 4 + l;
|
|
13085
|
+
}
|
|
13086
|
+
}
|
|
13087
|
+
if (col)
|
|
13088
|
+
d.set(co, b), b += col;
|
|
13089
|
+
return b;
|
|
13090
|
+
};
|
|
13091
|
+
var wzf = function(o, b, c, d, e) {
|
|
13092
|
+
wbytes(o, b, 101010256);
|
|
13093
|
+
wbytes(o, b + 8, c);
|
|
13094
|
+
wbytes(o, b + 10, c);
|
|
13095
|
+
wbytes(o, b + 12, d);
|
|
13096
|
+
wbytes(o, b + 16, e);
|
|
13097
|
+
};
|
|
13098
|
+
function zipSync(data, opts) {
|
|
13099
|
+
if (!opts)
|
|
13100
|
+
opts = {};
|
|
13101
|
+
var r = {};
|
|
13102
|
+
var files = [];
|
|
13103
|
+
fltn(data, "", r, opts);
|
|
13104
|
+
var o = 0;
|
|
13105
|
+
var tot = 0;
|
|
13106
|
+
for (var fn in r) {
|
|
13107
|
+
var _a2 = r[fn], file = _a2[0], p = _a2[1];
|
|
13108
|
+
var compression = p.level == 0 ? 0 : 8;
|
|
13109
|
+
var f = strToU8(fn), s = f.length;
|
|
13110
|
+
var com = p.comment, m = com && strToU8(com), ms = m && m.length;
|
|
13111
|
+
var exl = exfl(p.extra);
|
|
13112
|
+
if (s > 65535)
|
|
13113
|
+
err(11);
|
|
13114
|
+
var d = compression ? deflateSync(file, p) : file, l = d.length;
|
|
13115
|
+
var c = crc();
|
|
13116
|
+
c.p(file);
|
|
13117
|
+
files.push(mrg(p, {
|
|
13118
|
+
size: file.length,
|
|
13119
|
+
crc: c.d(),
|
|
13120
|
+
c: d,
|
|
13121
|
+
f,
|
|
13122
|
+
m,
|
|
13123
|
+
u: s != fn.length || m && com.length != ms,
|
|
13124
|
+
o,
|
|
13125
|
+
compression
|
|
13126
|
+
}));
|
|
13127
|
+
o += 30 + s + exl + l;
|
|
13128
|
+
tot += 76 + 2 * (s + exl) + (ms || 0) + l;
|
|
13129
|
+
}
|
|
13130
|
+
var out = new u82(tot + 22), oe = o, cdl = tot - o;
|
|
13131
|
+
for (var i2 = 0; i2 < files.length; ++i2) {
|
|
13132
|
+
var f = files[i2];
|
|
13133
|
+
wzh(out, f.o, f, f.f, f.u, f.c.length);
|
|
13134
|
+
var badd = 30 + f.f.length + exfl(f.extra);
|
|
13135
|
+
out.set(f.c, f.o + badd);
|
|
13136
|
+
wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
|
|
13137
|
+
}
|
|
13138
|
+
wzf(out, o, files.length, cdl, oe);
|
|
13139
|
+
return out;
|
|
13140
|
+
}
|
|
12460
13141
|
|
|
12461
13142
|
// src/runtime/rsa.ts
|
|
12462
13143
|
init_buffer();
|
|
@@ -12570,14 +13251,14 @@ for (let i2 = 0; i2 < 256; i2++) {
|
|
|
12570
13251
|
table32[i2] = b;
|
|
12571
13252
|
}
|
|
12572
13253
|
var crc16 = (data, initial = 65535) => {
|
|
12573
|
-
let
|
|
12574
|
-
for (const byte of data)
|
|
12575
|
-
return
|
|
13254
|
+
let crc2 = initial;
|
|
13255
|
+
for (const byte of data) crc2 = crc2 >>> 8 ^ table16[(crc2 ^ byte) & 255];
|
|
13256
|
+
return crc2;
|
|
12576
13257
|
};
|
|
12577
13258
|
var crc32 = (data) => {
|
|
12578
|
-
let
|
|
12579
|
-
for (const byte of data)
|
|
12580
|
-
return (
|
|
13259
|
+
let crc2 = 4294967295;
|
|
13260
|
+
for (const byte of data) crc2 = crc2 >>> 8 ^ table32[(crc2 ^ byte) & 255];
|
|
13261
|
+
return (crc2 ^ 4294967295) >>> 0;
|
|
12581
13262
|
};
|
|
12582
13263
|
|
|
12583
13264
|
// src/nitro/banner.ts
|
|
@@ -14839,6 +15520,293 @@ var extractZipEntry = (input, entryName, options = {}) => {
|
|
|
14839
15520
|
return entry;
|
|
14840
15521
|
};
|
|
14841
15522
|
|
|
15523
|
+
// src/patch/create.ts
|
|
15524
|
+
init_buffer();
|
|
15525
|
+
var import_xdelta3_wasm = __toESM(require_dist(), 1);
|
|
15526
|
+
var normalizePath = (path) => path.replaceAll("\\", "/").toLowerCase();
|
|
15527
|
+
var listFiles = (rom) => new Map(rom.listFiles().map((file) => [normalizePath(file.path), file]));
|
|
15528
|
+
var listDirectories = (folder, prefix = "data") => [prefix, ...folder.folders.flatMap((child) => listDirectories(child, `${prefix}/${child.name}`))].sort();
|
|
15529
|
+
var getUnnamedFiles = (rom) => {
|
|
15530
|
+
const namedIds = new Set(
|
|
15531
|
+
rom.listFiles().filter((file) => /^(data|overlay)\//i.test(file.path)).map((file) => file.id)
|
|
15532
|
+
);
|
|
15533
|
+
return rom.fatTable.entries.filter((entry) => !namedIds.has(entry.id)).map((entry) => rom.original.subarray(entry.offset, entry.offset + entry.size));
|
|
15534
|
+
};
|
|
15535
|
+
var normalizeHeader = (rom) => {
|
|
15536
|
+
const header = new Header(rom.getFile("header.bin"));
|
|
15537
|
+
header.size = 131072;
|
|
15538
|
+
for (const field2 of [
|
|
15539
|
+
"ARM9romOffset",
|
|
15540
|
+
"ARM9size",
|
|
15541
|
+
"ARM7romOffset",
|
|
15542
|
+
"ARM7size",
|
|
15543
|
+
"FNToffset",
|
|
15544
|
+
"FNTsize",
|
|
15545
|
+
"FAToffset",
|
|
15546
|
+
"FATsize",
|
|
15547
|
+
"ARM9overlayOffset",
|
|
15548
|
+
"ARM9overlaySize",
|
|
15549
|
+
"ARM7overlayOffset",
|
|
15550
|
+
"ARM7overlaySize",
|
|
15551
|
+
"bannerOffset",
|
|
15552
|
+
"secureCRC16",
|
|
15553
|
+
"ROMsize",
|
|
15554
|
+
"logoCRC16",
|
|
15555
|
+
"headerCRC16"
|
|
15556
|
+
])
|
|
15557
|
+
header[field2] = 0;
|
|
15558
|
+
if (header.unitCode === 2) {
|
|
15559
|
+
for (const field2 of [
|
|
15560
|
+
"ntr_region_end",
|
|
15561
|
+
"twl_region_start",
|
|
15562
|
+
"dsi9_rom_offset",
|
|
15563
|
+
"dsi7_rom_offset",
|
|
15564
|
+
"digest_ntr_start",
|
|
15565
|
+
"digest_ntr_size",
|
|
15566
|
+
"digest_twl_start",
|
|
15567
|
+
"digest_twl_size",
|
|
15568
|
+
"sector_hashtable_start",
|
|
15569
|
+
"sector_hashtable_size",
|
|
15570
|
+
"block_hashtable_start",
|
|
15571
|
+
"block_hashtable_size",
|
|
15572
|
+
"total_rom_size",
|
|
15573
|
+
"modcrypt1_start",
|
|
15574
|
+
"modcrypt1_size",
|
|
15575
|
+
"modcrypt2_start",
|
|
15576
|
+
"modcrypt2_size"
|
|
15577
|
+
])
|
|
15578
|
+
header[field2] = 0;
|
|
15579
|
+
for (const field2 of [
|
|
15580
|
+
"hmac_arm9",
|
|
15581
|
+
"hmac_arm7",
|
|
15582
|
+
"hmac_digest_master",
|
|
15583
|
+
"hmac_icon_title",
|
|
15584
|
+
"hmac_arm9i",
|
|
15585
|
+
"hmac_arm7i",
|
|
15586
|
+
"hmac_arm9_no_secure",
|
|
15587
|
+
"rsa_signature"
|
|
15588
|
+
])
|
|
15589
|
+
header[field2] = import_buffer.Buffer.alloc(header[field2].length);
|
|
15590
|
+
}
|
|
15591
|
+
return header.raw;
|
|
15592
|
+
};
|
|
15593
|
+
var compareContent = (actual, expected, path, warnings) => {
|
|
15594
|
+
if (!actual.equals(expected)) warnings.push(`\u91CD\u5EFA\u5185\u5BB9\u4E0E\u4FEE\u6539\u540E\u7684 ROM \u4E0D\u540C\uFF1A${path}`);
|
|
15595
|
+
};
|
|
15596
|
+
var errorMessage = (reason) => reason instanceof Error ? reason.message : String(reason);
|
|
15597
|
+
var parseRom = (input, label, warnings) => {
|
|
15598
|
+
try {
|
|
15599
|
+
const rom = new NDSFile(input, { dsiMode: "complete" });
|
|
15600
|
+
rom.listFiles();
|
|
15601
|
+
return rom;
|
|
15602
|
+
} catch (reason) {
|
|
15603
|
+
try {
|
|
15604
|
+
const rom = new NDSFile(input);
|
|
15605
|
+
rom.listFiles();
|
|
15606
|
+
warnings.push(`${label} \u4F7F\u7528\u5E38\u89C4\u6A21\u5F0F\u89E3\u6790\uFF1A${errorMessage(reason)}`);
|
|
15607
|
+
return rom;
|
|
15608
|
+
} catch (error) {
|
|
15609
|
+
throw new Error(`\u65E0\u6CD5\u89E3\u6790${label}\uFF1A${errorMessage(error)}`, { cause: error });
|
|
15610
|
+
}
|
|
15611
|
+
}
|
|
15612
|
+
};
|
|
15613
|
+
var createDelta = async (before, after) => {
|
|
15614
|
+
const chunks = [];
|
|
15615
|
+
async function* targetChunks() {
|
|
15616
|
+
yield after;
|
|
15617
|
+
}
|
|
15618
|
+
for await (const chunk of (0, import_xdelta3_wasm.encode)(targetChunks(), {
|
|
15619
|
+
size: before.length,
|
|
15620
|
+
read(offset, into) {
|
|
15621
|
+
const part = before.subarray(offset, offset + into.length);
|
|
15622
|
+
into.set(part);
|
|
15623
|
+
return part.length;
|
|
15624
|
+
}
|
|
15625
|
+
}))
|
|
15626
|
+
chunks.push(import_buffer.Buffer.from(chunk));
|
|
15627
|
+
return import_buffer.Buffer.concat(chunks);
|
|
15628
|
+
};
|
|
15629
|
+
var verifyContent = (actual, expected, arm9, warnings) => {
|
|
15630
|
+
const actualFiles = listFiles(actual);
|
|
15631
|
+
const expectedFiles = listFiles(expected);
|
|
15632
|
+
if ([...actualFiles.keys()].sort().join("\n") !== [...expectedFiles.keys()].sort().join("\n"))
|
|
15633
|
+
warnings.push("\u91CD\u5EFA ROM \u7684\u6587\u4EF6\u8DEF\u5F84\u96C6\u5408\u4E0E\u4FEE\u6539\u540E\u7684 ROM \u4E0D\u540C\u3002");
|
|
15634
|
+
const actualDirectories = new Set(listDirectories(actual.data));
|
|
15635
|
+
const expectedDirectories = new Set(listDirectories(expected.data));
|
|
15636
|
+
for (const path of expectedDirectories)
|
|
15637
|
+
if (!actualDirectories.has(path)) {
|
|
15638
|
+
if ([...expectedFiles.keys()].some((name) => name.startsWith(normalizePath(`${path}/`))))
|
|
15639
|
+
warnings.push(`\u91CD\u5EFA ROM \u7F3A\u5C11\u76EE\u5F55\uFF1A${path}`);
|
|
15640
|
+
else warnings.push(`\u65B0\u589E\u7A7A\u76EE\u5F55\u5DF2\u5FFD\u7565\uFF1A${path}`);
|
|
15641
|
+
}
|
|
15642
|
+
for (const path of actualDirectories)
|
|
15643
|
+
if (!expectedDirectories.has(path)) {
|
|
15644
|
+
if ([...actualFiles.keys()].some((name) => name.startsWith(normalizePath(`${path}/`))))
|
|
15645
|
+
warnings.push(`\u91CD\u5EFA ROM \u4FDD\u7559\u4E86\u539F\u59CB\u76EE\u5F55\uFF1A${path}`);
|
|
15646
|
+
else warnings.push(`\u5DF2\u4FDD\u7559\u539F\u59CB ROM \u7684\u7A7A\u76EE\u5F55\uFF1A${path}`);
|
|
15647
|
+
}
|
|
15648
|
+
for (const [path, file] of expectedFiles) {
|
|
15649
|
+
if (["header.bin", "fnt.bin", "fat.bin", "banner.bin", "overarm9.bin", "overarm7.bin"].includes(path)) continue;
|
|
15650
|
+
if (!actualFiles.has(path)) continue;
|
|
15651
|
+
let content = path === "arm9.bin" ? import_buffer.Buffer.from(arm9) : expected.getFile(file.path);
|
|
15652
|
+
if (path === "arm9.bin" && expected.header.unitCode === 2) {
|
|
15653
|
+
const plain = expected.header.decrypted ? content : decryptSecureArea(expected.header.gameCode, content);
|
|
15654
|
+
plain.writeUInt16LE(crc16(plain.subarray(16, 2048)), 14);
|
|
15655
|
+
content = expected.header.decrypted ? plain : encryptSecureArea(expected.header.gameCode, plain);
|
|
15656
|
+
}
|
|
15657
|
+
compareContent(actual.getFile(file.path), content, file.path, warnings);
|
|
15658
|
+
}
|
|
15659
|
+
compareContent(actual.banner.toBuffer(), expected.banner.toBuffer(), "banner.bin", warnings);
|
|
15660
|
+
compareContent(normalizeHeader(actual), normalizeHeader(expected), "header.bin", warnings);
|
|
15661
|
+
compareContent(actual.header.dlp_signature, expected.header.dlp_signature, "Download Play \u7B7E\u540D", warnings);
|
|
15662
|
+
for (const [left, right] of [
|
|
15663
|
+
[actual.overlay9Table, expected.overlay9Table],
|
|
15664
|
+
[actual.overlay7Table, expected.overlay7Table]
|
|
15665
|
+
]) {
|
|
15666
|
+
if (left.entries.length !== right.entries.length) warnings.push("\u91CD\u5EFA ROM \u7684\u8986\u76D6\u6A21\u5757\u6570\u91CF\u4E0E\u4FEE\u6539\u540E\u7684 ROM \u4E0D\u540C\u3002");
|
|
15667
|
+
for (const entry of right.entries) {
|
|
15668
|
+
const other = left.entries.find((item) => item.overlayId === entry.overlayId);
|
|
15669
|
+
if (!other) {
|
|
15670
|
+
warnings.push(`\u91CD\u5EFA ROM \u7F3A\u5C11\u8986\u76D6\u6A21\u5757\uFF1A${entry.overlayId}`);
|
|
15671
|
+
continue;
|
|
15672
|
+
}
|
|
15673
|
+
for (const field2 of [
|
|
15674
|
+
"ramAddress",
|
|
15675
|
+
"ramSize",
|
|
15676
|
+
"bssSize",
|
|
15677
|
+
"staticInitialiserStartAddress",
|
|
15678
|
+
"staticInitialiserEndAddress",
|
|
15679
|
+
"reserved"
|
|
15680
|
+
])
|
|
15681
|
+
if (other[field2] !== entry[field2])
|
|
15682
|
+
warnings.push(`\u91CD\u5EFA\u8986\u76D6\u6A21\u5757 ${entry.overlayId} \u7684 ${field2} \u4E0E\u4FEE\u6539\u540E\u7684 ROM \u4E0D\u540C\u3002`);
|
|
15683
|
+
}
|
|
15684
|
+
}
|
|
15685
|
+
const actualUnnamed = getUnnamedFiles(actual);
|
|
15686
|
+
const expectedUnnamed = getUnnamedFiles(expected);
|
|
15687
|
+
if (actualUnnamed.length !== expectedUnnamed.length)
|
|
15688
|
+
warnings.push("\u91CD\u5EFA ROM \u7684\u672A\u547D\u540D FAT \u9879\u6570\u91CF\u4E0E\u4FEE\u6539\u540E\u7684 ROM \u4E0D\u540C\u3002");
|
|
15689
|
+
actualUnnamed.forEach((content, index) => {
|
|
15690
|
+
if (expectedUnnamed[index]) compareContent(content, expectedUnnamed[index], `\u672A\u547D\u540D FAT \u9879 ${index}`, warnings);
|
|
15691
|
+
});
|
|
15692
|
+
if (actual.header.unitCode === 2) {
|
|
15693
|
+
for (const [name, check2] of Object.entries(actual.verifyDsi()))
|
|
15694
|
+
if (check2.status === "invalid") warnings.push(`\u91CD\u5EFA ROM \u7684 DSi \u6821\u9A8C\u7ED3\u679C\u4E3A invalid\uFF1A${name}`);
|
|
15695
|
+
}
|
|
15696
|
+
};
|
|
15697
|
+
var verifyPatch = (input, archive, target, arm9, options, warnings) => {
|
|
15698
|
+
let output;
|
|
15699
|
+
try {
|
|
15700
|
+
output = patchBuffer(input, archive, options).buffer;
|
|
15701
|
+
} catch (reason) {
|
|
15702
|
+
warnings.push(`\u8865\u4E01\u5E94\u7528\u68C0\u67E5\u672A\u5B8C\u6210\uFF1A${errorMessage(reason)}`);
|
|
15703
|
+
return false;
|
|
15704
|
+
}
|
|
15705
|
+
try {
|
|
15706
|
+
verifyContent(parseRom(output, "\u91CD\u5EFA ROM", warnings), target, arm9, warnings);
|
|
15707
|
+
} catch (reason) {
|
|
15708
|
+
warnings.push(`\u8865\u4E01\u6570\u636E\u6838\u5BF9\u672A\u5B8C\u6210\uFF1A${errorMessage(reason)}`);
|
|
15709
|
+
}
|
|
15710
|
+
return true;
|
|
15711
|
+
};
|
|
15712
|
+
var createPatch = async (original, modified, options = {}) => {
|
|
15713
|
+
const input = bytes(original, "original ROM");
|
|
15714
|
+
const targetBytes = bytes(modified, "modified ROM");
|
|
15715
|
+
const warnings = [];
|
|
15716
|
+
const source = parseRom(input, "\u539F\u59CB ROM", warnings);
|
|
15717
|
+
const target = parseRom(targetBytes, "\u4FEE\u6539\u540E\u7684 ROM", warnings);
|
|
15718
|
+
let preprocessing = false;
|
|
15719
|
+
if (source.header.gameCode !== target.header.gameCode)
|
|
15720
|
+
warnings.push(`\u4E24\u4E2A ROM \u7684\u6E38\u620F\u4EE3\u7801\u4E0D\u540C\uFF1A${source.header.gameCode} / ${target.header.gameCode}`);
|
|
15721
|
+
if (source.header.unitCode !== target.header.unitCode)
|
|
15722
|
+
warnings.push(`\u4E24\u4E2A ROM \u7684 unitCode \u4E0D\u540C\uFF1A${source.header.unitCode} / ${target.header.unitCode}`);
|
|
15723
|
+
if (source.header.ROMversion !== target.header.ROMversion)
|
|
15724
|
+
warnings.push(`\u4E24\u4E2A ROM \u7684\u4FEE\u8BA2\u7248\u672C\u4E0D\u540C\uFF1A${source.header.ROMversion} / ${target.header.ROMversion}`);
|
|
15725
|
+
if (source.header.gameCode !== target.header.gameCode || source.header.unitCode !== target.header.unitCode)
|
|
15726
|
+
preprocessing = true;
|
|
15727
|
+
const sourceFiles = listFiles(source);
|
|
15728
|
+
const targetFiles = listFiles(target);
|
|
15729
|
+
const headerChanged = !normalizeHeader(source).equals(normalizeHeader(target));
|
|
15730
|
+
const sourceArm9 = source.getFile("arm9.bin");
|
|
15731
|
+
const targetArm9 = target.getFile("arm9.bin");
|
|
15732
|
+
const sourcePostData = sourceArm9.subarray(source.header.ARM9size);
|
|
15733
|
+
const targetPostData = targetArm9.subarray(target.header.ARM9size);
|
|
15734
|
+
if (!sourcePostData.equals(targetPostData)) warnings.push("\u4E24\u4E2A ROM \u7684 ARM9 \u5C3E\u90E8\u8BB0\u5F55\u4E0D\u540C\u3002");
|
|
15735
|
+
for (const [label, rom, entries2] of [
|
|
15736
|
+
["\u539F\u59CB ROM", source, sourceFiles],
|
|
15737
|
+
["\u4FEE\u6539\u540E\u7684 ROM", target, targetFiles]
|
|
15738
|
+
]) {
|
|
15739
|
+
const file = entries2.get("arm9.bin");
|
|
15740
|
+
const end = file.offset + file.size;
|
|
15741
|
+
if (rom.header.nitrocode && rom.original.subarray(end, end + 4).equals(import_buffer.Buffer.from("2106c0de", "hex")))
|
|
15742
|
+
warnings.push(`${label} \u7684 ARM9 \u542B\u6709\u989D\u5916\u5C3E\u90E8\u8BB0\u5F55\u3002`);
|
|
15743
|
+
}
|
|
15744
|
+
const targetProgram = targetArm9.subarray(0, target.header.ARM9size);
|
|
15745
|
+
const arm9 = sourcePostData.length && targetProgram.subarray(-sourcePostData.length).equals(sourcePostData) ? targetProgram : import_buffer.Buffer.concat([targetProgram, sourcePostData]);
|
|
15746
|
+
const removed = [...sourceFiles.keys()].filter((path) => !targetFiles.has(path));
|
|
15747
|
+
if (removed.length) {
|
|
15748
|
+
warnings.push(`\u4FEE\u6539\u540E\u7684 ROM \u7F3A\u5C11\u539F\u59CB ROM \u4E2D\u7684 ${removed.length} \u4E2A\u6587\u4EF6\u3002`);
|
|
15749
|
+
preprocessing = true;
|
|
15750
|
+
}
|
|
15751
|
+
const sourceUnnamed = getUnnamedFiles(source);
|
|
15752
|
+
const targetUnnamed = getUnnamedFiles(target);
|
|
15753
|
+
if (sourceUnnamed.length !== targetUnnamed.length || sourceUnnamed.some((content, index) => !content.equals(targetUnnamed[index] ?? import_buffer.Buffer.alloc(0)))) {
|
|
15754
|
+
warnings.push("\u4E24\u4E2A ROM \u7684\u672A\u547D\u540D FAT \u6570\u636E\u4E0D\u540C\u3002");
|
|
15755
|
+
preprocessing = true;
|
|
15756
|
+
}
|
|
15757
|
+
const entries = {};
|
|
15758
|
+
let changedFiles = 0;
|
|
15759
|
+
for (const [path, file] of targetFiles) {
|
|
15760
|
+
if (path === "fnt.bin" || path === "fat.bin") continue;
|
|
15761
|
+
if (path === "header.bin" && !headerChanged) continue;
|
|
15762
|
+
const before = sourceFiles.has(path) ? source.getFile(file.path) : import_buffer.Buffer.alloc(0);
|
|
15763
|
+
const after = path === "arm9.bin" ? arm9 : target.getFile(file.path);
|
|
15764
|
+
if (sourceFiles.has(path) && before.equals(after)) continue;
|
|
15765
|
+
if (!sourceFiles.has(path) && !/^(data|overlay)\//.test(path) && !/^overarm[97]\.bin$/.test(path))
|
|
15766
|
+
warnings.push(`\u65B0\u589E\u7CFB\u7EDF\u6587\u4EF6\uFF1A${file.path}`);
|
|
15767
|
+
try {
|
|
15768
|
+
const delta = await createDelta(before, after);
|
|
15769
|
+
if (decodeXdelta(before, delta, options).equals(after)) entries[`xdelta/${file.path}`] = delta;
|
|
15770
|
+
else {
|
|
15771
|
+
warnings.push(`\u6587\u4EF6\u5DEE\u5206\u89E3\u7801\u5185\u5BB9\u4E0D\u540C\uFF0C\u5DF2\u4FDD\u5B58\u5B8C\u6574\u66FF\u6362\u5185\u5BB9\uFF1A${file.path}`);
|
|
15772
|
+
entries[file.path] = after;
|
|
15773
|
+
}
|
|
15774
|
+
} catch (reason) {
|
|
15775
|
+
warnings.push(`\u6587\u4EF6\u5DEE\u5206\u68C0\u67E5\u672A\u5B8C\u6210\uFF0C\u5DF2\u4FDD\u5B58\u5B8C\u6574\u66FF\u6362\u5185\u5BB9\uFF1A${file.path}\uFF1A${errorMessage(reason)}`);
|
|
15776
|
+
entries[file.path] = after;
|
|
15777
|
+
}
|
|
15778
|
+
changedFiles++;
|
|
15779
|
+
}
|
|
15780
|
+
const metadata = { ...options.metadata, formatVersion: 2 };
|
|
15781
|
+
const inputMd5 = hashDigest("md5", input).toString("hex");
|
|
15782
|
+
entries["metadata.json"] = import_buffer.Buffer.from(JSON.stringify(metadata, null, 2));
|
|
15783
|
+
entries["md5.txt"] = import_buffer.Buffer.from(inputMd5);
|
|
15784
|
+
entries["readme.md"] = import_buffer.Buffer.from(options.readme ?? "");
|
|
15785
|
+
let archive = zipSync(entries, { level: 9 });
|
|
15786
|
+
if (!preprocessing) preprocessing = !verifyPatch(input, archive, target, arm9, options, warnings);
|
|
15787
|
+
if (preprocessing) {
|
|
15788
|
+
try {
|
|
15789
|
+
const delta = await createDelta(input, targetBytes);
|
|
15790
|
+
const formatVersion = target.header.unitCode & 2 && !target.twl?.complete ? 1 : 2;
|
|
15791
|
+
archive = zipSync(
|
|
15792
|
+
{
|
|
15793
|
+
[`preprocessing/${inputMd5}.xdelta`]: delta,
|
|
15794
|
+
"metadata.json": import_buffer.Buffer.from(JSON.stringify({ ...metadata, formatVersion }, null, 2)),
|
|
15795
|
+
"md5.txt": entries["md5.txt"],
|
|
15796
|
+
"readme.md": entries["readme.md"]
|
|
15797
|
+
},
|
|
15798
|
+
{ level: 9 }
|
|
15799
|
+
);
|
|
15800
|
+
changedFiles = 1;
|
|
15801
|
+
warnings.push("\u8865\u4E01\u4F7F\u7528\u6574\u4EFD ROM \u7684\u9884\u5904\u7406\u5DEE\u5206\u4FDD\u5B58\u4FEE\u6539\u3002");
|
|
15802
|
+
verifyPatch(input, archive, target, targetArm9, options, warnings);
|
|
15803
|
+
} catch (reason) {
|
|
15804
|
+
warnings.push(`\u9884\u5904\u7406\u5DEE\u5206\u751F\u6210\u672A\u5B8C\u6210\uFF0C\u5DF2\u4FDD\u7559\u6309\u6587\u4EF6\u8865\u4E01\u5305\uFF1A${errorMessage(reason)}`);
|
|
15805
|
+
}
|
|
15806
|
+
}
|
|
15807
|
+
return { buffer: new Uint8Array(archive), changedFiles, warnings };
|
|
15808
|
+
};
|
|
15809
|
+
|
|
14842
15810
|
// src/nitro-patch-helper.ts
|
|
14843
15811
|
var PatchReturnValue = Object.freeze({
|
|
14844
15812
|
SUCCESS: "SUCCESS",
|
|
@@ -15016,6 +15984,7 @@ var PatchHelper = Object.freeze({
|
|
|
15016
15984
|
});
|
|
15017
15985
|
|
|
15018
15986
|
// src/browser.ts
|
|
15987
|
+
var createPatch2 = (original, modified, options = {}) => createPatch(original, modified, options);
|
|
15019
15988
|
var inspectRom = (bytes2, options = {}) => {
|
|
15020
15989
|
const rom = new NDSFile(bytes2, options);
|
|
15021
15990
|
return {
|
|
@@ -15052,6 +16021,7 @@ var readPatchReadme2 = (archive, options = {}) => readPatchReadme(archive, optio
|
|
|
15052
16021
|
var readPatchInfo2 = (archive, options = {}) => readPatchInfo(archive, options);
|
|
15053
16022
|
var extractZipEntry3 = (archive, entryName, options = {}) => new Uint8Array(extractZipEntry2(archive, entryName, options));
|
|
15054
16023
|
var PatchHelper2 = Object.freeze({
|
|
16024
|
+
createPatch: createPatch2,
|
|
15055
16025
|
extractZipEntry: extractZipEntry3,
|
|
15056
16026
|
patchBuffer: patchBuffer2,
|
|
15057
16027
|
readPatchInfo: readPatchInfo2,
|
|
@@ -15062,6 +16032,7 @@ var NitroHelper = Object.freeze({ inspectRom });
|
|
|
15062
16032
|
export {
|
|
15063
16033
|
NitroHelper,
|
|
15064
16034
|
PatchHelper2 as PatchHelper,
|
|
16035
|
+
createPatch2 as createPatch,
|
|
15065
16036
|
extractZipEntry3 as extractZipEntry,
|
|
15066
16037
|
inspectRom,
|
|
15067
16038
|
patchBuffer2 as patchBuffer,
|