@poe-platform/safe-bash 0.1.532 → 0.1.534
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/commands/archive/index.d.ts +2 -0
- package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/index.js +11 -3
- package/dist/safe-bash/commands/archive/index.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +32 -0
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/unzip/arguments.js +214 -0
- package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -0
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts +28 -0
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/unzip/safety.js +288 -0
- package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -0
- package/dist/safe-bash/commands/archive/unzip.d.ts +4 -0
- package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/unzip.js +264 -0
- package/dist/safe-bash/commands/archive/unzip.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/safety.d.ts +28 -0
- package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/safety.js +228 -0
- package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip-format.d.ts +39 -0
- package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip-format.js +509 -0
- package/dist/safe-bash/commands/archive/zip-format.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip.d.ts +4 -0
- package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip.js +290 -0
- package/dist/safe-bash/commands/archive/zip.js.map +1 -0
- package/dist/safe-bash/commands/bytes/compression/codec.d.ts +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec.js +2 -2
- package/dist/safe-bash/commands/bytes/compression/codec.js.map +1 -1
- package/dist/safe-bash/core.browser.js +1937 -389
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/dist/safe-bash/shell/runtime.d.ts +1 -0
- package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
- package/dist/safe-bash/shell/runtime.js +4 -1
- package/dist/safe-bash/shell/runtime.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { collectBytes, dirname, getCommandArguments, writeBytes } from "../../contracts/index.js";
|
|
2
|
+
import { shellValueByteLength, shellValueBytes } from "../../contracts/value.js";
|
|
3
|
+
import { writeFileOutput } from "../../contracts/filesystem-output.js";
|
|
4
|
+
import { yieldTurn } from "../../contracts/yield.js";
|
|
5
|
+
import { publicDiagnosticMessage } from "../../diagnostics.js";
|
|
6
|
+
import { escapeText } from "../../escaping.js";
|
|
7
|
+
import { Budget, checkPath, display, fail, hasIdentity, sameIdentity, settings, text, vfsPath } from "./internal.js";
|
|
8
|
+
import { makeZipEntry, readZipArchive, writeZipArchive } from "./zip-format.js";
|
|
9
|
+
import { publishZip, ZipScope } from "./zip/safety.js";
|
|
10
|
+
class ZipFailure extends Error {
|
|
11
|
+
status;
|
|
12
|
+
label;
|
|
13
|
+
constructor(status, label, detail) {
|
|
14
|
+
super(detail);
|
|
15
|
+
this.status = status;
|
|
16
|
+
this.label = label;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function parse(context, limits) {
|
|
20
|
+
if (context.args.length > limits.maxArgumentBytes)
|
|
21
|
+
fail("argument count limit exceeded");
|
|
22
|
+
let bytes = 0;
|
|
23
|
+
for (const argument of context.args) {
|
|
24
|
+
const size = Buffer.byteLength(argument);
|
|
25
|
+
if (size > limits.maxArgumentBytes - bytes)
|
|
26
|
+
fail("argument byte limit exceeded");
|
|
27
|
+
bytes += size;
|
|
28
|
+
}
|
|
29
|
+
if (context.argumentValues) {
|
|
30
|
+
const argumentsValue = getCommandArguments(context);
|
|
31
|
+
let rawBytes = 0;
|
|
32
|
+
for (const value of argumentsValue.values) {
|
|
33
|
+
const size = shellValueByteLength(value);
|
|
34
|
+
if (size > limits.maxArgumentBytes - rawBytes)
|
|
35
|
+
fail("argument byte limit exceeded");
|
|
36
|
+
rawBytes += size;
|
|
37
|
+
}
|
|
38
|
+
for (const value of argumentsValue.values)
|
|
39
|
+
text(shellValueBytes(value));
|
|
40
|
+
}
|
|
41
|
+
let archive;
|
|
42
|
+
let recursive = false;
|
|
43
|
+
let literal = false;
|
|
44
|
+
let firstOperand = -1;
|
|
45
|
+
const operands = [];
|
|
46
|
+
for (const [index, argument] of context.args.entries()) {
|
|
47
|
+
checkPath(argument, limits);
|
|
48
|
+
if (!literal && argument === "--") {
|
|
49
|
+
if (archive === undefined)
|
|
50
|
+
throw new ZipFailure(16, "Invalid command arguments", "can't use -- before archive name");
|
|
51
|
+
literal = true;
|
|
52
|
+
}
|
|
53
|
+
else if (!literal && argument.startsWith("-") && argument !== "-") {
|
|
54
|
+
if (argument.length > 1 && [...argument.slice(1)].every(flag => flag === "r"))
|
|
55
|
+
recursive = true;
|
|
56
|
+
else
|
|
57
|
+
throw new ZipFailure(16, "Invalid command arguments", `unsupported option: ${argument}`);
|
|
58
|
+
}
|
|
59
|
+
else if (archive === undefined)
|
|
60
|
+
archive = argument;
|
|
61
|
+
else {
|
|
62
|
+
if (operands.length >= limits.maxMembers)
|
|
63
|
+
fail("operand limit exceeded");
|
|
64
|
+
if (firstOperand < 0)
|
|
65
|
+
firstOperand = index;
|
|
66
|
+
operands.push(argument);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (archive === undefined)
|
|
70
|
+
throw new ZipFailure(16, "Invalid command arguments", "expected zip [-r] ARCHIVE FILES...");
|
|
71
|
+
if (archive === "-" || operands.includes("-"))
|
|
72
|
+
throw new ZipFailure(16, "Invalid command arguments", "standard input/output archives are unsupported");
|
|
73
|
+
if (!archive.slice(archive.lastIndexOf("/") + 1).includes("."))
|
|
74
|
+
archive += ".zip";
|
|
75
|
+
checkPath(archive, limits);
|
|
76
|
+
return { archive, recursive, operands, firstOperand };
|
|
77
|
+
}
|
|
78
|
+
function memberName(path, limits) {
|
|
79
|
+
if (path.startsWith("//") && !path.startsWith("///"))
|
|
80
|
+
fail("UNC source paths are unsupported");
|
|
81
|
+
let start = 0;
|
|
82
|
+
while (path[start] === "/")
|
|
83
|
+
start++;
|
|
84
|
+
while (path.slice(start, start + 2) === "./")
|
|
85
|
+
start += 2;
|
|
86
|
+
const name = path.slice(start);
|
|
87
|
+
if (name.split("/").includes(".."))
|
|
88
|
+
fail("parent-component archive names are unsupported");
|
|
89
|
+
if (name && name !== ".")
|
|
90
|
+
checkPath(name, limits);
|
|
91
|
+
return name === "." ? "" : name;
|
|
92
|
+
}
|
|
93
|
+
function unchanged(before, after) {
|
|
94
|
+
return before.type === after.type && before.size === after.size && before.mode === after.mode
|
|
95
|
+
&& before.mtimeMs === after.mtimeMs && before.ctimeMs === after.ctimeMs
|
|
96
|
+
&& before.nlink === after.nlink && (!hasIdentity(before) || sameIdentity(before, after));
|
|
97
|
+
}
|
|
98
|
+
async function prepare(scope, parsed, budget) {
|
|
99
|
+
const context = scope.context;
|
|
100
|
+
const limits = budget.limits;
|
|
101
|
+
const outputName = vfsPath(context.cwd, parsed.archive);
|
|
102
|
+
const parentName = dirname(outputName);
|
|
103
|
+
const parent = await scope.operation(() => context.fs.realpath(parentName, { signal: context.signal }));
|
|
104
|
+
const output = `${parent === "/" ? "" : parent}/${outputName.slice(outputName.lastIndexOf("/") + 1)}`;
|
|
105
|
+
checkPath(output, limits);
|
|
106
|
+
const existing = await scope.stat(output);
|
|
107
|
+
if (existing && (existing.type !== "file" || !hasIdentity(existing) || existing.nlink !== 1))
|
|
108
|
+
fail("updating archive requires a regular, single-link file with known backing identity; archive aliases are unsupported");
|
|
109
|
+
let archive = { entries: [], comment: new Uint8Array() };
|
|
110
|
+
if (existing) {
|
|
111
|
+
if (!Number.isSafeInteger(existing.size) || existing.size < 0 || existing.size > limits.maxArchiveBytes)
|
|
112
|
+
fail("archive byte limit exceeded");
|
|
113
|
+
const bytes = await collectBytes(scope.input(output), { maxBytes: limits.maxArchiveBytes, signal: context.signal });
|
|
114
|
+
if (bytes.length !== existing.size)
|
|
115
|
+
fail("archive changed while reading");
|
|
116
|
+
archive = await readZipArchive(bytes, limits, context.signal);
|
|
117
|
+
const current = await scope.stat(output);
|
|
118
|
+
if (!current || !unchanged(existing, current))
|
|
119
|
+
fail("archive changed while reading");
|
|
120
|
+
}
|
|
121
|
+
const old = new Map(archive.entries.map(entry => [entry.name, entry]));
|
|
122
|
+
const selected = new Map();
|
|
123
|
+
const ancestors = [];
|
|
124
|
+
let visits = 0;
|
|
125
|
+
let work = 0;
|
|
126
|
+
let compressedBytes = 0;
|
|
127
|
+
const visit = async (source, name, depth) => {
|
|
128
|
+
context.signal.throwIfAborted();
|
|
129
|
+
if (++visits > limits.maxMembers)
|
|
130
|
+
fail("traversal member limit exceeded");
|
|
131
|
+
if (++work > limits.maxPatternSteps)
|
|
132
|
+
fail("archive work limit exceeded");
|
|
133
|
+
if (visits % 128 === 0)
|
|
134
|
+
await yieldTurn(context.signal);
|
|
135
|
+
if (depth > limits.maxDepth)
|
|
136
|
+
fail("archive recursion depth limit exceeded");
|
|
137
|
+
const path = vfsPath(context.cwd, source);
|
|
138
|
+
checkPath(path, limits);
|
|
139
|
+
let canonical;
|
|
140
|
+
let stat;
|
|
141
|
+
try {
|
|
142
|
+
canonical = await scope.operation(() => context.fs.realpath(path, { signal: context.signal }));
|
|
143
|
+
stat = await scope.operation(() => context.fs.stat(path, { signal: context.signal }));
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
context.signal.throwIfAborted();
|
|
147
|
+
if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
|
|
148
|
+
throw error;
|
|
149
|
+
if (!old.has(name))
|
|
150
|
+
await budget.output(`\tzip warning: name not matched: ${source}\n`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
checkPath(canonical, limits);
|
|
154
|
+
if (canonical === output || (existing && sameIdentity(existing, stat)))
|
|
155
|
+
return;
|
|
156
|
+
if (stat.type !== "file" && stat.type !== "directory") {
|
|
157
|
+
await budget.output(`\tzip warning: ignoring special file: ${source}\n`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (existing && !hasIdentity(stat))
|
|
161
|
+
fail("cannot exclude archive aliases when source backing identity is unknown");
|
|
162
|
+
const directory = stat.type === "directory";
|
|
163
|
+
if (directory && name && !name.endsWith("/"))
|
|
164
|
+
name += "/";
|
|
165
|
+
if (name) {
|
|
166
|
+
checkPath(name, limits);
|
|
167
|
+
const previous = selected.get(name);
|
|
168
|
+
if (previous && previous.source !== source) {
|
|
169
|
+
await budget.output(`\tzip warning: first full name: ${previous.source}\n second full name: ${source}\n name in zip file repeated: ${name}\n`);
|
|
170
|
+
throw new ZipFailure(16, "Invalid command arguments", "cannot repeat names in zip file");
|
|
171
|
+
}
|
|
172
|
+
if (!previous) {
|
|
173
|
+
await budget.member(directory ? 0 : stat.size);
|
|
174
|
+
const bytes = directory ? new Uint8Array() : await collectBytes(scope.input(path), { maxBytes: stat.size, signal: context.signal });
|
|
175
|
+
if (!directory && bytes.length !== stat.size)
|
|
176
|
+
fail(`source changed while reading: ${source}`);
|
|
177
|
+
const current = await scope.operation(() => context.fs.stat(path, { signal: context.signal }));
|
|
178
|
+
const currentPath = await scope.operation(() => context.fs.realpath(path, { signal: context.signal }));
|
|
179
|
+
if (currentPath !== canonical || !unchanged(stat, current))
|
|
180
|
+
fail(`source changed while reading: ${source}`);
|
|
181
|
+
let entry = await makeZipEntry(name, bytes, { modified: new Date(stat.mtimeMs), mode: stat.mode, directory, symlink: false }, limits, context.signal);
|
|
182
|
+
if ([".z", ".zip", ".zoo", ".arc", ".lzh", ".arj"].some(suffix => name.toLowerCase().endsWith(suffix)))
|
|
183
|
+
entry = { ...entry, method: 0, data: bytes };
|
|
184
|
+
const prior = old.get(name);
|
|
185
|
+
if (prior?.comment)
|
|
186
|
+
entry = { ...entry, comment: prior.comment };
|
|
187
|
+
if (entry.data.length > limits.maxArchiveBytes - compressedBytes)
|
|
188
|
+
fail("archive byte limit exceeded");
|
|
189
|
+
compressedBytes += entry.data.length;
|
|
190
|
+
selected.set(name, { entry, source });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (directory && parsed.recursive) {
|
|
194
|
+
if (ancestors.some(ancestor => ancestor.path === canonical || sameIdentity(ancestor.stat, stat)))
|
|
195
|
+
fail(`directory cycle while archiving: ${source}`);
|
|
196
|
+
ancestors.push({ path: canonical, stat });
|
|
197
|
+
try {
|
|
198
|
+
const children = await scope.operation(() => context.fs.readdir(path, { signal: context.signal, maxEntries: limits.maxMembers - visits }));
|
|
199
|
+
if (children.length > limits.maxMembers - visits)
|
|
200
|
+
fail("traversal member limit exceeded");
|
|
201
|
+
for (const child of children) {
|
|
202
|
+
if (!child.name || child.name === "." || child.name === ".." || child.name.includes("/") || child.name.includes("\0"))
|
|
203
|
+
fail("invalid filesystem directory entry");
|
|
204
|
+
const prefix = source === "." ? "" : source.endsWith("/") ? source : `${source}/`;
|
|
205
|
+
await visit(`${prefix}${child.name}`, `${name}${child.name}`, depth + 1);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
ancestors.pop();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
for (const operand of parsed.operands)
|
|
214
|
+
await visit(operand, memberName(operand, limits), 0);
|
|
215
|
+
if (!selected.size) {
|
|
216
|
+
const detail = parsed.recursive && parsed.firstOperand >= 0
|
|
217
|
+
? `try: zip ${context.args.slice(0, parsed.firstOperand).join(" ")} . -i ${context.args.slice(parsed.firstOperand).join(" ")}`
|
|
218
|
+
: parsed.archive;
|
|
219
|
+
throw new ZipFailure(12, "Nothing to do!", detail);
|
|
220
|
+
}
|
|
221
|
+
const entries = [];
|
|
222
|
+
const progress = [];
|
|
223
|
+
let progressBytes = 0;
|
|
224
|
+
const append = (entry, update) => {
|
|
225
|
+
const percentage = entry.size ? Math.trunc((Math.trunc(200 * (entry.size - entry.data.length) / entry.size) + 1) / 2) : 0;
|
|
226
|
+
const message = `${update ? "updating:" : " adding:"} ${entry.name} (${entry.method === 8 ? `deflated ${percentage}%` : "stored 0%"})\n`;
|
|
227
|
+
const size = Buffer.byteLength(message);
|
|
228
|
+
if (size > limits.maxTextBytes - budget.textBytes - progressBytes)
|
|
229
|
+
fail("text output limit exceeded");
|
|
230
|
+
progressBytes += size;
|
|
231
|
+
progress.push(message);
|
|
232
|
+
};
|
|
233
|
+
for (const entry of archive.entries) {
|
|
234
|
+
if (++work > limits.maxPatternSteps)
|
|
235
|
+
fail("archive work limit exceeded");
|
|
236
|
+
const replacement = selected.get(entry.name);
|
|
237
|
+
if (replacement) {
|
|
238
|
+
entries.push(replacement.entry);
|
|
239
|
+
append(replacement.entry, true);
|
|
240
|
+
selected.delete(entry.name);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
await budget.member(entry.size);
|
|
244
|
+
entries.push(entry);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
for (const { entry } of selected.values()) {
|
|
248
|
+
entries.push(entry);
|
|
249
|
+
append(entry, false);
|
|
250
|
+
}
|
|
251
|
+
const bytes = await writeZipArchive({ entries, comment: archive.comment }, limits, context.signal);
|
|
252
|
+
return { output, parentName, parent, existing, bytes, progress };
|
|
253
|
+
}
|
|
254
|
+
export function createZipCommand(options = {}) {
|
|
255
|
+
const limits = settings(options);
|
|
256
|
+
return { name: "zip", description: "Create or update bounded ZIP archives in the virtual filesystem", async execute(original) {
|
|
257
|
+
original.signal.throwIfAborted();
|
|
258
|
+
const scope = new ZipScope(original, limits);
|
|
259
|
+
const context = scope.context;
|
|
260
|
+
const budget = new Budget(context, limits);
|
|
261
|
+
try {
|
|
262
|
+
const parsed = parse(context, limits);
|
|
263
|
+
const prepared = await prepare(scope, parsed, budget);
|
|
264
|
+
await writeFileOutput(context, prepared.bytes, () => scope.operation(() => publishZip(scope, prepared)));
|
|
265
|
+
for (const message of prepared.progress)
|
|
266
|
+
await budget.output(message);
|
|
267
|
+
return { exitCode: 0 };
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
original.signal.throwIfAborted();
|
|
271
|
+
context.signal.throwIfAborted();
|
|
272
|
+
if (error instanceof ZipFailure) {
|
|
273
|
+
await budget.output(`\nzip error: ${error.label} (${error.message})\n`);
|
|
274
|
+
return { exitCode: error.status };
|
|
275
|
+
}
|
|
276
|
+
const message = escapeText(display(publicDiagnosticMessage(error, context.onInternalError).slice(0, 1024)), "diagnostic");
|
|
277
|
+
await writeBytes(context.stderr, Buffer.from(`zip: ${message}\n`).subarray(0, limits.maxDiagnosticBytes), context.signal);
|
|
278
|
+
return { exitCode: 2 };
|
|
279
|
+
}
|
|
280
|
+
finally {
|
|
281
|
+
try {
|
|
282
|
+
await scope.close();
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
original.signal.throwIfAborted();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
} };
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=zip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../../src/commands/archive/zip.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare class CodecReader implements CodecInput {
|
|
|
15
15
|
close(): Promise<void>;
|
|
16
16
|
}
|
|
17
17
|
interface CodecOptions {
|
|
18
|
-
readonly mode: "gzip" | "gunzip" | "inflate-raw";
|
|
18
|
+
readonly mode: "gzip" | "gunzip" | "inflate-raw" | "deflate-raw";
|
|
19
19
|
readonly chunkSize?: number;
|
|
20
20
|
readonly level?: number;
|
|
21
21
|
readonly onFailure?: (error: unknown) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../src/commands/bytes/compression/codec.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAIzE,MAAM,WAAW,UAAU;IACzB,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,qBAAa,WAAY,YAAW,UAAU;IAKZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAA4B;gBAC/B,MAAM,EAAE,UAAU,EAAmB,MAAM,EAAE,WAAW;IAC9D,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAW9C,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvB;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../src/commands/bytes/compression/codec.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAIzE,MAAM,WAAW,UAAU;IACzB,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,qBAAa,WAAY,YAAW,UAAU;IAKZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAA4B;gBAC/B,MAAM,EAAE,UAAU,EAAmB,MAAM,EAAE,WAAW;IAC9D,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAW9C,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvB;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAQD,wBAAuB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAqGtG"}
|
|
@@ -50,10 +50,10 @@ export async function* codec(input, options, signal) {
|
|
|
50
50
|
throw new RangeError("invalid codec chunk size");
|
|
51
51
|
const chunkSize = Math.min(requestedSize, 64 * 1024);
|
|
52
52
|
let output = new Uint8Array(chunkSize);
|
|
53
|
-
const encoding = options.mode === "gzip";
|
|
53
|
+
const encoding = options.mode === "gzip" || options.mode === "deflate-raw";
|
|
54
54
|
const stream = new ZStream();
|
|
55
55
|
const initialized = encoding
|
|
56
|
-
? zlibDeflateInit2(stream, options.level ?? 6, 8, 31, 8, 0, true)
|
|
56
|
+
? zlibDeflateInit2(stream, options.level ?? 6, 8, options.mode === "deflate-raw" ? -15 : 31, 8, 0, true)
|
|
57
57
|
: zlibInflateInit2(stream, options.mode === "inflate-raw" ? -15 : 31);
|
|
58
58
|
if (initialized !== Z_OK) {
|
|
59
59
|
if (encoding)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../../src/commands/bytes/compression/codec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../../src/commands/bytes/compression/codec.ts"],"names":[],"mappings":"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"}
|