@poe-platform/safe-bash 0.1.656 → 0.1.657

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/safe-bash/chunks/{xz-U4QDTPZL.js → xz-4V5FXSPG.js} +555 -514
  2. package/dist/safe-bash/chunks/xz-4V5FXSPG.js.map +7 -0
  3. package/dist/safe-bash/commands/archive/index.d.ts +1 -1
  4. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
  5. package/dist/safe-bash/commands/archive/internal.d.ts +32 -0
  6. package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -1
  7. package/dist/safe-bash/commands/archive/internal.js.map +1 -1
  8. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +3 -0
  9. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -1
  10. package/dist/safe-bash/commands/archive/unzip/arguments.js +31 -5
  11. package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -1
  12. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +4 -0
  13. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
  14. package/dist/safe-bash/commands/archive/unzip/safety.js +3 -0
  15. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
  16. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
  17. package/dist/safe-bash/commands/archive/unzip.js +159 -112
  18. package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
  19. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +2 -0
  20. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts.map +1 -0
  21. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +3 -0
  22. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js.map +1 -0
  23. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +2 -0
  24. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts.map +1 -0
  25. package/dist/safe-bash/commands/archive/zip/aes-primitives.js +3 -0
  26. package/dist/safe-bash/commands/archive/zip/aes-primitives.js.map +1 -0
  27. package/dist/safe-bash/commands/archive/zip/aes.d.ts +18 -0
  28. package/dist/safe-bash/commands/archive/zip/aes.d.ts.map +1 -0
  29. package/dist/safe-bash/commands/archive/zip/aes.js +157 -0
  30. package/dist/safe-bash/commands/archive/zip/aes.js.map +1 -0
  31. package/dist/safe-bash/commands/archive/zip/crypto.d.ts +16 -0
  32. package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -1
  33. package/dist/safe-bash/commands/archive/zip/crypto.js +85 -0
  34. package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -1
  35. package/dist/safe-bash/commands/archive/zip/grow.d.ts +4 -0
  36. package/dist/safe-bash/commands/archive/zip/grow.d.ts.map +1 -0
  37. package/dist/safe-bash/commands/archive/zip/grow.js +3 -0
  38. package/dist/safe-bash/commands/archive/zip/grow.js.map +1 -0
  39. package/dist/safe-bash/commands/archive/zip/help.d.ts +4 -2
  40. package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -1
  41. package/dist/safe-bash/commands/archive/zip/help.js +98 -3
  42. package/dist/safe-bash/commands/archive/zip/help.js.map +1 -1
  43. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -0
  44. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts.map +1 -1
  45. package/dist/safe-bash/commands/archive/zip/line-endings.js +158 -0
  46. package/dist/safe-bash/commands/archive/zip/line-endings.js.map +1 -1
  47. package/dist/safe-bash/commands/archive/zip/log.d.ts +23 -0
  48. package/dist/safe-bash/commands/archive/zip/log.d.ts.map +1 -0
  49. package/dist/safe-bash/commands/archive/zip/log.js +159 -0
  50. package/dist/safe-bash/commands/archive/zip/log.js.map +1 -0
  51. package/dist/safe-bash/commands/archive/zip/lzma.d.ts +10 -0
  52. package/dist/safe-bash/commands/archive/zip/lzma.d.ts.map +1 -0
  53. package/dist/safe-bash/commands/archive/zip/lzma.js +41 -0
  54. package/dist/safe-bash/commands/archive/zip/lzma.js.map +1 -0
  55. package/dist/safe-bash/commands/archive/zip/names.d.ts +3 -0
  56. package/dist/safe-bash/commands/archive/zip/names.d.ts.map +1 -0
  57. package/dist/safe-bash/commands/archive/zip/names.js +34 -0
  58. package/dist/safe-bash/commands/archive/zip/names.js.map +1 -0
  59. package/dist/safe-bash/commands/archive/zip/options.d.ts +7 -0
  60. package/dist/safe-bash/commands/archive/zip/options.d.ts.map +1 -1
  61. package/dist/safe-bash/commands/archive/zip/options.js +88 -17
  62. package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
  63. package/dist/safe-bash/commands/archive/zip/repair.d.ts +11 -0
  64. package/dist/safe-bash/commands/archive/zip/repair.d.ts.map +1 -0
  65. package/dist/safe-bash/commands/archive/zip/repair.js +392 -0
  66. package/dist/safe-bash/commands/archive/zip/repair.js.map +1 -0
  67. package/dist/safe-bash/commands/archive/zip/safety.d.ts +23 -4
  68. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
  69. package/dist/safe-bash/commands/archive/zip/safety.js +73 -23
  70. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
  71. package/dist/safe-bash/commands/archive/zip/sfx.d.ts +5 -0
  72. package/dist/safe-bash/commands/archive/zip/sfx.d.ts.map +1 -0
  73. package/dist/safe-bash/commands/archive/zip/sfx.js +56 -0
  74. package/dist/safe-bash/commands/archive/zip/sfx.js.map +1 -0
  75. package/dist/safe-bash/commands/archive/zip/test-command.d.ts +6 -0
  76. package/dist/safe-bash/commands/archive/zip/test-command.d.ts.map +1 -0
  77. package/dist/safe-bash/commands/archive/zip/test-command.js +101 -0
  78. package/dist/safe-bash/commands/archive/zip/test-command.js.map +1 -0
  79. package/dist/safe-bash/commands/archive/zip/volumes.d.ts +22 -0
  80. package/dist/safe-bash/commands/archive/zip/volumes.d.ts.map +1 -0
  81. package/dist/safe-bash/commands/archive/zip/volumes.js +265 -0
  82. package/dist/safe-bash/commands/archive/zip/volumes.js.map +1 -0
  83. package/dist/safe-bash/commands/archive/zip/zip64.d.ts +20 -1
  84. package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -1
  85. package/dist/safe-bash/commands/archive/zip/zip64.js +127 -17
  86. package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -1
  87. package/dist/safe-bash/commands/archive/zip-format.d.ts +30 -5
  88. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
  89. package/dist/safe-bash/commands/archive/zip-format.js +489 -91
  90. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
  91. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  92. package/dist/safe-bash/commands/archive/zip.js +729 -128
  93. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  94. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +7 -0
  95. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
  96. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
  97. package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -1
  98. package/dist/safe-bash/commands/bytes/compression/codec-loader.js +8 -1
  99. package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -1
  100. package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +1 -1
  101. package/dist/safe-bash/commands/bytes/compression/native/sources.json +2 -2
  102. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +1 -0
  103. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -1
  104. package/dist/safe-bash/commands/text.js +1 -1
  105. package/dist/safe-bash/commands/text.js.map +1 -1
  106. package/dist/safe-bash/core.browser.js +3106 -717
  107. package/dist/safe-bash/core.browser.js.map +4 -4
  108. package/package.json +11 -3
  109. package/dist/safe-bash/chunks/xz-U4QDTPZL.js.map +0 -7
