@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.
Files changed (39) hide show
  1. package/dist/safe-bash/chunks/chunk-MVVKEMEG.js +1069 -0
  2. package/dist/safe-bash/chunks/chunk-MVVKEMEG.js.map +7 -0
  3. package/dist/safe-bash/commands/line-endings/command.d.ts +5 -0
  4. package/dist/safe-bash/commands/line-endings/command.d.ts.map +1 -0
  5. package/dist/safe-bash/commands/line-endings/command.js +320 -0
  6. package/dist/safe-bash/commands/line-endings/command.js.map +1 -0
  7. package/dist/safe-bash/commands/line-endings/convert.d.ts +11 -0
  8. package/dist/safe-bash/commands/line-endings/convert.d.ts.map +1 -0
  9. package/dist/safe-bash/commands/line-endings/convert.js +196 -0
  10. package/dist/safe-bash/commands/line-endings/convert.js.map +1 -0
  11. package/dist/safe-bash/commands/line-endings/index.browser.js +18 -0
  12. package/dist/safe-bash/commands/line-endings/index.browser.js.map +7 -0
  13. package/dist/safe-bash/commands/line-endings/index.d.ts +7 -0
  14. package/dist/safe-bash/commands/line-endings/index.d.ts.map +1 -0
  15. package/dist/safe-bash/commands/line-endings/index.js +9 -0
  16. package/dist/safe-bash/commands/line-endings/index.js.map +1 -0
  17. package/dist/safe-bash/commands/line-endings/internal.d.ts +67 -0
  18. package/dist/safe-bash/commands/line-endings/internal.d.ts.map +1 -0
  19. package/dist/safe-bash/commands/line-endings/internal.js +144 -0
  20. package/dist/safe-bash/commands/line-endings/internal.js.map +1 -0
  21. package/dist/safe-bash/commands/line-endings/io.d.ts +53 -0
  22. package/dist/safe-bash/commands/line-endings/io.d.ts.map +1 -0
  23. package/dist/safe-bash/commands/line-endings/io.js +267 -0
  24. package/dist/safe-bash/commands/line-endings/io.js.map +1 -0
  25. package/dist/safe-bash/commands/line-endings/stage.d.ts +30 -0
  26. package/dist/safe-bash/commands/line-endings/stage.d.ts.map +1 -0
  27. package/dist/safe-bash/commands/line-endings/stage.js +159 -0
  28. package/dist/safe-bash/commands/line-endings/stage.js.map +1 -0
  29. package/dist/safe-bash/core.browser.js +13 -1
  30. package/dist/safe-bash/core.browser.js.map +2 -2
  31. package/dist/safe-bash/core.d.ts +1 -0
  32. package/dist/safe-bash/core.d.ts.map +1 -1
  33. package/dist/safe-bash/core.js +1 -0
  34. package/dist/safe-bash/core.js.map +1 -1
  35. package/dist/safe-bash/plugins/composition.d.ts +2 -0
  36. package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
  37. package/dist/safe-bash/plugins/composition.js +3 -1
  38. package/dist/safe-bash/plugins/composition.js.map +1 -1
  39. 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,