@poe-platform/safe-bash 0.1.542 → 0.1.543
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-MVVKEMEG.js +1069 -0
- package/dist/safe-bash/chunks/chunk-MVVKEMEG.js.map +7 -0
- package/dist/safe-bash/commands/line-endings/command.d.ts +5 -0
- package/dist/safe-bash/commands/line-endings/command.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/command.js +320 -0
- package/dist/safe-bash/commands/line-endings/command.js.map +1 -0
- package/dist/safe-bash/commands/line-endings/convert.d.ts +11 -0
- package/dist/safe-bash/commands/line-endings/convert.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/convert.js +196 -0
- package/dist/safe-bash/commands/line-endings/convert.js.map +1 -0
- package/dist/safe-bash/commands/line-endings/index.browser.js +18 -0
- package/dist/safe-bash/commands/line-endings/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/line-endings/index.d.ts +7 -0
- package/dist/safe-bash/commands/line-endings/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/index.js +9 -0
- package/dist/safe-bash/commands/line-endings/index.js.map +1 -0
- package/dist/safe-bash/commands/line-endings/internal.d.ts +67 -0
- package/dist/safe-bash/commands/line-endings/internal.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/internal.js +144 -0
- package/dist/safe-bash/commands/line-endings/internal.js.map +1 -0
- package/dist/safe-bash/commands/line-endings/io.d.ts +53 -0
- package/dist/safe-bash/commands/line-endings/io.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/io.js +267 -0
- package/dist/safe-bash/commands/line-endings/io.js.map +1 -0
- package/dist/safe-bash/commands/line-endings/stage.d.ts +30 -0
- package/dist/safe-bash/commands/line-endings/stage.d.ts.map +1 -0
- package/dist/safe-bash/commands/line-endings/stage.js +159 -0
- package/dist/safe-bash/commands/line-endings/stage.js.map +1 -0
- package/dist/safe-bash/core.browser.js +13 -1
- package/dist/safe-bash/core.browser.js.map +2 -2
- package/dist/safe-bash/core.d.ts +1 -0
- package/dist/safe-bash/core.d.ts.map +1 -1
- package/dist/safe-bash/core.js +1 -0
- package/dist/safe-bash/core.js.map +1 -1
- package/dist/safe-bash/plugins/composition.d.ts +2 -0
- package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
- package/dist/safe-bash/plugins/composition.js +3 -1
- package/dist/safe-bash/plugins/composition.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { Budget, LineEndingError } from "./internal.js";
|
|
2
|
+
const typedArrayPrototype = Object.getPrototypeOf(Uint8Array.prototype);
|
|
3
|
+
const viewBuffer = Object.getOwnPropertyDescriptor(typedArrayPrototype, "buffer").get;
|
|
4
|
+
const viewOffset = Object.getOwnPropertyDescriptor(typedArrayPrototype, "byteOffset").get;
|
|
5
|
+
const viewLength = Object.getOwnPropertyDescriptor(typedArrayPrototype, "byteLength").get;
|
|
6
|
+
export class Lifecycle {
|
|
7
|
+
budget;
|
|
8
|
+
captured;
|
|
9
|
+
caller;
|
|
10
|
+
admission;
|
|
11
|
+
pending = new Set();
|
|
12
|
+
cleanups = [];
|
|
13
|
+
closing;
|
|
14
|
+
diagnosticDestination;
|
|
15
|
+
diagnosticCancellation;
|
|
16
|
+
constructor(budget, output, captured, caller, admission) {
|
|
17
|
+
this.budget = budget;
|
|
18
|
+
this.captured = captured;
|
|
19
|
+
this.caller = caller;
|
|
20
|
+
this.admission = admission;
|
|
21
|
+
output.registerCleanup(() => this.close());
|
|
22
|
+
}
|
|
23
|
+
assertOpen() { this.budget.signal.throwIfAborted(); if (this.closing || this.admission.closed)
|
|
24
|
+
throw new LineEndingError("command is closed"); }
|
|
25
|
+
assertDiagnosticOpen() {
|
|
26
|
+
this.caller.throwIfAborted();
|
|
27
|
+
const consumer = this.diagnosticDestination?.consumer;
|
|
28
|
+
if (consumer?.aborted) {
|
|
29
|
+
this.diagnosticCancellation = { reason: consumer.reason };
|
|
30
|
+
consumer.throwIfAborted();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
cleanup(action) { this.assertOpen(); this.cleanups.push(action); }
|
|
34
|
+
async operation(action) {
|
|
35
|
+
this.assertOpen();
|
|
36
|
+
const pending = Promise.resolve().then(async () => { await this.budget.step(); this.assertOpen(); return action(); });
|
|
37
|
+
this.pending.add(pending);
|
|
38
|
+
try {
|
|
39
|
+
const value = await pending;
|
|
40
|
+
this.assertOpen();
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
this.pending.delete(pending);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
close() {
|
|
48
|
+
return this.closing ??= Promise.resolve().then(async () => {
|
|
49
|
+
while (this.pending.size)
|
|
50
|
+
await Promise.allSettled([...this.pending]);
|
|
51
|
+
const failures = [];
|
|
52
|
+
for (const close of this.cleanups) {
|
|
53
|
+
try {
|
|
54
|
+
await close();
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
failures.push(error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (failures.length === 1)
|
|
61
|
+
throw failures[0];
|
|
62
|
+
if (failures.length > 1)
|
|
63
|
+
throw new AggregateError(failures, "line-ending cleanup failed");
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async stdout(bytes) {
|
|
67
|
+
await this.operation(async () => {
|
|
68
|
+
const write = this.captured.write;
|
|
69
|
+
this.assertOpen();
|
|
70
|
+
await Reflect.apply(write, this.captured, [bytes]);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async diagnostic(text) {
|
|
74
|
+
this.assertDiagnosticOpen();
|
|
75
|
+
if (this.closing || this.admission.closed)
|
|
76
|
+
throw new LineEndingError("command is closed");
|
|
77
|
+
this.budget.check(text.length * 3, this.budget.limits.maxDiagnosticBytes, "diagnostic buffer bytes");
|
|
78
|
+
const bytes = new TextEncoder().encode(text);
|
|
79
|
+
this.budget.emitted(bytes.length, true);
|
|
80
|
+
const pending = Promise.resolve().then(async () => {
|
|
81
|
+
this.assertDiagnosticOpen();
|
|
82
|
+
if (!this.diagnosticDestination) {
|
|
83
|
+
const sink = this.budget.context.stderr;
|
|
84
|
+
this.assertDiagnosticOpen();
|
|
85
|
+
const capability = sink.ownedOutput;
|
|
86
|
+
this.assertDiagnosticOpen();
|
|
87
|
+
const consumer = capability?.consumerClosed;
|
|
88
|
+
this.diagnosticDestination = { destination: capability ?? sink, consumer };
|
|
89
|
+
}
|
|
90
|
+
this.assertDiagnosticOpen();
|
|
91
|
+
const destination = this.diagnosticDestination.destination;
|
|
92
|
+
const write = destination.write;
|
|
93
|
+
this.assertDiagnosticOpen();
|
|
94
|
+
await Reflect.apply(write, destination, [bytes]);
|
|
95
|
+
});
|
|
96
|
+
this.pending.add(pending);
|
|
97
|
+
try {
|
|
98
|
+
await pending;
|
|
99
|
+
this.assertDiagnosticOpen();
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
this.pending.delete(pending);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export class Reader {
|
|
107
|
+
life;
|
|
108
|
+
iterator;
|
|
109
|
+
chunk = new Uint8Array();
|
|
110
|
+
offset = 0;
|
|
111
|
+
ended = false;
|
|
112
|
+
empties = 0;
|
|
113
|
+
snapshotBytes = 0;
|
|
114
|
+
closing;
|
|
115
|
+
constructor(life) {
|
|
116
|
+
this.life = life;
|
|
117
|
+
life.cleanup(() => this.close());
|
|
118
|
+
}
|
|
119
|
+
close() {
|
|
120
|
+
return this.closing ??= (async () => {
|
|
121
|
+
try {
|
|
122
|
+
if (!this.ended && this.iterator) {
|
|
123
|
+
const iterator = this.iterator;
|
|
124
|
+
const close = iterator.return;
|
|
125
|
+
if (close)
|
|
126
|
+
await Reflect.apply(close, iterator, []);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
this.iterator = undefined;
|
|
131
|
+
this.life.budget.retain(-this.chunk.length - this.snapshotBytes);
|
|
132
|
+
this.chunk = new Uint8Array();
|
|
133
|
+
this.snapshotBytes = 0;
|
|
134
|
+
}
|
|
135
|
+
})();
|
|
136
|
+
}
|
|
137
|
+
async open(path, stat) {
|
|
138
|
+
const { context, signal, limits } = this.life.budget;
|
|
139
|
+
await this.life.operation(async () => {
|
|
140
|
+
let source;
|
|
141
|
+
let acquisitionAborted = false;
|
|
142
|
+
if (path === undefined)
|
|
143
|
+
source = context.stdin;
|
|
144
|
+
else {
|
|
145
|
+
const fs = context.fs;
|
|
146
|
+
const capabilitiesFor = fs.capabilitiesFor;
|
|
147
|
+
this.life.assertOpen();
|
|
148
|
+
const selected = capabilitiesFor ? await Reflect.apply(capabilitiesFor, fs, [path, { signal }]) : undefined;
|
|
149
|
+
this.life.assertOpen();
|
|
150
|
+
const capabilities = selected ?? fs.capabilities;
|
|
151
|
+
this.life.assertOpen();
|
|
152
|
+
const readStream = fs.readStream;
|
|
153
|
+
this.life.assertOpen();
|
|
154
|
+
const streaming = capabilities.streamingRead !== false;
|
|
155
|
+
this.life.assertOpen();
|
|
156
|
+
if (readStream && streaming) {
|
|
157
|
+
source = Reflect.apply(readStream, fs, [path, { signal, chunkSize: limits.chunkSize }]);
|
|
158
|
+
acquisitionAborted = signal.aborted || this.life.admission.closed;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const maximum = Math.min(limits.maxInputBytes, Math.floor(limits.maxBufferedBytes / 3));
|
|
162
|
+
const size = stat.size;
|
|
163
|
+
this.life.assertOpen();
|
|
164
|
+
this.life.budget.check(size, maximum, "buffered input bytes");
|
|
165
|
+
this.life.budget.retain(maximum);
|
|
166
|
+
this.snapshotBytes = maximum;
|
|
167
|
+
const readFile = fs.readFile;
|
|
168
|
+
this.life.assertOpen();
|
|
169
|
+
const bytes = await Reflect.apply(readFile, fs, [path, { signal, maxBytes: maximum }]);
|
|
170
|
+
this.life.assertOpen();
|
|
171
|
+
if (!(bytes instanceof Uint8Array))
|
|
172
|
+
throw new TypeError("line-ending input requires bytes");
|
|
173
|
+
this.life.budget.check(viewLength.call(bytes), maximum, "buffered input bytes");
|
|
174
|
+
source = { [Symbol.asyncIterator]: (async function* () { try {
|
|
175
|
+
yield bytes;
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
this.life.budget.retain(-this.snapshotBytes);
|
|
179
|
+
this.snapshotBytes = 0;
|
|
180
|
+
} }).bind(this) };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (!acquisitionAborted)
|
|
184
|
+
this.life.assertOpen();
|
|
185
|
+
const factory = source[Symbol.asyncIterator];
|
|
186
|
+
if (!acquisitionAborted)
|
|
187
|
+
this.life.assertOpen();
|
|
188
|
+
this.iterator = Reflect.apply(factory, source, []);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
async get() {
|
|
192
|
+
await this.life.budget.step();
|
|
193
|
+
this.life.assertOpen();
|
|
194
|
+
while (this.offset === this.chunk.length) {
|
|
195
|
+
if (this.ended)
|
|
196
|
+
return -1;
|
|
197
|
+
const next = await this.life.operation(() => {
|
|
198
|
+
const iterator = this.iterator;
|
|
199
|
+
const advance = iterator.next;
|
|
200
|
+
this.life.assertOpen();
|
|
201
|
+
return Reflect.apply(advance, iterator, []);
|
|
202
|
+
});
|
|
203
|
+
this.life.budget.retain(-this.chunk.length);
|
|
204
|
+
this.chunk = new Uint8Array();
|
|
205
|
+
this.offset = 0;
|
|
206
|
+
const done = next.done;
|
|
207
|
+
this.life.assertOpen();
|
|
208
|
+
if (done) {
|
|
209
|
+
this.ended = true;
|
|
210
|
+
this.iterator = undefined;
|
|
211
|
+
return -1;
|
|
212
|
+
}
|
|
213
|
+
const value = next.value;
|
|
214
|
+
this.life.assertOpen();
|
|
215
|
+
if (!(value instanceof Uint8Array))
|
|
216
|
+
throw new TypeError("line-ending input requires bytes");
|
|
217
|
+
const buffer = viewBuffer.call(value);
|
|
218
|
+
const offset = viewOffset.call(value);
|
|
219
|
+
const length = viewLength.call(value);
|
|
220
|
+
this.life.budget.incoming(length);
|
|
221
|
+
this.life.budget.retain(length);
|
|
222
|
+
try {
|
|
223
|
+
if (viewOffset.call(value) !== offset || viewLength.call(value) < length)
|
|
224
|
+
throw new TypeError("line-ending input extent changed during admission");
|
|
225
|
+
this.chunk = new Uint8Array(new Uint8Array(buffer, offset, length));
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
this.life.budget.retain(-length);
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
if (!this.chunk.length)
|
|
232
|
+
this.life.budget.check(++this.empties, this.life.budget.limits.maxEmptyChunks, "empty input chunks");
|
|
233
|
+
}
|
|
234
|
+
return this.chunk[this.offset++];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
export class Writer {
|
|
238
|
+
life;
|
|
239
|
+
publish;
|
|
240
|
+
buffer;
|
|
241
|
+
used = 0;
|
|
242
|
+
constructor(life, publish) {
|
|
243
|
+
this.life = life;
|
|
244
|
+
this.publish = publish;
|
|
245
|
+
const size = Math.min(life.budget.limits.chunkSize, life.budget.limits.maxBufferedBytes);
|
|
246
|
+
life.budget.retain(size);
|
|
247
|
+
this.buffer = new Uint8Array(size);
|
|
248
|
+
life.cleanup(async () => { this.release(); });
|
|
249
|
+
}
|
|
250
|
+
release() { this.life.budget.retain(-this.buffer.length); this.buffer = new Uint8Array(); this.used = 0; }
|
|
251
|
+
async put(byte) {
|
|
252
|
+
await this.life.budget.step();
|
|
253
|
+
this.life.assertOpen();
|
|
254
|
+
this.life.budget.emitted(1);
|
|
255
|
+
this.buffer[this.used++] = byte;
|
|
256
|
+
if (this.used === this.buffer.length)
|
|
257
|
+
await this.flush();
|
|
258
|
+
}
|
|
259
|
+
async flush() {
|
|
260
|
+
this.life.assertOpen();
|
|
261
|
+
if (this.used) {
|
|
262
|
+
await this.publish(this.buffer.subarray(0, this.used));
|
|
263
|
+
this.used = 0;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/commands/line-endings/io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type FileStat, type FileSystem } from "../../contracts/index.js";
|
|
2
|
+
import { type ConversionOptions } from "./internal.js";
|
|
3
|
+
import { Lifecycle } from "./io.js";
|
|
4
|
+
export declare class Files {
|
|
5
|
+
readonly life: Lifecycle;
|
|
6
|
+
constructor(life: Lifecycle);
|
|
7
|
+
call<Arguments extends unknown[], Value>(select: (fs: FileSystem) => (...args: Arguments) => Value, args: Arguments): Promise<Awaited<Value>>;
|
|
8
|
+
stat(path: string): Promise<FileStat | undefined>;
|
|
9
|
+
path(name: string): string;
|
|
10
|
+
parents(path: string): Promise<{
|
|
11
|
+
path: string;
|
|
12
|
+
stat: FileStat;
|
|
13
|
+
}[]>;
|
|
14
|
+
}
|
|
15
|
+
export declare class Stage {
|
|
16
|
+
readonly files: Files;
|
|
17
|
+
readonly path: string;
|
|
18
|
+
readonly expected: FileStat | undefined;
|
|
19
|
+
private temporary;
|
|
20
|
+
private identity;
|
|
21
|
+
private created;
|
|
22
|
+
private parents;
|
|
23
|
+
readonly cleanup: () => Promise<void>;
|
|
24
|
+
constructor(files: Files, path: string, expected: FileStat | undefined);
|
|
25
|
+
open(): Promise<void>;
|
|
26
|
+
private checked;
|
|
27
|
+
append(bytes: Uint8Array): Promise<void>;
|
|
28
|
+
publish(input: FileStat, options: ConversionOptions): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=stage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../../src/commands/line-endings/stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGzG,OAAO,EAA0C,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,qBAAa,KAAK;IACJ,QAAQ,CAAC,IAAI,EAAE,SAAS;gBAAf,IAAI,EAAE,SAAS;IAC9B,IAAI,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAS7I,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAIvD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;CAYzE;AAED,qBAAa,KAAK;IAMJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IALjG,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA0C;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjB,KAAK,EAAE,KAAK,EAAW,IAAI,EAAE,MAAM,EAAW,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAgB3F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCb,OAAO;IAQf,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB1E"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { FsError, dirname, resolvePath } from "../../contracts/index.js";
|
|
2
|
+
import { writeFileOutput } from "../../contracts/filesystem-output.js";
|
|
3
|
+
import { retainFileSystemCleanup } from "@poe-platform/safe-fs/core";
|
|
4
|
+
import { LineEndingError, missing, sameIdentity } from "./internal.js";
|
|
5
|
+
import { Lifecycle } from "./io.js";
|
|
6
|
+
export class Files {
|
|
7
|
+
life;
|
|
8
|
+
constructor(life) {
|
|
9
|
+
this.life = life;
|
|
10
|
+
}
|
|
11
|
+
async call(select, args) {
|
|
12
|
+
return await this.life.operation(async () => {
|
|
13
|
+
const fs = this.life.budget.context.fs;
|
|
14
|
+
this.life.assertOpen();
|
|
15
|
+
const method = select(fs);
|
|
16
|
+
this.life.assertOpen();
|
|
17
|
+
return await Reflect.apply(method, fs, args);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async stat(path) {
|
|
21
|
+
try {
|
|
22
|
+
return await this.call(fs => fs.lstat, [path, { signal: this.life.budget.signal }]);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
this.life.assertOpen();
|
|
26
|
+
if (missing(error))
|
|
27
|
+
return undefined;
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
path(name) {
|
|
32
|
+
const path = resolvePath(this.life.budget.context.cwd, name);
|
|
33
|
+
this.life.budget.check(path.length * 3, this.life.budget.limits.maxPathBytes, "path bytes");
|
|
34
|
+
this.life.budget.check(path.split("/").length - 1, this.life.budget.limits.maxDepth, "path depth");
|
|
35
|
+
return path;
|
|
36
|
+
}
|
|
37
|
+
async parents(path) {
|
|
38
|
+
const parents = [];
|
|
39
|
+
let current = "/";
|
|
40
|
+
for (const component of ["", ...dirname(path).split("/").filter(Boolean)]) {
|
|
41
|
+
if (component)
|
|
42
|
+
current = resolvePath(current, component);
|
|
43
|
+
const stat = await this.stat(current);
|
|
44
|
+
if (!stat)
|
|
45
|
+
throw new FsError("ENOENT", { path: current });
|
|
46
|
+
if (stat.type !== "directory" || !sameIdentity(stat, stat))
|
|
47
|
+
throw new LineEndingError("output requires stable non-symlink directory identities");
|
|
48
|
+
parents.push({ path: current, stat });
|
|
49
|
+
}
|
|
50
|
+
return parents;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class Stage {
|
|
54
|
+
files;
|
|
55
|
+
path;
|
|
56
|
+
expected;
|
|
57
|
+
temporary = "";
|
|
58
|
+
identity;
|
|
59
|
+
created = false;
|
|
60
|
+
parents = [];
|
|
61
|
+
cleanup;
|
|
62
|
+
constructor(files, path, expected) {
|
|
63
|
+
this.files = files;
|
|
64
|
+
this.path = path;
|
|
65
|
+
this.expected = expected;
|
|
66
|
+
const { life } = files;
|
|
67
|
+
life.assertOpen();
|
|
68
|
+
this.cleanup = retainFileSystemCleanup(life.budget.context.fs, async (view) => {
|
|
69
|
+
if (!this.created || !this.identity)
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
for (const parent of this.parents) {
|
|
73
|
+
const stat = await view.lstat(parent.path);
|
|
74
|
+
if (stat.type !== "directory" || !sameIdentity(stat, parent.stat))
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const stat = await view.lstat(this.temporary);
|
|
78
|
+
if (stat.type === "file" && sameIdentity(stat, this.identity))
|
|
79
|
+
await view.rm(this.temporary);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (!missing(error))
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}, { maxOperations: Math.min(4096, life.budget.limits.maxDepth + 4) });
|
|
86
|
+
life.cleanup(this.cleanup);
|
|
87
|
+
}
|
|
88
|
+
async open() {
|
|
89
|
+
const { life } = this.files;
|
|
90
|
+
const { signal, limits } = life.budget;
|
|
91
|
+
const capabilities = await life.operation(async () => {
|
|
92
|
+
const fs = life.budget.context.fs;
|
|
93
|
+
const query = fs.capabilitiesFor;
|
|
94
|
+
life.assertOpen();
|
|
95
|
+
const result = query ? await Reflect.apply(query, fs, [this.path, { signal, create: true }]) : fs.capabilities;
|
|
96
|
+
life.assertOpen();
|
|
97
|
+
return result;
|
|
98
|
+
});
|
|
99
|
+
if (capabilities.atomicRename !== true || capabilities.exclusiveCreate !== true || capabilities.permissions !== true || capabilities.append === false || capabilities.remove === false) {
|
|
100
|
+
throw new LineEndingError("file conversion requires atomic rename, exclusive create, permissions, append and cleanup capabilities");
|
|
101
|
+
}
|
|
102
|
+
this.parents = await this.files.parents(this.path);
|
|
103
|
+
for (let attempt = 0; attempt < limits.maxTempAttempts; attempt++) {
|
|
104
|
+
this.temporary = resolvePath(dirname(this.path), `.line-ending-${attempt + 1}`);
|
|
105
|
+
this.files.path(this.temporary);
|
|
106
|
+
if (this.temporary === this.path || await this.files.stat(this.temporary))
|
|
107
|
+
continue;
|
|
108
|
+
try {
|
|
109
|
+
await this.files.call(fs => fs.writeFile, [this.temporary, new Uint8Array(), { signal, flag: "wx", mode: 0o600 }]);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
life.assertOpen();
|
|
113
|
+
if (typeof error === "object" && error !== null && "code" in error && error.code === "EEXIST")
|
|
114
|
+
continue;
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
this.created = true;
|
|
118
|
+
this.identity = await this.files.stat(this.temporary);
|
|
119
|
+
if (!this.identity || this.identity.type !== "file" || !sameIdentity(this.identity, this.identity))
|
|
120
|
+
throw new LineEndingError("temporary file identity unavailable; unowned path is not removed");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
throw new LineEndingError("temporary file attempts limit exceeded");
|
|
124
|
+
}
|
|
125
|
+
async checked() {
|
|
126
|
+
for (const parent of this.parents) {
|
|
127
|
+
const stat = await this.files.stat(parent.path);
|
|
128
|
+
if (!stat || stat.type !== "directory" || !sameIdentity(stat, parent.stat))
|
|
129
|
+
throw new LineEndingError("output parent changed before mutation");
|
|
130
|
+
}
|
|
131
|
+
const stat = await this.files.stat(this.temporary);
|
|
132
|
+
if (!this.identity || !stat || stat.type !== "file" || !sameIdentity(stat, this.identity))
|
|
133
|
+
throw new LineEndingError("temporary file changed before mutation");
|
|
134
|
+
}
|
|
135
|
+
async append(bytes) {
|
|
136
|
+
await this.checked();
|
|
137
|
+
const { context, signal } = this.files.life.budget;
|
|
138
|
+
await this.files.life.operation(() => writeFileOutput({ signal, ...(context.registerCleanup ? { registerCleanup: context.registerCleanup } : {}) }, bytes, async (chunk) => { await this.files.call(fs => fs.appendFile, [this.temporary, chunk, { signal }]); }));
|
|
139
|
+
}
|
|
140
|
+
async publish(input, options) {
|
|
141
|
+
const { signal } = this.files.life.budget;
|
|
142
|
+
await this.checked();
|
|
143
|
+
if (!options.newFile && ((input.uid !== undefined && input.uid !== this.identity.uid) || (input.gid !== undefined && input.gid !== this.identity.gid))) {
|
|
144
|
+
throw new LineEndingError("filesystem cannot preserve input user/group ownership");
|
|
145
|
+
}
|
|
146
|
+
await this.files.call(fs => fs.chmod, [this.temporary, (input.mode & 0o777) & (options.newFile ? ~0o022 : 0o777), { signal }]);
|
|
147
|
+
if (options.keepDate) {
|
|
148
|
+
await this.checked();
|
|
149
|
+
await this.files.call(fs => fs.utimes, [this.temporary, Math.floor(input.atimeMs / 1000) * 1000, Math.floor(input.mtimeMs / 1000) * 1000, { signal }]);
|
|
150
|
+
}
|
|
151
|
+
await this.checked();
|
|
152
|
+
const current = await this.files.stat(this.path);
|
|
153
|
+
if (current ? !this.expected || current.type !== "file" || !sameIdentity(current, this.expected) : this.expected !== undefined)
|
|
154
|
+
throw new LineEndingError("destination changed before publication");
|
|
155
|
+
await this.files.call(fs => fs.rename, [this.temporary, this.path, { signal }]);
|
|
156
|
+
this.created = false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=stage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../../src/commands/line-endings/stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@ import {
|
|
|
14
14
|
createIconvCommands,
|
|
15
15
|
iconvCommands
|
|
16
16
|
} from "./chunks/chunk-A4UXQKWZ.js";
|
|
17
|
+
import {
|
|
18
|
+
createDos2unixCommand,
|
|
19
|
+
createLineEndingCommands,
|
|
20
|
+
createUnix2dosCommand,
|
|
21
|
+
lineEndingCommands
|
|
22
|
+
} from "./chunks/chunk-MVVKEMEG.js";
|
|
17
23
|
import {
|
|
18
24
|
createXmlCommands,
|
|
19
25
|
defaultXmlQueryLimits,
|
|
@@ -36808,6 +36814,7 @@ function composeAgentCommands(options2, executors) {
|
|
|
36808
36814
|
const getoptLimits = options2.getopt?.limits;
|
|
36809
36815
|
const hexdumpLimits = options2.hexdump?.limits;
|
|
36810
36816
|
const iconvLimits = options2.iconv?.limits;
|
|
36817
|
+
const lineEndingLimits = options2.lineEndings?.limits;
|
|
36811
36818
|
const whichLimits = options2.which?.limits;
|
|
36812
36819
|
const timeoutOptions = options2.timeout;
|
|
36813
36820
|
const applyPatchLimits = options2.applyPatch?.limits;
|
|
@@ -36847,7 +36854,8 @@ function composeAgentCommands(options2, executors) {
|
|
|
36847
36854
|
...createFactorCommands(factorLimits === void 0 ? {} : { limits: factorLimits }),
|
|
36848
36855
|
...createGetoptCommands(getoptLimits === void 0 ? {} : { limits: getoptLimits }),
|
|
36849
36856
|
...createHexdumpCommands(hexdumpLimits === void 0 ? {} : { limits: hexdumpLimits }),
|
|
36850
|
-
...createIconvCommands(iconvLimits === void 0 ? {} : { limits: iconvLimits })
|
|
36857
|
+
...createIconvCommands(iconvLimits === void 0 ? {} : { limits: iconvLimits }),
|
|
36858
|
+
...createLineEndingCommands(lineEndingLimits === void 0 ? {} : { limits: lineEndingLimits })
|
|
36851
36859
|
);
|
|
36852
36860
|
return new CommandRegistry(commands).list();
|
|
36853
36861
|
}
|
|
@@ -53219,6 +53227,7 @@ export {
|
|
|
53219
53227
|
createCurlCommand,
|
|
53220
53228
|
createCurlCommands,
|
|
53221
53229
|
createDiffPatchCommands,
|
|
53230
|
+
createDos2unixCommand,
|
|
53222
53231
|
createDuCommand,
|
|
53223
53232
|
createDuCommands,
|
|
53224
53233
|
createExprCommand,
|
|
@@ -53238,6 +53247,7 @@ export {
|
|
|
53238
53247
|
createHtmlToMarkdownCommands,
|
|
53239
53248
|
createIconvCommand,
|
|
53240
53249
|
createIconvCommands,
|
|
53250
|
+
createLineEndingCommands,
|
|
53241
53251
|
createMemoryFileSystem2 as createMemoryFileSystem,
|
|
53242
53252
|
createMetadataCommands,
|
|
53243
53253
|
createMountFileSystem2 as createMountFileSystem,
|
|
@@ -53265,6 +53275,7 @@ export {
|
|
|
53265
53275
|
createTreeCommands,
|
|
53266
53276
|
createTsortCommand,
|
|
53267
53277
|
createTsortCommands,
|
|
53278
|
+
createUnix2dosCommand,
|
|
53268
53279
|
createUnzipCommand,
|
|
53269
53280
|
createWgetCommand,
|
|
53270
53281
|
createWhichCommand,
|
|
@@ -53301,6 +53312,7 @@ export {
|
|
|
53301
53312
|
isFsError,
|
|
53302
53313
|
isPathWithin3 as isPathWithin,
|
|
53303
53314
|
joinPath3 as joinPath,
|
|
53315
|
+
lineEndingCommands,
|
|
53304
53316
|
makeSafeJsShellModule,
|
|
53305
53317
|
matchEre,
|
|
53306
53318
|
metadataCommands,
|