@@ -0,0 +1,159 @@
1
+ import { dirname, writeBytes } from "../../../contracts/index.js";
2
+ import { writeFileOutput } from "../../../contracts/filesystem-output.js";
3
+ import { checkPath, hasIdentity, sameIdentity, vfsPath } from "../internal.js";
4
+ import { ZipFailure } from "./options.js";
5
+ /** Persistent log bytes are intentional effects, never invocation scratch files. */
6
+ export class ZipLog {
7
+ scope;
8
+ info;
9
+ failed = false;
10
+ password;
11
+ path = "";
12
+ parent;
13
+ expected;
14
+ bytes = 0;
15
+ append = false;
16
+ started = false;
17
+ pending = [];
18
+ constructor(scope, info) {
19
+ this.scope = scope;
20
+ this.info = info;
21
+ }
22
+ async open(name, append, protectedNames) {
23
+ const { context, limits } = this.scope;
24
+ try {
25
+ const path = vfsPath(context.cwd, name);
26
+ checkPath(path, limits);
27
+ const parent = await this.scope.operation(() => context.fs.realpath(dirname(path), { signal: context.signal }));
28
+ this.path = `${parent === "/" ? "" : parent}/${path.slice(path.lastIndexOf("/") + 1)}`;
29
+ this.parent = await this.scope.stat(parent);
30
+ this.expected = await this.scope.stat(this.path);
31
+ if (!this.parent || !hasIdentity(this.parent) || this.parent.type !== "directory"
32
+ || this.expected && (this.expected.type !== "file" || this.expected.nlink !== 1 || !hasIdentity(this.expected)))
33
+ throw new Error("unsafe log identity");
34
+ await this.protect(protectedNames);
35
+ const capabilities = await this.scope.operation(() => context.fs.capabilitiesFor?.(this.path, { signal: context.signal, create: true }) ?? context.fs.capabilities);
36
+ if (capabilities.atomicFileMutation !== true || !context.fs.writeFileConditional)
37
+ throw new Error("conditional log writes unavailable");
38
+ this.bytes = append ? this.expected?.size ?? 0 : 0;
39
+ if (!Number.isSafeInteger(this.bytes) || this.bytes < 0 || this.bytes > limits.maxTextBytes)
40
+ throw new Error("log byte limit");
41
+ this.append = append;
42
+ // Reserve a new destination, but preserve existing bytes until selection
43
+ // has ruled out aliases reached through recursive patterns.
44
+ if (!this.expected)
45
+ this.expected = await this.scope.operation(() => context.fs.writeFileConditional(this.path, new Uint8Array(), {
46
+ signal: context.signal, parent: this.parent, expected: null,
47
+ }));
48
+ }
49
+ catch {
50
+ context.signal.throwIfAborted();
51
+ this.failed = true;
52
+ throw new ZipFailure(16, "Invalid command arguments", "ZIP log path is unavailable or unsafe");
53
+ }
54
+ }
55
+ async protect(names) {
56
+ const { context } = this.scope;
57
+ try {
58
+ for (const name of names) {
59
+ if (name === "-")
60
+ continue;
61
+ const path = vfsPath(context.cwd, name);
62
+ const stat = await this.scope.stat(path);
63
+ if (this.path === path || this.expected && stat && sameIdentity(this.expected, stat))
64
+ throw new Error("log alias");
65
+ if (stat?.type === "directory") {
66
+ const canonical = await this.scope.operation(() => context.fs.realpath(path, { signal: context.signal }));
67
+ if (this.path.startsWith(`${canonical === "/" ? "" : canonical}/`))
68
+ throw new Error("log within selected directory");
69
+ }
70
+ }
71
+ }
72
+ catch {
73
+ context.signal.throwIfAborted();
74
+ this.failed = true;
75
+ throw new ZipFailure(16, "Invalid command arguments", "ZIP log path is unavailable or unsafe");
76
+ }
77
+ }
78
+ async start() {
79
+ if (this.started || this.failed)
80
+ return;
81
+ const { context } = this.scope;
82
+ try {
83
+ this.expected = await this.scope.operation(() => context.fs.writeFileConditional(this.path, new Uint8Array(), {
84
+ signal: context.signal, parent: this.parent, expected: this.expected, append: this.append,
85
+ }));
86
+ }
87
+ catch {
88
+ context.signal.throwIfAborted();
89
+ this.failed = true;
90
+ throw new ZipFailure(16, "Invalid command arguments", "ZIP log path is unavailable or unsafe");
91
+ }
92
+ try {
93
+ for (const bytes of this.pending)
94
+ await this.write(bytes);
95
+ this.pending.length = 0;
96
+ this.started = true;
97
+ }
98
+ catch {
99
+ context.signal.throwIfAborted();
100
+ this.failed = true;
101
+ throw new ZipFailure(11, "Error writing to a file", "ZIP log write failed or exceeded its byte limit");
102
+ }
103
+ }
104
+ async write(bytes) {
105
+ const { context } = this.scope;
106
+ await writeFileOutput(context, bytes, data => this.scope.operation(async () => {
107
+ this.expected = await context.fs.writeFileConditional(this.path, data, {
108
+ signal: context.signal, parent: this.parent, expected: this.expected, append: true,
109
+ });
110
+ }));
111
+ }
112
+ sink(destination, quiet = false) {
113
+ const { context, limits } = this.scope;
114
+ return { write: async (chunk) => {
115
+ if (!this.failed && (this.info || Buffer.from(chunk).toString().includes("warning:") || Buffer.from(chunk).toString().includes("error:") || destination === context.stderr)) {
116
+ try {
117
+ const input = Buffer.from(chunk);
118
+ const secret = this.password;
119
+ const fragments = [];
120
+ let start = 0;
121
+ let size = 0;
122
+ if (secret?.length) {
123
+ for (;;) {
124
+ const offset = input.indexOf(secret, start);
125
+ if (offset < 0)
126
+ break;
127
+ size += offset - start + 10;
128
+ if (size > limits.maxTextBytes - this.bytes)
129
+ throw new Error("log byte limit");
130
+ fragments.push(input.subarray(start, offset), Buffer.from("[redacted]"));
131
+ start = offset + secret.length;
132
+ }
133
+ }
134
+ size += input.length - start;
135
+ if (size > limits.maxTextBytes - this.bytes)
136
+ throw new Error("log byte limit");
137
+ fragments.push(input.subarray(start));
138
+ const redacted = fragments.length === 1 ? input : Buffer.concat(fragments, size);
139
+ if (redacted.length > limits.maxTextBytes - this.bytes)
140
+ throw new Error("log byte limit");
141
+ if (this.started)
142
+ await this.write(redacted);
143
+ else
144
+ this.pending.push(Uint8Array.from(redacted));
145
+ this.bytes += redacted.length;
146
+ }
147
+ catch {
148
+ context.signal.throwIfAborted();
149
+ this.failed = true;
150
+ throw new ZipFailure(11, "Error writing to a file", "ZIP log write failed or exceeded its byte limit");
151
+ }
152
+ }
153
+ const message = Buffer.from(chunk).toString();
154
+ if (!quiet || message.includes("zip error:") || message.startsWith("zip:"))
155
+ await writeBytes(destination, chunk, context.signal);
156
+ } };
157
+ }
158
+ }
159
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ByteSource } from "../../../contracts/index.js";
2
+ import type { CodecInput } from "../../bytes/compression/codec.js";
3
+ /** ZIP 6.3.4: version, property length, LZMA1 properties, then raw stream. */
4
+ export declare function zipLzma(input: CodecInput, signal: AbortSignal, options: Readonly<{
5
+ decode: boolean;
6
+ level: number;
7
+ eos: boolean;
8
+ size: number;
9
+ }>): ByteSource;
10
+ //# sourceMappingURL=lzma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzma.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/lzma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAGnE,8EAA8E;AAC9E,wBAAuB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,UAAU,CAgCpK"}
@@ -0,0 +1,41 @@
1
+ import { boundedCodec } from "../../bytes/compression/bounded-codec.js";
2
+ import { fail } from "../internal.js";
3
+ /** ZIP 6.3.4: version, property length, LZMA1 properties, then raw stream. */
4
+ export async function* zipLzma(input, signal, options) {
5
+ signal.throwIfAborted();
6
+ let dictionary = 1024 * 1024;
7
+ let properties = 93; // lc=3, lp=0, pb=2
8
+ if (options.decode) {
9
+ const header = new Uint8Array(9);
10
+ let offset = 0;
11
+ while (offset < header.length) {
12
+ const chunk = await input.chunk();
13
+ signal.throwIfAborted();
14
+ if (!chunk)
15
+ fail("ZIP truncated LZMA properties");
16
+ const count = Math.min(chunk.length, header.length - offset);
17
+ header.set(chunk.subarray(0, count), offset);
18
+ offset += count;
19
+ // The producer stays suspended until this remainder is consumed. Do not
20
+ // duplicate its entire slab merely to read a nine-byte property header.
21
+ if (count < chunk.length)
22
+ input.restore(chunk.subarray(count));
23
+ }
24
+ // SDK LZMA1 version bytes describe the encoder, not a required decoder.
25
+ // Qualify the published 9.4 framing only; other versions remain open.
26
+ if (header[0] !== 9 || header[1] !== 4 || header[2] !== 5 || header[3] !== 0)
27
+ fail("ZIP unsupported LZMA version or property length");
28
+ properties = header[4];
29
+ dictionary = new DataView(header.buffer).getUint32(5, true);
30
+ }
31
+ else {
32
+ const header = Uint8Array.of(9, 4, 5, 0, properties, 0, 0, 16, 0);
33
+ yield header;
34
+ signal.throwIfAborted();
35
+ }
36
+ yield* boundedCodec(input, {
37
+ format: "xz", decompress: options.decode, level: options.level, singleMember: true,
38
+ lzma: { dictionary, properties, eos: options.eos, size: options.size },
39
+ }, signal);
40
+ }
41
+ //# sourceMappingURL=lzma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzma.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/lzma.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,8EAA8E;AAC9E,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,KAAiB,EAAE,MAAmB,EAAE,OAAiF;IACtJ,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,IAAI,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,mBAAmB;IACxC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC;YAChB,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,wEAAwE;QACxE,sEAAsE;QACtE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACtI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACxB,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,CAAC;QACb,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI;QAClF,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;KACvE,EAAE,MAAM,CAAC,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Unix Info-ZIP msname ordering, restricted to its portable ASCII domain. */
2
+ export declare function zipDosName(name: string): string;
3
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/names.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoB/C"}
@@ -0,0 +1,34 @@
1
+ import { ZipFailure } from "./options.js";
2
+ /** Unix Info-ZIP msname ordering, restricted to its portable ASCII domain. */
3
+ export function zipDosName(name) {
4
+ let result = "";
5
+ let length = 0;
6
+ for (const character of name) {
7
+ const code = character.charCodeAt(0);
8
+ if (code >= 127 || code < 32 || character === "\\") {
9
+ throw new ZipFailure(16, "Invalid command arguments", "DOS names require printable ASCII components without backslashes");
10
+ }
11
+ if (' :"*+,;<=>?[]|'.includes(character))
12
+ continue;
13
+ if (character === "/") {
14
+ result += character;
15
+ length = 0;
16
+ }
17
+ else if (character === ".") {
18
+ if (length === 0)
19
+ continue;
20
+ if (length < 9) {
21
+ result += character;
22
+ length = 9;
23
+ }
24
+ else
25
+ length = 12;
26
+ }
27
+ else if (length < 12 && length !== 8) {
28
+ result += character.toUpperCase();
29
+ length++;
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,kEAAkE,CAAC,CAAC;QAC5H,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAS;QACnD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,MAAM,IAAI,SAAS,CAAC;YAAC,MAAM,GAAG,CAAC,CAAC;QAAC,CAAC;aACtD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3B,IAAI,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC3B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,IAAI,SAAS,CAAC;gBAAC,MAAM,GAAG,CAAC,CAAC;YAAC,CAAC;;gBAC/C,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -3,5 +3,12 @@ export declare class ZipFailure extends Error {
3
3
  readonly label: string;
4
4
  constructor(status: number, label: string, detail: string);
5
5
  }
6
+ export declare const reservedZipShortOptions: Set<string>;
7
+ export declare const zipLongOptions: Readonly<Record<string, string>>;
6
8
  export declare function normalizeZipOption(argument: string): string;
9
+ export declare const zipNegatableOptions: Set<string>;
10
+ export declare function parseZipDotSize(value: string): number;
11
+ export declare function zipDisplaySize(size: number): string;
12
+ export declare function zipPasswordArgument(value: string): "attached" | "separate" | undefined;
13
+ export declare function zipPublicText(value: string): string;
7
14
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/options.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAtC,MAAM,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC5E;AA0BD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB3D"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/options.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAtC,MAAM,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC5E;AAID,eAAO,MAAM,uBAAuB,aAAkB,CAAC;AAEvD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe3D,CAAC;AAQF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB3D;AAED,eAAO,MAAM,mBAAmB,aAAuE,CAAC;AAExG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAUtF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBnD"}
@@ -7,10 +7,21 @@ export class ZipFailure extends Error {
7
7
  this.label = label;
8
8
  }
9
9
  }
10
- const longOptions = {
10
+ // Native two-character switches take precedence over grouped one-character
11
+ // flags. These collisions must fail before enabling delete, move or test.
12
+ export const reservedZipShortOptions = new Set(["mm"]);
13
+ export const zipLongOptions = {
14
+ "adjust-sfx": "A", fix: "F", fixfix: "FF",
15
+ "split-size": "s", "split-pause": "sp", "split-verbose": "sv", "split-bell": "sb",
16
+ fifo: "FI", "DOS-names": "k", regex: "RE",
17
+ password: "P", encrypt: "e",
18
+ "difference-archive": "DF", grow: "g", "temp-path": "b", "junk-sfx": "J",
19
+ "logfile-path": "lf", "log-append": "la", "log-info": "li", "unzip-command": "TT",
20
+ verbose: "v", version: "version", license: "L", "show-command": "sc", "show-debug": "sd", "show-files": "sf", "show-options": "so",
21
+ "display-bytes": "db", "display-counts": "dc", "display-dots": "dd", "display-globaldots": "dg", "dot-size": "ds", "display-usize": "du", "display-volume": "dv",
11
22
  "recurse-paths": "r", quiet: "q", "junk-paths": "j", paths: "p", help: "h", "more-help": "h2", "no-dir-entries": "D",
12
23
  symlinks: "y", test: "T", "names-stdin": "@", update: "u", freshen: "f", filesync: "FS", "archive-comment": "z", "entry-comments": "c", "latest-time": "o", move: "m", "to-crlf": "l",
13
- delete: "d", include: "i", exclude: "x", suffixes: "n", store: "0", "compression-method": "Z",
24
+ "from-crlf": "ll", delete: "d", include: "i", exclude: "x", suffixes: "n", store: "0", "compression-method": "Z",
14
25
  "compress-1": "1", "compress-2": "2", "compress-3": "3", "compress-4": "4",
15
26
  "compress-5": "5", "compress-6": "6", "compress-7": "7", "compress-8": "8",
16
27
  "compress-9": "9", "force-zip64": "fz", "strip-extra": "X", "force-descriptors": "fd", "no-wild": "nw", "wild-stop-dirs": "ws", "recurse-patterns": "R", "from-date": "t", "before-date": "tt", "copy-entries": "U", "output-file": "O", "must-match": "MM",
@@ -18,16 +29,7 @@ const longOptions = {
18
29
  // Include unimplemented Unix options when resolving abbreviations: a partial
19
30
  // implementation must not make native-ambiguous prefixes uniquely resolvable.
20
31
  const reservedOptions = [
21
- "adjust-sfx", "temp-path", "display-bytes", "display-counts",
22
- "display-dots", "display-globaldots", "dot-size", "display-usize", "display-volume",
23
- "difference-archive", "encrypt", "fix", "fixfix", "fifo",
24
- "grow", "junk-sfx",
25
- "DOS-names", "from-crlf", "logfile-path", "log-append", "log-info",
26
- "license",
27
- "password", "regex", "split-size", "split-pause",
28
- "split-verbose", "split-bell", "show-command", "show-debug", "show-files",
29
- "show-options", "unzip-command",
30
- "verbose", "version",
32
+ "show-unicode", "show-just-unicode",
31
33
  ];
32
34
  export function normalizeZipOption(argument) {
33
35
  if (!argument.startsWith("--") || argument === "--")
@@ -36,19 +38,88 @@ export function normalizeZipOption(argument) {
36
38
  const rawName = argument.slice(2, equal < 0 ? undefined : equal);
37
39
  const negate = rawName.endsWith("-");
38
40
  const name = negate ? rawName.slice(0, -1) : rawName;
39
- const names = [...Object.keys(longOptions), ...reservedOptions];
41
+ const names = [...Object.keys(zipLongOptions), ...reservedOptions];
40
42
  const matches = names.includes(name) ? [name] : names.filter(option => option.startsWith(name));
41
43
  if (matches.length > 1)
42
44
  throw new ZipFailure(16, "Invalid command arguments", `long option '${name}' ambiguous`);
43
45
  const matched = matches[0];
44
- const short = matched === undefined ? undefined : longOptions[matched];
46
+ const short = matched === undefined ? undefined : zipLongOptions[matched];
45
47
  if (!short)
46
- throw new ZipFailure(16, "Invalid command arguments", `unsupported option: ${argument}`);
47
- if (negate && short !== "fz" && short !== "X")
48
+ throw new ZipFailure(16, "Invalid command arguments", `unsupported option: --${name}`);
49
+ if (negate && !zipNegatableOptions.has(short))
48
50
  throw new ZipFailure(16, "Invalid command arguments", `option ${matched} is not negatable`);
49
- if (equal >= 0 && short !== "i" && short !== "x" && short !== "n" && short !== "Z" && short !== "t" && short !== "tt" && short !== "O") {
51
+ if (equal >= 0 && short !== "s" && short !== "P" && short !== "i" && short !== "x" && short !== "n" && short !== "Z" && short !== "t" && short !== "tt" && short !== "O" && short !== "ds" && short !== "b" && short !== "lf" && short !== "TT") {
50
52
  throw new ZipFailure(16, "Invalid command arguments", `option '${matched}' does not allow a value`);
51
53
  }
54
+ if (short === "version")
55
+ return "--version";
52
56
  return `-${short}${negate ? "-" : ""}${equal < 0 ? "" : argument.slice(equal)}`;
53
57
  }
58
+ export const zipNegatableOptions = new Set(["FI", "fz", "X", "db", "dc", "dd", "dg", "du", "dv", "sf"]);
59
+ export function parseZipDotSize(value) {
60
+ if (!value)
61
+ return 10 * 1024 * 1024;
62
+ let end = 0;
63
+ while (end < value.length && value[end] >= "0" && value[end] <= "9")
64
+ end++;
65
+ const unit = value.slice(end).toLowerCase();
66
+ const multiplier = { "": 1, k: 1024, m: 1024 ** 2, g: 1024 ** 3, t: 1024 ** 4 }[unit];
67
+ const size = Number(value.slice(0, end)) * (multiplier ?? 0);
68
+ if (!end || value.length > 8 || multiplier === undefined || !Number.isSafeInteger(size)) {
69
+ throw new ZipFailure(16, "Invalid command arguments", "option -ds (--dot-size) has bad size");
70
+ }
71
+ if (size >= 1024 && size < 32 * 1024)
72
+ throw new ZipFailure(16, "Invalid command arguments", "dot size must be at least 32 KB");
73
+ return size < 1024 ? size * 1024 ** 2 : size;
74
+ }
75
+ export function zipDisplaySize(size) {
76
+ let unit = 0;
77
+ while (size >= 10240) {
78
+ size = Math.floor(size / 1024);
79
+ unit++;
80
+ }
81
+ const number = size >= 1000 ? (Math.floor(size * 10 / 1024) / 10).toFixed(1) : String(size);
82
+ if (size >= 1000)
83
+ unit++;
84
+ return `${number}${["", "K", "M", "G", "T"][unit] ?? "T"}`;
85
+ }
86
+ // Diagnostic arguments can be literal paths as well as options. Never expose
87
+ // credentials merely because an option-shaped path follows the -- terminator.
88
+ export function zipPasswordArgument(value) {
89
+ if (value.startsWith("--")) {
90
+ const equal = value.indexOf("=");
91
+ const name = value.slice(2, equal < 0 ? undefined : equal);
92
+ if (name.length >= 3 && "password".startsWith(name))
93
+ return equal < 0 ? "separate" : "attached";
94
+ }
95
+ else if (value.startsWith("-")) {
96
+ const password = value.indexOf("P", 1);
97
+ if (password >= 0)
98
+ return password === value.length - 1 ? "separate" : "attached";
99
+ }
100
+ return undefined;
101
+ }
102
+ export function zipPublicText(value) {
103
+ const lower = value.toLowerCase();
104
+ if (zipPasswordArgument(value) || lower.includes("password") || lower.includes("token=") || lower.includes("secret="))
105
+ return "[redacted]";
106
+ // Special URL schemes can carry credentials even with omitted authority
107
+ // slashes. Refuse those noncanonical forms before displaying path text.
108
+ if (value.includes("://") || ["http:", "https:", "ftp:", "ws:", "wss:"].some(scheme => lower.includes(scheme))) {
109
+ try {
110
+ const url = new URL(value);
111
+ if (!value.startsWith(`${url.protocol}//`))
112
+ return "[redacted URL]";
113
+ url.username = "";
114
+ url.password = "";
115
+ url.search = "";
116
+ url.hash = "";
117
+ return url.toString();
118
+ }
119
+ catch {
120
+ return "[redacted URL]";
121
+ }
122
+ }
123
+ return value;
124
+ }
54
125
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACd;IAAyB;IAA9C,YAAqB,MAAc,EAAW,KAAa,EAAE,MAAc;QAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAAxE,WAAM,GAAN,MAAM,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAQ;IAAmC,CAAC;CAChG;AAED,MAAM,WAAW,GAAqC;IACpD,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG;IACpH,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IACrL,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG;IAC7F,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;IAC1E,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;IAC1E,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI;CAC5P,CAAC;AAEF,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,eAAe,GAAG;IACtB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB;IAC5D,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB;IACnF,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;IACxD,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU;IAClE,SAAS;IACT,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa;IAChD,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY;IACzE,cAAc,EAAE,eAAe;IAC/B,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,gBAAgB,IAAI,aAAa,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IACrG,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG;QAAE,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,UAAU,OAAO,mBAAmB,CAAC,CAAC;IAC3I,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACvI,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,WAAW,OAAO,0BAA0B,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type ArchiveLimits } from "../internal.js";
2
+ import { type ZipArchive } from "../zip-format.js";
3
+ /** Recovery is opt-in. Signatures nominate records; the normal reader and
4
+ * codecs validate metadata, descriptors, names, sizes and CRC before retention. */
5
+ export declare function repairZip(bytes: Uint8Array, mode: "F" | "FF", limits: ArchiveLimits, signal: AbortSignal, password?: Uint8Array): Promise<{
6
+ archive: ZipArchive;
7
+ partial: boolean;
8
+ }>;
9
+ /** Adjust a validated SFX using owned bytes; prefix bytes are inert. */
10
+ export declare function adjustZipSfx(bytes: Uint8Array, archive: ZipArchive, limits: ArchiveLimits, signal: AbortSignal, password?: Uint8Array): Promise<Uint8Array>;
11
+ //# sourceMappingURL=repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/repair.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAkC,KAAK,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAoBlG;mFACmF;AACnF,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAoN1L;AAED,wEAAwE;AACxE,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CA+CjK"}