@poe-platform/safe-bash 0.1.656 → 0.1.658
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/safe-bash/chunks/{chunk-43HWIHXB.js → chunk-Z4UKD5FF.js} +192 -61
- package/dist/safe-bash/chunks/chunk-Z4UKD5FF.js.map +7 -0
- package/dist/safe-bash/chunks/{xz-U4QDTPZL.js → xz-4V5FXSPG.js} +555 -514
- package/dist/safe-bash/chunks/xz-4V5FXSPG.js.map +7 -0
- package/dist/safe-bash/commands/archive/index.d.ts +1 -1
- package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/internal.d.ts +32 -0
- package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/internal.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +3 -0
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/arguments.js +31 -5
- package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts +4 -0
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/safety.js +3 -0
- package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip.js +159 -112
- package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +2 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +3 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +2 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.js +3 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes.d.ts +18 -0
- package/dist/safe-bash/commands/archive/zip/aes.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes.js +157 -0
- package/dist/safe-bash/commands/archive/zip/aes.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts +16 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/crypto.js +85 -0
- package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/grow.d.ts +4 -0
- package/dist/safe-bash/commands/archive/zip/grow.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/grow.js +3 -0
- package/dist/safe-bash/commands/archive/zip/grow.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/help.d.ts +4 -2
- package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/help.js +98 -3
- package/dist/safe-bash/commands/archive/zip/help.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -0
- package/dist/safe-bash/commands/archive/zip/line-endings.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/line-endings.js +158 -0
- package/dist/safe-bash/commands/archive/zip/line-endings.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/log.d.ts +23 -0
- package/dist/safe-bash/commands/archive/zip/log.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/log.js +159 -0
- package/dist/safe-bash/commands/archive/zip/log.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/lzma.d.ts +10 -0
- package/dist/safe-bash/commands/archive/zip/lzma.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/lzma.js +41 -0
- package/dist/safe-bash/commands/archive/zip/lzma.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/names.d.ts +3 -0
- package/dist/safe-bash/commands/archive/zip/names.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/names.js +34 -0
- package/dist/safe-bash/commands/archive/zip/names.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/options.d.ts +7 -0
- package/dist/safe-bash/commands/archive/zip/options.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/options.js +88 -17
- package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/repair.d.ts +11 -0
- package/dist/safe-bash/commands/archive/zip/repair.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/repair.js +392 -0
- package/dist/safe-bash/commands/archive/zip/repair.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/safety.d.ts +23 -4
- package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/safety.js +73 -23
- package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/sfx.d.ts +5 -0
- package/dist/safe-bash/commands/archive/zip/sfx.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/sfx.js +56 -0
- package/dist/safe-bash/commands/archive/zip/sfx.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/test-command.d.ts +6 -0
- package/dist/safe-bash/commands/archive/zip/test-command.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/test-command.js +101 -0
- package/dist/safe-bash/commands/archive/zip/test-command.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/volumes.d.ts +22 -0
- package/dist/safe-bash/commands/archive/zip/volumes.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/volumes.js +265 -0
- package/dist/safe-bash/commands/archive/zip/volumes.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/zip64.d.ts +20 -1
- package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/zip64.js +127 -17
- package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.d.ts +30 -5
- package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.js +489 -91
- package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip.js +729 -128
- package/dist/safe-bash/commands/archive/zip.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +7 -0
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.js +8 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +1 -1
- package/dist/safe-bash/commands/bytes/compression/native/sources.json +2 -2
- package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +1 -0
- package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/cache.d.ts +11 -0
- package/dist/safe-bash/commands/python/cache.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/cache.js +41 -0
- package/dist/safe-bash/commands/python/cache.js.map +1 -0
- package/dist/safe-bash/commands/python/index.browser.js +7 -1
- package/dist/safe-bash/commands/python/index.d.ts +6 -2
- package/dist/safe-bash/commands/python/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/index.js +16 -10
- package/dist/safe-bash/commands/python/index.js.map +1 -1
- package/dist/safe-bash/commands/python/manifest.d.ts +23 -0
- package/dist/safe-bash/commands/python/manifest.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/manifest.js +48 -0
- package/dist/safe-bash/commands/python/manifest.js.map +1 -0
- package/dist/safe-bash/commands/python/provisioning.d.ts +17 -13
- package/dist/safe-bash/commands/python/provisioning.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/provisioning.js +88 -46
- package/dist/safe-bash/commands/python/provisioning.js.map +1 -1
- package/dist/safe-bash/commands/text.js +1 -1
- package/dist/safe-bash/commands/text.js.map +1 -1
- package/dist/safe-bash/core.browser.js +3113 -718
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/package.json +11 -3
- package/dist/safe-bash/chunks/chunk-43HWIHXB.js.map +0 -7
- 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 @@
|
|
|
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;
|
|
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
|
-
|
|
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
|
-
"
|
|
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(
|
|
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 :
|
|
46
|
+
const short = matched === undefined ? undefined : zipLongOptions[matched];
|
|
45
47
|
if (!short)
|
|
46
|
-
throw new ZipFailure(16, "Invalid command arguments", `unsupported option:
|
|
47
|
-
if (negate && short
|
|
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,
|
|
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,2EAA2E;AAC3E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI;IACzC,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI;IACjF,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI;IACzC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;IAC3B,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG;IACxE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI;IACjF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;IAClI,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI;IAChK,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,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG;IAChH,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,cAAc,EAAE,mBAAmB;CACpC,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,cAAc,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;IACnE,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,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnG,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;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,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChP,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,WAAW,OAAO,0BAA0B,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,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;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAExG,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAE,IAAI,GAAG;QAAE,GAAG,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,sCAAsC,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,2BAA2B,EAAE,iCAAiC,CAAC,CAAC;IAC/H,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5F,IAAI,IAAI,IAAI,IAAI;QAAE,IAAI,EAAE,CAAC;IACzB,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAC7D,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAClG,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,QAAQ,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3I,wEAAwE;IACxE,wEAAwE;IACxE,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/G,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACpE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;YAClB,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,gBAAgB,CAAC;QAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -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"}
|