poe-code 15.0.5 → 15.0.6

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 (59) hide show
  1. package/dist/metafile.json +1 -1
  2. package/package.json +1 -1
  3. package/packages/safe-bash/dist/commands/archive/index.d.ts +2 -0
  4. package/packages/safe-bash/dist/commands/archive/index.d.ts.map +1 -1
  5. package/packages/safe-bash/dist/commands/archive/index.js +11 -3
  6. package/packages/safe-bash/dist/commands/archive/index.js.map +1 -1
  7. package/packages/safe-bash/dist/commands/archive/unzip/arguments.d.ts +32 -0
  8. package/packages/safe-bash/dist/commands/archive/unzip/arguments.d.ts.map +1 -0
  9. package/packages/safe-bash/dist/commands/archive/unzip/arguments.js +214 -0
  10. package/packages/safe-bash/dist/commands/archive/unzip/arguments.js.map +1 -0
  11. package/packages/safe-bash/dist/commands/archive/unzip/safety.d.ts +28 -0
  12. package/packages/safe-bash/dist/commands/archive/unzip/safety.d.ts.map +1 -0
  13. package/packages/safe-bash/dist/commands/archive/unzip/safety.js +288 -0
  14. package/packages/safe-bash/dist/commands/archive/unzip/safety.js.map +1 -0
  15. package/packages/safe-bash/dist/commands/archive/unzip.d.ts +4 -0
  16. package/packages/safe-bash/dist/commands/archive/unzip.d.ts.map +1 -0
  17. package/packages/safe-bash/dist/commands/archive/unzip.js +264 -0
  18. package/packages/safe-bash/dist/commands/archive/unzip.js.map +1 -0
  19. package/packages/safe-bash/dist/commands/archive/zip/safety.d.ts +28 -0
  20. package/packages/safe-bash/dist/commands/archive/zip/safety.d.ts.map +1 -0
  21. package/packages/safe-bash/dist/commands/archive/zip/safety.js +228 -0
  22. package/packages/safe-bash/dist/commands/archive/zip/safety.js.map +1 -0
  23. package/packages/safe-bash/dist/commands/archive/zip-format.d.ts +39 -0
  24. package/packages/safe-bash/dist/commands/archive/zip-format.d.ts.map +1 -0
  25. package/packages/safe-bash/dist/commands/archive/zip-format.js +509 -0
  26. package/packages/safe-bash/dist/commands/archive/zip-format.js.map +1 -0
  27. package/packages/safe-bash/dist/commands/archive/zip.d.ts +4 -0
  28. package/packages/safe-bash/dist/commands/archive/zip.d.ts.map +1 -0
  29. package/packages/safe-bash/dist/commands/archive/zip.js +290 -0
  30. package/packages/safe-bash/dist/commands/archive/zip.js.map +1 -0
  31. package/packages/safe-bash/dist/commands/bytes/compression/codec.d.ts +1 -1
  32. package/packages/safe-bash/dist/commands/bytes/compression/codec.d.ts.map +1 -1
  33. package/packages/safe-bash/dist/commands/bytes/compression/codec.js +2 -2
  34. package/packages/safe-bash/dist/commands/bytes/compression/codec.js.map +1 -1
  35. package/packages/safe-bash/dist/core.browser.js +1937 -389
  36. package/packages/safe-bash/dist/core.browser.js.map +4 -4
  37. package/packages/safe-bash/dist/shell/runtime.d.ts +1 -0
  38. package/packages/safe-bash/dist/shell/runtime.d.ts.map +1 -1
  39. package/packages/safe-bash/dist/shell/runtime.js +4 -1
  40. package/packages/safe-bash/dist/shell/runtime.js.map +1 -1
  41. package/packages/safe-fs/dist/core.d.ts +2 -1
  42. package/packages/safe-fs/dist/fs/scoped.d.ts +12 -2
  43. package/packages/safe-fs/dist/index.d.ts +2 -1
  44. package/packages/safe-js/dist/browser/chunks/{chunk-GQOAEEHU.js → chunk-3EJ7BQOJ.js} +89 -5
  45. package/packages/safe-js/dist/browser/chunks/{chunk-GQOAEEHU.js.map → chunk-3EJ7BQOJ.js.map} +3 -3
  46. package/packages/safe-js/dist/browser/safe-fs-core.js +3 -1
  47. package/packages/safe-js/dist/browser/safe-fs.js +3 -1
  48. package/packages/safe-js/dist/chunks/{chunk-DIISVPWF.js → chunk-742TUUOL.js} +89 -5
  49. package/packages/safe-js/dist/chunks/{chunk-DIISVPWF.js.map → chunk-742TUUOL.js.map} +3 -3
  50. package/packages/safe-js/dist/chunks/{chunk-L6LDJNBY.js → chunk-NMX3FJ3X.js} +3 -3
  51. package/packages/safe-js/dist/chunks/{chunk-CAWKMCKD.js → chunk-UVHJFEFO.js} +2 -2
  52. package/packages/safe-js/dist/cli.js +3 -3
  53. package/packages/safe-js/dist/index.js +3 -3
  54. package/packages/safe-js/dist/safe-fs-core.js +3 -1
  55. package/packages/safe-js/dist/safe-fs-core.js.map +1 -1
  56. package/packages/safe-js/dist/safe-fs-node.js +4 -2
  57. package/packages/safe-js/dist/safe-fs.js +4 -2
  58. /package/packages/safe-js/dist/chunks/{chunk-L6LDJNBY.js.map → chunk-NMX3FJ3X.js.map} +0 -0
  59. /package/packages/safe-js/dist/chunks/{chunk-CAWKMCKD.js.map → chunk-UVHJFEFO.js.map} +0 -0
