@poe-platform/safe-bash 0.1.534 → 0.1.535

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 (92) hide show
  1. package/dist/safe-bash/chunks/chunk-5Y4AEZB2.js +517 -0
  2. package/dist/safe-bash/chunks/chunk-5Y4AEZB2.js.map +7 -0
  3. package/dist/safe-bash/chunks/{chunk-IKATLB4I.js → chunk-AVXYPKV7.js} +7 -5
  4. package/dist/safe-bash/chunks/{chunk-IKATLB4I.js.map → chunk-AVXYPKV7.js.map} +1 -1
  5. package/dist/safe-bash/chunks/{chunk-LUJYX5H5.js → chunk-L2GZSOSJ.js} +245 -747
  6. package/dist/safe-bash/chunks/chunk-L2GZSOSJ.js.map +7 -0
  7. package/dist/safe-bash/chunks/{chunk-54Z5EUCW.js → chunk-M7KZ7V4P.js} +2 -2
  8. package/dist/safe-bash/chunks/{chunk-UGMUVHIY.js → chunk-NVUC5B2R.js} +10 -188
  9. package/dist/safe-bash/chunks/{chunk-UGMUVHIY.js.map → chunk-NVUC5B2R.js.map} +3 -3
  10. package/dist/safe-bash/chunks/{chunk-2GV4WO7O.js → chunk-PPVCI2F2.js} +2 -2
  11. package/dist/safe-bash/chunks/chunk-QY2XHZTE.js +192 -0
  12. package/dist/safe-bash/chunks/chunk-QY2XHZTE.js.map +7 -0
  13. package/dist/safe-bash/chunks/{chunk-6MHYEBAJ.js → chunk-UZELUFGF.js} +8 -6
  14. package/dist/safe-bash/chunks/{chunk-6MHYEBAJ.js.map → chunk-UZELUFGF.js.map} +1 -1
  15. package/dist/safe-bash/chunks/chunk-XROAIPKA.js +12095 -0
  16. package/dist/safe-bash/chunks/chunk-XROAIPKA.js.map +7 -0
  17. package/dist/safe-bash/commands/csplit/command.d.ts +6 -0
  18. package/dist/safe-bash/commands/csplit/command.d.ts.map +1 -0
  19. package/dist/safe-bash/commands/csplit/command.js +78 -0
  20. package/dist/safe-bash/commands/csplit/command.js.map +1 -0
  21. package/dist/safe-bash/commands/csplit/index.browser.js +14 -0
  22. package/dist/safe-bash/commands/csplit/index.browser.js.map +7 -0
  23. package/dist/safe-bash/commands/csplit/index.d.ts +7 -0
  24. package/dist/safe-bash/commands/csplit/index.d.ts.map +1 -0
  25. package/dist/safe-bash/commands/csplit/index.js +21 -0
  26. package/dist/safe-bash/commands/csplit/index.js.map +1 -0
  27. package/dist/safe-bash/commands/csplit/internal.d.ts +61 -0
  28. package/dist/safe-bash/commands/csplit/internal.d.ts.map +1 -0
  29. package/dist/safe-bash/commands/csplit/internal.js +147 -0
  30. package/dist/safe-bash/commands/csplit/internal.js.map +1 -0
  31. package/dist/safe-bash/commands/csplit/io.d.ts +52 -0
  32. package/dist/safe-bash/commands/csplit/io.d.ts.map +1 -0
  33. package/dist/safe-bash/commands/csplit/io.js +330 -0
  34. package/dist/safe-bash/commands/csplit/io.js.map +1 -0
  35. package/dist/safe-bash/commands/csplit/options.d.ts +16 -0
  36. package/dist/safe-bash/commands/csplit/options.d.ts.map +1 -0
  37. package/dist/safe-bash/commands/csplit/options.js +178 -0
  38. package/dist/safe-bash/commands/csplit/options.js.map +1 -0
  39. package/dist/safe-bash/commands/csplit/patterns.d.ts +19 -0
  40. package/dist/safe-bash/commands/csplit/patterns.d.ts.map +1 -0
  41. package/dist/safe-bash/commands/csplit/patterns.js +92 -0
  42. package/dist/safe-bash/commands/csplit/patterns.js.map +1 -0
  43. package/dist/safe-bash/commands/csplit/quoting.d.ts +2 -0
  44. package/dist/safe-bash/commands/csplit/quoting.d.ts.map +1 -0
  45. package/dist/safe-bash/commands/csplit/quoting.js +138 -0
  46. package/dist/safe-bash/commands/csplit/quoting.js.map +1 -0
  47. package/dist/safe-bash/commands/csplit/split.d.ts +18 -0
  48. package/dist/safe-bash/commands/csplit/split.d.ts.map +1 -0
  49. package/dist/safe-bash/commands/csplit/split.js +122 -0
  50. package/dist/safe-bash/commands/csplit/split.js.map +1 -0
  51. package/dist/safe-bash/commands/expr/bre-engine.d.ts +4 -1
  52. package/dist/safe-bash/commands/expr/bre-engine.d.ts.map +1 -1
  53. package/dist/safe-bash/commands/expr/bre-engine.js +724 -13
  54. package/dist/safe-bash/commands/expr/bre-engine.js.map +1 -1
  55. package/dist/safe-bash/commands/expr/bre-worker.d.ts +2 -1
  56. package/dist/safe-bash/commands/expr/bre-worker.d.ts.map +1 -1
  57. package/dist/safe-bash/commands/expr/bre-worker.js +10 -1
  58. package/dist/safe-bash/commands/expr/bre-worker.js.map +1 -1
  59. package/dist/safe-bash/commands/network/index.browser.js +5 -3
  60. package/dist/safe-bash/commands/regex-execution/bounded-provider.d.ts.map +1 -1
  61. package/dist/safe-bash/commands/regex-execution/bounded-provider.js +16 -5
  62. package/dist/safe-bash/commands/regex-execution/bounded-provider.js.map +1 -1
  63. package/dist/safe-bash/commands/regex-execution/portable.d.ts +3 -1
  64. package/dist/safe-bash/commands/regex-execution/portable.d.ts.map +1 -1
  65. package/dist/safe-bash/commands/regex-execution/portable.js +17 -4
  66. package/dist/safe-bash/commands/regex-execution/portable.js.map +1 -1
  67. package/dist/safe-bash/commands/regex-execution/protocol.d.ts +31 -0
  68. package/dist/safe-bash/commands/regex-execution/protocol.d.ts.map +1 -1
  69. package/dist/safe-bash/commands/regex-execution/protocol.js +83 -0
  70. package/dist/safe-bash/commands/regex-execution/protocol.js.map +1 -1
  71. package/dist/safe-bash/commands/regex-execution/provider.d.ts +2 -2
  72. package/dist/safe-bash/commands/regex-execution/provider.d.ts.map +1 -1
  73. package/dist/safe-bash/commands/regex-execution/worker.js +16 -2
  74. package/dist/safe-bash/commands/regex-execution/worker.js.map +1 -1
  75. package/dist/safe-bash/commands/xml/index.browser.js +4 -3
  76. package/dist/safe-bash/commands/yq/index.browser.js +5 -4
  77. package/dist/safe-bash/core.browser.js +1918 -4077
  78. package/dist/safe-bash/core.browser.js.map +4 -4
  79. package/dist/safe-bash/core.d.ts +1 -0
  80. package/dist/safe-bash/core.d.ts.map +1 -1
  81. package/dist/safe-bash/core.js +1 -0
  82. package/dist/safe-bash/core.js.map +1 -1
  83. package/dist/safe-bash/plugins/composition.d.ts +3 -0
  84. package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
  85. package/dist/safe-bash/plugins/composition.js +3 -1
  86. package/dist/safe-bash/plugins/composition.js.map +1 -1
  87. package/dist/safe-bash/plugins/index.js +1 -1
  88. package/dist/safe-bash/plugins/index.js.map +1 -1
  89. package/package.json +8 -2
  90. package/dist/safe-bash/chunks/chunk-LUJYX5H5.js.map +0 -7
  91. /package/dist/safe-bash/chunks/{chunk-54Z5EUCW.js.map → chunk-M7KZ7V4P.js.map} +0 -0
  92. /package/dist/safe-bash/chunks/{chunk-2GV4WO7O.js.map → chunk-PPVCI2F2.js.map} +0 -0