@@ -0,0 +1,228 @@
1
+ import { readBytes } from "../../../contracts/index.js";
2
+ import { retainFileSystemCleanup } from "poe-code/safe-fs/core";
3
+ import { checkPath, fail, hasIdentity, sameIdentity } from "../internal.js";
4
+ export class ZipScope {
5
+ original;
6
+ limits;
7
+ context;
8
+ controller = new AbortController();
9
+ pending = new Set();
10
+ readers = new Set();
11
+ closedReason = new Error("ZIP command is closed");
12
+ drain;
13
+ work = 0;
14
+ constructor(original, limits) {
15
+ this.original = original;
16
+ this.limits = limits;
17
+ this.context = { ...original, signal: AbortSignal.any([original.signal, this.controller.signal]) };
18
+ original.registerCleanup?.(this.close);
19
+ }
20
+ close = () => {
21
+ if (!this.drain) {
22
+ this.drain = Promise.resolve().then(async () => {
23
+ while (this.pending.size)
24
+ await Promise.allSettled([...this.pending]);
25
+ const results = await Promise.allSettled([...this.readers].map(close => close()));
26
+ const failures = results.filter(result => result.status === "rejected").map(result => result.reason);
27
+ if (failures.length === 1)
28
+ throw failures[0];
29
+ if (failures.length)
30
+ throw new AggregateError(failures, "ZIP reader cleanup failed");
31
+ });
32
+ this.controller.abort(this.original.signal.aborted ? this.original.signal.reason : this.closedReason);
33
+ }
34
+ return this.drain;
35
+ };
36
+ async operation(action) {
37
+ this.context.signal.throwIfAborted();
38
+ if (++this.work > this.limits.maxPatternSteps)
39
+ fail("filesystem work limit exceeded");
40
+ const pending = Promise.resolve().then(() => { this.context.signal.throwIfAborted(); return action(); });
41
+ this.pending.add(pending);
42
+ try {
43
+ const value = await pending;
44
+ this.context.signal.throwIfAborted();
45
+ return value;
46
+ }
47
+ finally {
48
+ this.pending.delete(pending);
49
+ }
50
+ }
51
+ async stat(path) {
52
+ try {
53
+ return await this.operation(() => this.context.fs.lstat(path, { signal: this.context.signal }));
54
+ }
55
+ catch (error) {
56
+ this.context.signal.throwIfAborted();
57
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT")
58
+ return undefined;
59
+ throw error;
60
+ }
61
+ }
62
+ source(source) {
63
+ const iterator = source[Symbol.asyncIterator]();
64
+ let closing;
65
+ const close = () => closing ??= (async () => {
66
+ try {
67
+ await iterator.return?.();
68
+ }
69
+ finally {
70
+ this.readers.delete(close);
71
+ }
72
+ })();
73
+ this.readers.add(close);
74
+ return { [Symbol.asyncIterator]: () => ({
75
+ next: () => this.operation(async () => {
76
+ const result = await iterator.next();
77
+ if (result.done)
78
+ this.readers.delete(close);
79
+ return result;
80
+ }),
81
+ async return() { await close(); return { done: true, value: undefined }; },
82
+ }) };
83
+ }
84
+ async *input(path) {
85
+ const { fs, signal } = this.context;
86
+ const capabilities = await this.operation(() => fs.capabilitiesFor?.(path, { signal }) ?? fs.capabilities);
87
+ if (fs.readStream && capabilities.streamingRead !== false) {
88
+ const source = await this.operation(() => this.source(fs.readStream(path, { signal, chunkSize: this.limits.chunkSize })));
89
+ yield* readBytes(source, signal);
90
+ }
91
+ else {
92
+ const stat = await this.operation(() => fs.stat(path, { signal }));
93
+ if (stat.size > this.limits.maxBufferedFileBytes)
94
+ fail("filesystem lacks streaming reads: buffered file limit exceeded");
95
+ const bytes = await this.operation(() => fs.readFile(path, { signal, maxBytes: this.limits.maxBufferedFileBytes }));
96
+ if (bytes.length > this.limits.maxBufferedFileBytes)
97
+ fail("buffered file limit exceeded");
98
+ yield bytes;
99
+ }
100
+ }
101
+ }
102
+ export async function publishZip(scope, prepared) {
103
+ const { fs, signal } = scope.context;
104
+ const capabilities = await scope.operation(() => fs.capabilitiesFor?.(prepared.output, { signal }) ?? fs.capabilities);
105
+ if (capabilities.atomicRename !== true || capabilities.exclusiveCreate !== true || capabilities.explicitDirectories !== true
106
+ || capabilities.permissions !== true || !fs.rmdir || (prepared.existing ? !fs.chmod : capabilities.atomicRenameNoReplace !== true))
107
+ fail("ZIP publication requires atomic rename, exclusive creation, private directories and mode preservation");
108
+ let directory;
109
+ let temporary = "";
110
+ let identity;
111
+ let published = false;
112
+ let collision = false;
113
+ let failure;
114
+ const checkOwner = async () => {
115
+ const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
116
+ const owner = directory && await scope.stat(directory.path);
117
+ if (parent !== prepared.parent || !owner || owner.type !== "directory" || !sameIdentity(owner, directory.stat))
118
+ fail("ZIP temporary ownership changed before mutation");
119
+ };
120
+ const close = retainFileSystemCleanup(fs, async (cleanup) => {
121
+ if (!directory || !hasIdentity(directory.stat))
122
+ return;
123
+ const parent = await cleanup.realpath(prepared.parentName);
124
+ const owner = await cleanup.lstat(directory.path);
125
+ if (parent !== prepared.parent || owner.type !== "directory" || !sameIdentity(owner, directory.stat))
126
+ fail("ZIP temporary ownership changed before cleanup");
127
+ if (temporary && !published && !collision) {
128
+ let current;
129
+ try {
130
+ current = await cleanup.lstat(temporary);
131
+ }
132
+ catch (error) {
133
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
134
+ throw error;
135
+ }
136
+ if (current) {
137
+ if (!identity || !sameIdentity(current, identity) || current.type !== "file" || current.nlink !== 1)
138
+ fail("ZIP temporary file changed before cleanup");
139
+ await cleanup.rm(temporary);
140
+ }
141
+ }
142
+ await cleanup.rmdir(directory.path);
143
+ }, { maxOperations: 16 });
144
+ try {
145
+ for (let attempt = 0; attempt < Math.min(64, scope.limits.maxMembers); attempt++) {
146
+ const path = `${prepared.parent === "/" ? "" : prepared.parent}/.zip-${attempt + 1}`;
147
+ checkPath(path, scope.limits);
148
+ if (path === prepared.output)
149
+ continue;
150
+ try {
151
+ await scope.operation(async () => {
152
+ await fs.mkdir(path, { signal, mode: 0o700 });
153
+ directory = { path, stat: await fs.lstat(path) };
154
+ });
155
+ break;
156
+ }
157
+ catch (error) {
158
+ signal.throwIfAborted();
159
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "EEXIST")
160
+ throw error;
161
+ }
162
+ }
163
+ if (!directory)
164
+ fail("ZIP temporary directory attempt limit exceeded");
165
+ if (directory.stat.type !== "directory" || !hasIdentity(directory.stat) || (directory.stat.mode & 0o777) !== 0o700)
166
+ fail("ZIP temporary directory ownership unavailable");
167
+ temporary = `${directory.path}/archive.zip`;
168
+ checkPath(temporary, scope.limits);
169
+ await checkOwner();
170
+ await scope.operation(async () => {
171
+ let writeFailure;
172
+ try {
173
+ await fs.writeFile(temporary, prepared.bytes, { signal, flag: "wx", ...(prepared.existing ? { mode: prepared.existing.mode & 0o7777 } : {}) });
174
+ }
175
+ catch (error) {
176
+ collision = typeof error === "object" && error !== null && "code" in error && error.code === "EEXIST";
177
+ writeFailure = { reason: error };
178
+ }
179
+ if (!collision) {
180
+ await checkOwner();
181
+ try {
182
+ identity = await fs.lstat(temporary);
183
+ }
184
+ catch (error) {
185
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
186
+ throw error;
187
+ }
188
+ }
189
+ if (writeFailure)
190
+ throw writeFailure.reason;
191
+ });
192
+ if (!identity || !hasIdentity(identity) || identity.type !== "file" || identity.nlink !== 1 || identity.size !== prepared.bytes.length)
193
+ fail("ZIP staged archive identity or size changed");
194
+ if (prepared.existing) {
195
+ await checkOwner();
196
+ await scope.operation(() => fs.chmod(temporary, prepared.existing.mode & 0o7777, { signal }));
197
+ }
198
+ const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
199
+ const current = await scope.stat(prepared.output);
200
+ if (parent !== prepared.parent || (prepared.existing ? !current || !sameIdentity(prepared.existing, current)
201
+ || current.type !== "file" || current.nlink !== 1 || current.size !== prepared.existing.size
202
+ || current.mode !== prepared.existing.mode || current.mtimeMs !== prepared.existing.mtimeMs || current.ctimeMs !== prepared.existing.ctimeMs : current !== undefined))
203
+ fail("archive backing entry changed before publication");
204
+ const staging = await scope.stat(temporary);
205
+ const owner = await scope.stat(directory.path);
206
+ if (!staging || !sameIdentity(staging, identity) || staging.type !== "file" || staging.nlink !== 1 || staging.size !== prepared.bytes.length
207
+ || !owner || !sameIdentity(owner, directory.stat) || owner.type !== "directory")
208
+ fail("ZIP temporary ownership changed before publication");
209
+ await scope.operation(async () => {
210
+ await fs.rename(temporary, prepared.output, { signal, ...(!prepared.existing ? { noReplace: true } : {}) });
211
+ published = true;
212
+ });
213
+ }
214
+ catch (error) {
215
+ failure = { reason: error };
216
+ }
217
+ try {
218
+ await close();
219
+ }
220
+ catch (error) {
221
+ if (failure)
222
+ throw new AggregateError([failure.reason, error], "ZIP publication and cleanup failed");
223
+ throw error;
224
+ }
225
+ if (failure)
226
+ throw failure.reason;
227
+ }
228
+ //# sourceMappingURL=safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type ByteSource } from "../../contracts/index.js";
2
+ import { type ArchiveLimits } from "./internal.js";
3
+ export interface ZipEntry {
4
+ name: string;
5
+ data: Uint8Array;
6
+ size: number;
7
+ method: number;
8
+ crc32: number;
9
+ modified: Date;
10
+ mode: number;
11
+ directory: boolean;
12
+ symlink: boolean;
13
+ rawName?: Uint8Array;
14
+ localName?: Uint8Array;
15
+ comment?: Uint8Array;
16
+ localExtra?: Uint8Array;
17
+ centralExtra?: Uint8Array;
18
+ flags?: number;
19
+ versionMadeBy?: number;
20
+ internalAttributes?: number;
21
+ externalAttributes?: number;
22
+ dosTime?: number;
23
+ dosDate?: number;
24
+ }
25
+ export interface ZipArchive {
26
+ entries: readonly ZipEntry[];
27
+ comment: Uint8Array;
28
+ }
29
+ export declare function crc32(bytes: Uint8Array, previous?: number): number;
30
+ export declare function readZipArchive(bytes: Uint8Array, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipArchive>;
31
+ export declare function decodeZipEntry(entry: ZipEntry, limits: ArchiveLimits, signal: AbortSignal): ByteSource;
32
+ export declare function makeZipEntry(name: string, bytes: Uint8Array, attributes: {
33
+ modified: Date;
34
+ mode: number;
35
+ directory: boolean;
36
+ symlink: boolean;
37
+ }, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipEntry>;
38
+ export declare function writeZipArchive(archive: ZipArchive, limits: ArchiveLimits, signal: AbortSignal): Promise<Uint8Array>;
39
+ //# sourceMappingURL=zip-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-format.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/zip-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAUD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,SAAI,GAAG,MAAM,CAI7D;AA8HD,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+HvH;AAED,wBAAuB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAwB7G;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkCrN;AAmBD,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmG1H"}