@@ -0,0 +1,330 @@
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 { Budget, CsplitError, fsDetail, missing, pathText } from "./internal.js";
5
+ export function sameIdentity(first, second) {
6
+ return ((typeof first.identityScope === "object" && first.identityScope !== null) || typeof first.identityScope === "symbol")
7
+ && first.identityScope === second.identityScope && Number.isSafeInteger(first.dev) && Number.isSafeInteger(first.ino)
8
+ && first.dev >= 0 && first.ino >= 0 && first.dev === second.dev && first.ino === second.ino;
9
+ }
10
+ export class Lifecycle {
11
+ budget;
12
+ pending = new Set();
13
+ cleanups = [];
14
+ closing;
15
+ constructor(budget) {
16
+ this.budget = budget;
17
+ budget.context.registerCleanup?.(() => this.close());
18
+ }
19
+ cleanup(action) {
20
+ this.assertOpen();
21
+ this.cleanups.push(action);
22
+ }
23
+ assertOpen() {
24
+ this.budget.context.signal.throwIfAborted();
25
+ if (this.closing)
26
+ throw new CsplitError("command is closed");
27
+ }
28
+ async operation(action) {
29
+ this.assertOpen();
30
+ this.budget.charge();
31
+ const pending = Promise.resolve().then(() => { this.assertOpen(); return action(); });
32
+ this.pending.add(pending);
33
+ try {
34
+ const value = await pending;
35
+ this.assertOpen();
36
+ return value;
37
+ }
38
+ finally {
39
+ this.pending.delete(pending);
40
+ }
41
+ }
42
+ close() {
43
+ return this.closing ??= (async () => {
44
+ while (this.pending.size)
45
+ await Promise.allSettled([...this.pending]);
46
+ const failures = [];
47
+ for (const cleanup of this.cleanups) {
48
+ try {
49
+ await cleanup();
50
+ }
51
+ catch (error) {
52
+ failures.push(error);
53
+ }
54
+ }
55
+ if (failures.length === 1)
56
+ throw failures[0];
57
+ if (failures.length > 1)
58
+ throw new AggregateError(failures, "csplit cleanup failed");
59
+ })();
60
+ }
61
+ }
62
+ export class Lines {
63
+ lifecycle;
64
+ lines = [];
65
+ partial = [];
66
+ partialBytes = 0;
67
+ total = 0;
68
+ emptyChunks = 0;
69
+ iterator;
70
+ ended = false;
71
+ path;
72
+ identity;
73
+ constructor(lifecycle) {
74
+ this.lifecycle = lifecycle;
75
+ lifecycle.cleanup(async () => { if (!this.ended)
76
+ await this.iterator?.return?.(); });
77
+ }
78
+ async open(name) {
79
+ if (name === "-") {
80
+ this.identity = this.lifecycle.budget.context.stdinInput?.stat;
81
+ return;
82
+ }
83
+ const { context, limits } = this.lifecycle.budget;
84
+ this.lifecycle.budget.check(name.length, limits.maxPathBytes, "input path bytes");
85
+ this.path = resolvePath(context.cwd, pathText(name));
86
+ this.identity = await this.lifecycle.operation(() => context.fs.stat(this.path, { signal: context.signal }));
87
+ if (this.identity.type !== "file")
88
+ throw new CsplitError("read error: Is a directory");
89
+ }
90
+ assertOutput(path, existing) {
91
+ if (path === this.path || existing && this.identity && sameIdentity(existing, this.identity))
92
+ throw new CsplitError("output would overwrite the input file");
93
+ if (existing && this.identity && !sameIdentity(this.identity, this.identity))
94
+ throw new CsplitError("cannot overwrite an existing output with unknown input identity");
95
+ }
96
+ async source() {
97
+ const { context, limits } = this.lifecycle.budget;
98
+ if (this.path === undefined)
99
+ return context.stdin;
100
+ const { fs, signal } = context;
101
+ const capabilities = await this.lifecycle.operation(async () => await fs.capabilitiesFor?.(this.path, { signal }) ?? fs.capabilities);
102
+ if (fs.readStream && capabilities.streamingRead !== false)
103
+ return fs.readStream(this.path, { signal, chunkSize: 65_536 });
104
+ if (this.identity.size > Math.min(limits.maxInputBytes, limits.maxBufferedBytes / 2))
105
+ throw new CsplitError("buffered input bytes limit exceeded");
106
+ const value = await this.lifecycle.operation(() => fs.readFile(this.path, { signal, maxBytes: limits.maxInputBytes }));
107
+ return { async *[Symbol.asyncIterator]() { yield value; } };
108
+ }
109
+ appendLine() {
110
+ const { budget } = this.lifecycle;
111
+ budget.check(this.lines.length + 1, budget.limits.maxLines, "line count");
112
+ const line = new Uint8Array(this.partialBytes);
113
+ let offset = 0;
114
+ for (const part of this.partial) {
115
+ line.set(part, offset);
116
+ offset += part.length;
117
+ }
118
+ this.lines.push(line);
119
+ this.partial = [];
120
+ this.partialBytes = 0;
121
+ }
122
+ async get(number) {
123
+ const { budget } = this.lifecycle;
124
+ while (this.lines.length < number && !this.ended) {
125
+ this.lifecycle.assertOpen();
126
+ if (!this.iterator)
127
+ await this.lifecycle.operation(async () => {
128
+ this.iterator = (await this.source())[Symbol.asyncIterator]();
129
+ });
130
+ const result = await this.lifecycle.operation(() => this.iterator.next());
131
+ if (result.done) {
132
+ this.ended = true;
133
+ if (this.partialBytes)
134
+ this.appendLine();
135
+ break;
136
+ }
137
+ const chunk = result.value;
138
+ if (!(chunk instanceof Uint8Array))
139
+ throw new CsplitError("input produced a non-byte chunk");
140
+ this.total += chunk.length;
141
+ budget.check(this.total, budget.limits.maxInputBytes, "input bytes");
142
+ budget.check(this.total * 2, budget.limits.maxBufferedBytes, "buffered bytes");
143
+ if (!chunk.length)
144
+ budget.check(++this.emptyChunks, budget.limits.maxEmptyChunks, "empty input chunks");
145
+ budget.charge(chunk.length);
146
+ const owned = Uint8Array.from(chunk);
147
+ let start = 0;
148
+ for (let offset = 0; offset < owned.length; offset++) {
149
+ if (owned[offset] === 10) {
150
+ this.partialBytes += offset + 1 - start;
151
+ budget.check(this.partialBytes, budget.limits.maxLineBytes, "line bytes");
152
+ this.partial.push(owned.subarray(start, offset + 1));
153
+ this.appendLine();
154
+ start = offset + 1;
155
+ }
156
+ if (offset % 4096 === 0) {
157
+ budget.charge(Math.min(4096, owned.length - offset));
158
+ await budget.checkpointWork();
159
+ }
160
+ }
161
+ if (start < owned.length) {
162
+ this.partialBytes += owned.length - start;
163
+ budget.check(this.partialBytes, budget.limits.maxLineBytes, "line bytes");
164
+ this.partial.push(owned.subarray(start));
165
+ }
166
+ await budget.checkpointWork();
167
+ }
168
+ return this.lines[number - 1];
169
+ }
170
+ }
171
+ export class Outputs {
172
+ lifecycle;
173
+ options;
174
+ format;
175
+ input;
176
+ index = 0;
177
+ attempts = 0;
178
+ current;
179
+ preserve = false;
180
+ succeeded = false;
181
+ constructor(lifecycle, options, format, input) {
182
+ this.lifecycle = lifecycle;
183
+ this.options = options;
184
+ this.format = format;
185
+ this.input = input;
186
+ }
187
+ async parents(path) {
188
+ const { budget } = this.lifecycle;
189
+ const { context, limits } = budget;
190
+ const components = dirname(path).split("/").filter(Boolean);
191
+ budget.check(components.length, limits.maxPathDepth, "path depth");
192
+ const parents = [];
193
+ let current = "/";
194
+ for (const component of ["", ...components]) {
195
+ if (component)
196
+ current = resolvePath(current, component);
197
+ const identity = await this.lifecycle.operation(() => context.fs.lstat(current, { signal: context.signal }));
198
+ if (identity.type !== "directory" || !sameIdentity(identity, identity))
199
+ throw new CsplitError("unsafe output directory identity");
200
+ parents.push({ path: current, identity });
201
+ }
202
+ return parents;
203
+ }
204
+ async checked(output) {
205
+ await this.checkedParents(output.parents);
206
+ const { context } = this.lifecycle.budget;
207
+ const current = await this.lifecycle.operation(() => context.fs.lstat(output.path, { signal: context.signal }));
208
+ if (!output.identity || current.type !== "file" || !sameIdentity(current, output.identity))
209
+ throw new CsplitError("output changed before mutation");
210
+ }
211
+ async checkedParents(parents) {
212
+ const { context } = this.lifecycle.budget;
213
+ for (const parent of parents) {
214
+ const current = await this.lifecycle.operation(() => context.fs.lstat(parent.path, { signal: context.signal }));
215
+ if (current.type !== "directory" || !sameIdentity(current, parent.identity))
216
+ throw new CsplitError("output parent changed before mutation");
217
+ }
218
+ }
219
+ async open() {
220
+ const { budget } = this.lifecycle;
221
+ const { context, limits } = budget;
222
+ budget.check(++this.attempts, limits.maxFileAttempts, "output file attempts");
223
+ budget.check(this.index + 1, limits.maxFiles, "output file count");
224
+ const name = this.options.prefix + this.format(this.index);
225
+ budget.check(name.length, limits.maxPathBytes, "output filename bytes");
226
+ const path = resolvePath(context.cwd, pathText(name));
227
+ try {
228
+ const parents = await this.parents(path);
229
+ let existing;
230
+ try {
231
+ existing = await this.lifecycle.operation(() => context.fs.lstat(path, { signal: context.signal }));
232
+ }
233
+ catch (error) {
234
+ context.signal.throwIfAborted();
235
+ if (!missing(error))
236
+ throw error;
237
+ }
238
+ if (existing && (existing.type !== "file" || !sameIdentity(existing, existing)))
239
+ throw new CsplitError(`unsafe output file ${budget.quote(name)}`);
240
+ this.input.assertOutput(path, existing);
241
+ const output = { path, name, parents, created: false, removed: false, elided: false, failed: false, size: 0, cleanup: async () => { } };
242
+ output.cleanup = retainFileSystemCleanup(context.fs, async (view) => {
243
+ if (!output.created || !output.identity || !output.elided && (this.succeeded || this.options.keep || this.preserve))
244
+ return;
245
+ try {
246
+ for (const parent of parents) {
247
+ const current = await view.lstat(parent.path);
248
+ if (current.type !== "directory" || !sameIdentity(current, parent.identity))
249
+ return;
250
+ }
251
+ const current = await view.lstat(path);
252
+ if (current.type === "file" && sameIdentity(current, output.identity)) {
253
+ await view.rm(path);
254
+ output.removed = true;
255
+ }
256
+ }
257
+ catch (error) {
258
+ if (!missing(error))
259
+ throw error;
260
+ }
261
+ }, { maxOperations: limits.maxPathDepth + 3 });
262
+ this.lifecycle.cleanup(output.cleanup);
263
+ await this.checkedParents(parents);
264
+ let admitted;
265
+ try {
266
+ admitted = await this.lifecycle.operation(() => context.fs.lstat(path, { signal: context.signal }));
267
+ }
268
+ catch (error) {
269
+ context.signal.throwIfAborted();
270
+ if (!missing(error))
271
+ throw error;
272
+ }
273
+ if (admitted ? !existing || admitted.type !== "file" || !sameIdentity(admitted, existing) : existing !== undefined)
274
+ throw new CsplitError("output changed before creation");
275
+ await this.checkedParents(parents);
276
+ await this.lifecycle.operation(async () => {
277
+ await context.fs.writeFile(path, new Uint8Array(), { signal: context.signal, flag: existing ? "w" : "wx" });
278
+ output.created = true;
279
+ if (existing)
280
+ output.identity = existing;
281
+ const identity = await context.fs.lstat(path, { signal: context.signal });
282
+ if (identity.type !== "file" || !sameIdentity(identity, identity) || existing && !sameIdentity(existing, identity))
283
+ throw new CsplitError("output creation identity unavailable");
284
+ output.identity = identity;
285
+ });
286
+ this.index++;
287
+ this.current = output;
288
+ }
289
+ catch (error) {
290
+ if (error instanceof FsError)
291
+ throw new CsplitError(`${name}: ${fsDetail(error)}`);
292
+ throw error;
293
+ }
294
+ }
295
+ async write(value) {
296
+ const output = this.current;
297
+ if (!output)
298
+ throw new CsplitError("output is not open");
299
+ const { budget } = this.lifecycle;
300
+ budget.fileBytes(value.length);
301
+ try {
302
+ await this.checked(output);
303
+ await this.lifecycle.operation(() => writeFileOutput(budget.context, value, chunk => budget.context.fs.appendFile(output.path, chunk, { signal: budget.context.signal })));
304
+ output.size += value.length;
305
+ }
306
+ catch (error) {
307
+ output.failed = true;
308
+ throw error;
309
+ }
310
+ }
311
+ async finish() {
312
+ const output = this.current;
313
+ if (!output)
314
+ return;
315
+ this.current = undefined;
316
+ if (output.failed)
317
+ return;
318
+ if (!output.size && this.options.elide) {
319
+ await this.checked(output);
320
+ output.elided = true;
321
+ await output.cleanup();
322
+ if (!output.removed)
323
+ throw new CsplitError("output changed before empty-file removal");
324
+ this.index--;
325
+ }
326
+ else if (!this.options.quiet)
327
+ await this.lifecycle.budget.print(`${output.size}\n`);
328
+ }
329
+ }
330
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/commands/csplit/io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Budget } from "./internal.js";
2
+ export interface Options {
3
+ prefix: string;
4
+ suffix?: string;
5
+ digits: number;
6
+ keep: boolean;
7
+ elide: boolean;
8
+ quiet: boolean;
9
+ suppress: boolean;
10
+ information?: "help" | "version";
11
+ operands: string[];
12
+ }
13
+ export declare function integer(value: string, signed?: boolean): bigint | undefined;
14
+ export declare function parseOptions(args: readonly string[], budget: Budget): Options;
15
+ export declare function suffixFormatter(options: Options, budget: Budget): (index: number) => string;
16
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/commands/csplit/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAyB,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,GAAG,SAAS,CAgBzE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA6D7E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAqD3F"}
@@ -0,0 +1,178 @@
1
+ import { Budget, CsplitError, pathText } from "./internal.js";
2
+ export function integer(value, signed = false) {
3
+ let offset = 0;
4
+ while (offset < value.length && " \t\n\r\v\f".includes(value[offset]))
5
+ offset++;
6
+ const negative = value[offset] === "-";
7
+ if (negative && !signed)
8
+ return undefined;
9
+ if (negative || value[offset] === "+")
10
+ offset++;
11
+ const start = offset;
12
+ let result = 0n;
13
+ const maximum = signed ? negative ? 9223372036854775808n : 9223372036854775807n : 18446744073709551615n;
14
+ for (; offset < value.length; offset++) {
15
+ const digit = value.charCodeAt(offset) - 48;
16
+ if (digit < 0 || digit > 9)
17
+ return undefined;
18
+ result = result * 10n + BigInt(digit);
19
+ if (result > maximum)
20
+ return undefined;
21
+ }
22
+ return offset === start ? undefined : negative ? -result : result;
23
+ }
24
+ export function parseOptions(args, budget) {
25
+ const parsed = { prefix: "xx", digits: 2, keep: false, elide: false, quiet: false, suppress: false, operands: [] };
26
+ const long = {
27
+ prefix: "f", "suffix-format": "b", "keep-files": "k", "elide-empty-files": "z",
28
+ digits: "n", quiet: "q", silent: "s", "suppress-matched": "suppress", help: "help", version: "version",
29
+ };
30
+ let ended = false;
31
+ const apply = (key, value) => {
32
+ if (key === "f")
33
+ parsed.prefix = value;
34
+ else if (key === "b")
35
+ parsed.suffix = value;
36
+ else if (key === "k")
37
+ parsed.keep = true;
38
+ else if (key === "z")
39
+ parsed.elide = true;
40
+ else if (key === "q" || key === "s")
41
+ parsed.quiet = true;
42
+ else if (key === "suppress")
43
+ parsed.suppress = true;
44
+ else if (key === "n") {
45
+ const count = integer(value, true);
46
+ if (count === undefined || count < 0n || count > 2147483647n)
47
+ throw new CsplitError(`invalid number: ${budget.quote(value)}`);
48
+ budget.check(Number(count), budget.limits.maxPathBytes, "suffix width");
49
+ parsed.digits = Number(count);
50
+ }
51
+ else
52
+ parsed.information = key;
53
+ };
54
+ for (let index = 0; index < args.length; index++) {
55
+ const argument = args[index];
56
+ budget.charge();
57
+ if (ended || argument === "-" || !argument.startsWith("-")) {
58
+ parsed.operands.push(argument);
59
+ if (Object.hasOwn(budget.context.env, "POSIXLY_CORRECT"))
60
+ ended = true;
61
+ }
62
+ else if (argument === "--")
63
+ ended = true;
64
+ else if (argument.startsWith("--")) {
65
+ const equals = argument.indexOf("=");
66
+ const name = argument.slice(2, equals < 0 ? undefined : equals);
67
+ const candidates = Object.keys(long).filter(key => key.startsWith(name));
68
+ if (!Object.hasOwn(long, name) && candidates.length > 1)
69
+ throw new CsplitError(`option ${budget.quote(argument)} is ambiguous; possibilities: ${candidates.map(key => budget.quote(`--${key}`)).join(" ")}`, true);
70
+ const selected = Object.hasOwn(long, name) ? name : candidates[0];
71
+ if (!selected)
72
+ throw new CsplitError(`unrecognized option ${budget.quote(argument)}`, true);
73
+ const key = long[selected];
74
+ let value;
75
+ if ("fbn".includes(key) && key.length === 1) {
76
+ value = equals < 0 ? args[++index] : argument.slice(equals + 1);
77
+ if (value === undefined)
78
+ throw new CsplitError(`option '--${selected}' requires an argument`, true);
79
+ }
80
+ else if (equals >= 0)
81
+ throw new CsplitError(`option '--${selected}' doesn't allow an argument`, true);
82
+ apply(key, value);
83
+ }
84
+ else {
85
+ for (let offset = 1; offset < argument.length; offset++) {
86
+ const key = argument[offset];
87
+ if (!"fbknsqz".includes(key))
88
+ throw new CsplitError(`invalid option -- ${budget.quote(key)}`, true);
89
+ let value;
90
+ if ("fbn".includes(key)) {
91
+ value = argument.slice(offset + 1) || args[++index];
92
+ if (value === undefined)
93
+ throw new CsplitError(`option requires an argument -- ${budget.quote(key)}`, true);
94
+ offset = argument.length;
95
+ }
96
+ apply(key, value);
97
+ }
98
+ }
99
+ if (parsed.information)
100
+ return parsed;
101
+ }
102
+ if (parsed.operands.length < 2)
103
+ throw new CsplitError(parsed.operands.length ? `missing operand after ${budget.quote(args.at(-1))}` : "missing operand", true);
104
+ budget.check(parsed.prefix.length, budget.limits.maxPathBytes, "prefix bytes");
105
+ pathText(parsed.prefix);
106
+ return parsed;
107
+ }
108
+ export function suffixFormatter(options, budget) {
109
+ if (options.suffix === undefined)
110
+ return index => String(index).padStart(options.digits, "0");
111
+ const format = options.suffix;
112
+ let before = "", after = "";
113
+ let conversion;
114
+ for (let offset = 0; offset < format.length; offset++) {
115
+ const character = format[offset];
116
+ if (character !== "%" || format[offset + 1] === "%") {
117
+ if (character === "%")
118
+ offset++;
119
+ if (conversion)
120
+ after += character;
121
+ else
122
+ before += character;
123
+ continue;
124
+ }
125
+ if (conversion)
126
+ throw new CsplitError("too many % conversion specifications in suffix");
127
+ let flags = "";
128
+ offset++;
129
+ while (offset < format.length && "-0'#".includes(format[offset]))
130
+ flags += format[offset++];
131
+ let width = 0;
132
+ while (offset < format.length && format[offset] >= "0" && format[offset] <= "9") {
133
+ width = width * 10 + Number(format[offset++]);
134
+ budget.check(width, budget.limits.maxPathBytes, "suffix width");
135
+ }
136
+ let precision;
137
+ if (format[offset] === ".") {
138
+ precision = 0;
139
+ offset++;
140
+ while (offset < format.length && format[offset] >= "0" && format[offset] <= "9") {
141
+ precision = precision * 10 + Number(format[offset++]);
142
+ budget.check(precision, budget.limits.maxPathBytes, "suffix precision");
143
+ }
144
+ }
145
+ const type = format[offset];
146
+ if (type === undefined)
147
+ throw new CsplitError("missing conversion specifier in suffix");
148
+ if (!"diuoxX".includes(type))
149
+ throw new CsplitError(`invalid conversion specifier in suffix: ${type >= " " && type <= "~" ? type : `\\${type.charCodeAt(0).toString(8).padStart(3, "0")}`}`);
150
+ const invalid = "diu".includes(type) ? flags.includes("#") ? "#" : "" : flags.includes("'") ? "'" : "";
151
+ if (invalid)
152
+ throw new CsplitError(`invalid flags in conversion specification: %${invalid}${type}`);
153
+ conversion = { width, flags, type, ...(precision === undefined ? {} : { precision }) };
154
+ }
155
+ if (!conversion)
156
+ throw new CsplitError("missing % conversion specification in suffix");
157
+ const { width, precision, flags, type } = conversion;
158
+ budget.check(options.prefix.length + before.length + after.length + Math.max(width, precision ?? 0, 10) + 2, budget.limits.maxPathBytes, "output filename bytes");
159
+ return index => {
160
+ let number = index === 0 && precision === 0 ? "" : index.toString(type === "o" ? 8 : type === "x" || type === "X" ? 16 : 10);
161
+ if (type === "X")
162
+ number = number.toUpperCase();
163
+ number = number.padStart(precision ?? 0, "0");
164
+ let prefix = "";
165
+ if (flags.includes("#")) {
166
+ if (type === "o" && !number.startsWith("0"))
167
+ prefix = "0";
168
+ else if ((type === "x" || type === "X") && index !== 0)
169
+ prefix = type === "X" ? "0X" : "0x";
170
+ }
171
+ if (flags.includes("0") && !flags.includes("-") && precision === undefined)
172
+ number = number.padStart(Math.max(0, width - prefix.length), "0");
173
+ let rendered = prefix + number;
174
+ rendered = flags.includes("-") ? rendered.padEnd(width) : rendered.padStart(width);
175
+ return before + rendered + after;
176
+ };
177
+ }
178
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/csplit/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { RegexSession } from "../regex-execution/portable.js";
2
+ import { Budget } from "./internal.js";
3
+ export interface Pattern {
4
+ readonly argument: string;
5
+ readonly line?: bigint;
6
+ readonly expression?: Uint8Array;
7
+ readonly ignore: boolean;
8
+ readonly offset: bigint;
9
+ repeat: bigint;
10
+ forever: boolean;
11
+ }
12
+ export declare class Matcher {
13
+ readonly session: RegexSession;
14
+ readonly budget: Budget;
15
+ constructor(session: RegexSession, budget: Budget);
16
+ search(pattern: Uint8Array, subject: Uint8Array): Promise<boolean>;
17
+ }
18
+ export declare function preparePatterns(args: readonly string[], matcher: Matcher): Promise<readonly Pattern[]>;
19
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/commands/csplit/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAsB,MAAM,eAAe,CAAC;AAG3D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,OAAO;IACN,QAAQ,CAAC,OAAO,EAAE,YAAY;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAA9C,OAAO,EAAE,YAAY,EAAW,MAAM,EAAE,MAAM;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBzE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CA8C5G"}