poe-code 15.0.9 → 15.0.10

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 (74) hide show
  1. package/dist/metafile.json +1 -1
  2. package/package.json +7 -1
  3. package/packages/safe-bash/dist/chunks/{chunk-L2GZSOSJ.js → chunk-4NMFAR4Z.js} +2 -16
  4. package/packages/safe-bash/dist/chunks/{chunk-L2GZSOSJ.js.map → chunk-4NMFAR4Z.js.map} +4 -4
  5. package/packages/safe-bash/dist/chunks/{chunk-UZELUFGF.js → chunk-54EWSIBL.js} +5 -5
  6. package/packages/safe-bash/dist/chunks/{chunk-NVUC5B2R.js → chunk-5FNFA5ZV.js} +9 -7
  7. package/packages/safe-bash/dist/chunks/{chunk-NVUC5B2R.js.map → chunk-5FNFA5ZV.js.map} +1 -1
  8. package/packages/safe-bash/dist/chunks/{chunk-M7KZ7V4P.js → chunk-5X2TAR25.js} +2 -2
  9. package/packages/safe-bash/dist/chunks/{chunk-XROAIPKA.js → chunk-67TENRTW.js} +7 -5
  10. package/packages/safe-bash/dist/chunks/{chunk-XROAIPKA.js.map → chunk-67TENRTW.js.map} +1 -1
  11. package/packages/safe-bash/dist/chunks/{chunk-5Y4AEZB2.js → chunk-7XJVLU37.js} +6 -4
  12. package/packages/safe-bash/dist/chunks/{chunk-5Y4AEZB2.js.map → chunk-7XJVLU37.js.map} +1 -1
  13. package/packages/safe-bash/dist/chunks/chunk-CI42NIWL.js +21 -0
  14. package/packages/safe-bash/dist/chunks/chunk-CI42NIWL.js.map +7 -0
  15. package/packages/safe-bash/dist/chunks/{chunk-JWUT4LBW.js → chunk-ELK3CQTQ.js} +47 -16
  16. package/packages/safe-bash/dist/chunks/chunk-ELK3CQTQ.js.map +7 -0
  17. package/packages/safe-bash/dist/chunks/{chunk-PY37EOPJ.js → chunk-GZH6ILJC.js} +50 -15
  18. package/packages/safe-bash/dist/chunks/chunk-GZH6ILJC.js.map +7 -0
  19. package/packages/safe-bash/dist/chunks/chunk-LUIEXTN5.js +527 -0
  20. package/packages/safe-bash/dist/chunks/chunk-LUIEXTN5.js.map +7 -0
  21. package/packages/safe-bash/dist/chunks/{chunk-AVXYPKV7.js → chunk-QQHMFJHF.js} +4 -4
  22. package/packages/safe-bash/dist/chunks/{chunk-QY2XHZTE.js → chunk-RDIJ6M2D.js} +3 -3
  23. package/packages/safe-bash/dist/chunks/{chunk-PPVCI2F2.js → chunk-UL4TNDNV.js} +2 -2
  24. package/packages/safe-bash/dist/commands/csplit/index.browser.js +5 -4
  25. package/packages/safe-bash/dist/commands/factor/command.d.ts +4 -0
  26. package/packages/safe-bash/dist/commands/factor/command.d.ts.map +1 -0
  27. package/packages/safe-bash/dist/commands/factor/command.js +121 -0
  28. package/packages/safe-bash/dist/commands/factor/command.js.map +1 -0
  29. package/packages/safe-bash/dist/commands/factor/factor.d.ts +4 -0
  30. package/packages/safe-bash/dist/commands/factor/factor.d.ts.map +1 -0
  31. package/packages/safe-bash/dist/commands/factor/factor.js +54 -0
  32. package/packages/safe-bash/dist/commands/factor/factor.js.map +1 -0
  33. package/packages/safe-bash/dist/commands/factor/index.browser.js +13 -0
  34. package/packages/safe-bash/dist/commands/factor/index.browser.js.map +7 -0
  35. package/packages/safe-bash/dist/commands/factor/index.d.ts +7 -0
  36. package/packages/safe-bash/dist/commands/factor/index.d.ts.map +1 -0
  37. package/packages/safe-bash/dist/commands/factor/index.js +13 -0
  38. package/packages/safe-bash/dist/commands/factor/index.js.map +1 -0
  39. package/packages/safe-bash/dist/commands/factor/internal.d.ts +51 -0
  40. package/packages/safe-bash/dist/commands/factor/internal.d.ts.map +1 -0
  41. package/packages/safe-bash/dist/commands/factor/internal.js +138 -0
  42. package/packages/safe-bash/dist/commands/factor/internal.js.map +1 -0
  43. package/packages/safe-bash/dist/commands/factor/io.d.ts +36 -0
  44. package/packages/safe-bash/dist/commands/factor/io.d.ts.map +1 -0
  45. package/packages/safe-bash/dist/commands/factor/io.js +207 -0
  46. package/packages/safe-bash/dist/commands/factor/io.js.map +1 -0
  47. package/packages/safe-bash/dist/commands/network/index.browser.js +6 -5
  48. package/packages/safe-bash/dist/commands/pr/index.browser.js +4 -3
  49. package/packages/safe-bash/dist/commands/pr/io.d.ts.map +1 -1
  50. package/packages/safe-bash/dist/commands/pr/io.js +46 -11
  51. package/packages/safe-bash/dist/commands/pr/io.js.map +1 -1
  52. package/packages/safe-bash/dist/commands/tsort/index.browser.js +4 -3
  53. package/packages/safe-bash/dist/commands/tsort/io.d.ts.map +1 -1
  54. package/packages/safe-bash/dist/commands/tsort/io.js +43 -12
  55. package/packages/safe-bash/dist/commands/tsort/io.js.map +1 -1
  56. package/packages/safe-bash/dist/commands/xml/index.browser.js +5 -4
  57. package/packages/safe-bash/dist/commands/yq/index.browser.js +6 -5
  58. package/packages/safe-bash/dist/core.browser.js +32 -20
  59. package/packages/safe-bash/dist/core.browser.js.map +2 -2
  60. package/packages/safe-bash/dist/core.d.ts +1 -0
  61. package/packages/safe-bash/dist/core.d.ts.map +1 -1
  62. package/packages/safe-bash/dist/core.js +1 -0
  63. package/packages/safe-bash/dist/core.js.map +1 -1
  64. package/packages/safe-bash/dist/plugins/composition.d.ts +2 -0
  65. package/packages/safe-bash/dist/plugins/composition.d.ts.map +1 -1
  66. package/packages/safe-bash/dist/plugins/composition.js +3 -1
  67. package/packages/safe-bash/dist/plugins/composition.js.map +1 -1
  68. package/packages/safe-bash/dist/chunks/chunk-JWUT4LBW.js.map +0 -7
  69. package/packages/safe-bash/dist/chunks/chunk-PY37EOPJ.js.map +0 -7
  70. /package/packages/safe-bash/dist/chunks/{chunk-UZELUFGF.js.map → chunk-54EWSIBL.js.map} +0 -0
  71. /package/packages/safe-bash/dist/chunks/{chunk-M7KZ7V4P.js.map → chunk-5X2TAR25.js.map} +0 -0
  72. /package/packages/safe-bash/dist/chunks/{chunk-AVXYPKV7.js.map → chunk-QQHMFJHF.js.map} +0 -0
  73. /package/packages/safe-bash/dist/chunks/{chunk-QY2XHZTE.js.map → chunk-RDIJ6M2D.js.map} +0 -0
  74. /package/packages/safe-bash/dist/chunks/{chunk-PPVCI2F2.js.map → chunk-UL4TNDNV.js.map} +0 -0
@@ -2,10 +2,11 @@ import {
2
2
  createCsplitCommand,
3
3
  createCsplitCommands,
4
4
  csplitCommands
5
- } from "../../chunks/chunk-XROAIPKA.js";
6
- import "../../chunks/chunk-QY2XHZTE.js";
7
- import "../../chunks/chunk-PPVCI2F2.js";
8
- import "../../chunks/chunk-L2GZSOSJ.js";
5
+ } from "../../chunks/chunk-67TENRTW.js";
6
+ import "../../chunks/chunk-RDIJ6M2D.js";
7
+ import "../../chunks/chunk-CI42NIWL.js";
8
+ import "../../chunks/chunk-UL4TNDNV.js";
9
+ import "../../chunks/chunk-4NMFAR4Z.js";
9
10
  export {
10
11
  createCsplitCommand,
11
12
  createCsplitCommands,
@@ -0,0 +1,4 @@
1
+ import type { CommandDefinition } from "../../contracts/index.js";
2
+ import { type FactorCommandsOptions } from "./internal.js";
3
+ export declare function createFactorCommand(options?: FactorCommandsOptions): CommandDefinition;
4
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/factor/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAA+C,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAIxG,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,iBAAiB,CAgF1F"}
@@ -0,0 +1,121 @@
1
+ import { createOutputOperation } from "../../contracts/output.js";
2
+ import { Budget, FactorError, bytes, quote, settings } from "./internal.js";
3
+ import { Lifecycle, RecordWriter, TokenReader } from "./io.js";
4
+ import { factorRecord, parseNumber } from "./factor.js";
5
+ export function createFactorCommand(options = {}) {
6
+ const limits = settings(options);
7
+ return { name: "factor", description: "Print prime factors of bounded nonnegative integers", async execute(context) {
8
+ const output = createOutputOperation(context, context.stdout);
9
+ const budget = new Budget(context, limits, output.signal);
10
+ let lifecycle;
11
+ let failure;
12
+ let primary;
13
+ let exitCode = 0;
14
+ try {
15
+ lifecycle = new Lifecycle(budget, output);
16
+ const operands = [];
17
+ let optionsEnded = false, debug = false;
18
+ let information;
19
+ for (const argument of budget.arguments()) {
20
+ if (!optionsEnded && argument === "--") {
21
+ optionsEnded = true;
22
+ continue;
23
+ }
24
+ if (!optionsEnded && argument.startsWith("--")) {
25
+ const equals = argument.indexOf("=");
26
+ const option = equals < 0 ? argument.slice(2) : argument.slice(2, equals);
27
+ const matches = ["-debug", "help", "version"].filter(name => name.startsWith(option));
28
+ if (matches.length > 1)
29
+ throw new FactorError(`option '${argument}' is ambiguous; possibilities: ${matches.map(name => `'--${name}'`).join(" ")}`, true);
30
+ const matched = matches[0];
31
+ if (!matched)
32
+ throw new FactorError(`unrecognized option '${argument}'`, true);
33
+ if (equals >= 0)
34
+ throw new FactorError(`option '--${matched}' doesn't allow an argument`, true);
35
+ if (matched === "-debug")
36
+ debug = true;
37
+ else {
38
+ information = matched;
39
+ break;
40
+ }
41
+ }
42
+ else {
43
+ if (!optionsEnded && argument.length > 1 && argument.startsWith("-"))
44
+ throw new FactorError(`invalid option -- '${argument[1]}'`, true);
45
+ operands.push(argument);
46
+ if (context.env.POSIXLY_CORRECT !== undefined)
47
+ optionsEnded = true;
48
+ }
49
+ }
50
+ if (information) {
51
+ const message = information === "version" ? "factor (virtual-bash)\n" : `Usage: factor [NUMBER]...\nPrint prime factors; with no numbers, read standard input.\nOptions: --help --version\nMaximum supported value: ${limits.maxValue}\n`;
52
+ budget.outputRoom(message.length);
53
+ await lifecycle.write(bytes(message));
54
+ }
55
+ else {
56
+ const writer = new RecordWriter(lifecycle);
57
+ const process = async (input) => {
58
+ budget.number();
59
+ budget.check(input.length, limits.maxTokenBytes, "token bytes");
60
+ const value = await parseNumber(input, budget);
61
+ if (typeof value === "string") {
62
+ exitCode = 1;
63
+ const suffix = value === "invalid" ? " is not a valid positive integer\n" : ` exceeds supported maximum ${limits.maxValue}\n`;
64
+ await lifecycle.diagnostic(`factor: ${quote(input, budget, 8 + suffix.length)}${suffix}`);
65
+ }
66
+ else {
67
+ if (debug)
68
+ await lifecycle.diagnostic("[using single-precision arithmetic] ");
69
+ await writer.append(await factorRecord(value, budget));
70
+ }
71
+ };
72
+ if (operands.length) {
73
+ for (const operand of operands)
74
+ await process(operand);
75
+ }
76
+ else {
77
+ const reader = new TokenReader(lifecycle);
78
+ for (;;) {
79
+ const token = await reader.next();
80
+ if (token === undefined)
81
+ break;
82
+ try {
83
+ await process(token);
84
+ }
85
+ finally {
86
+ budget.retain(-token.length * 4);
87
+ }
88
+ }
89
+ }
90
+ await writer.finish();
91
+ }
92
+ }
93
+ catch (error) {
94
+ primary = { reason: error };
95
+ if (error instanceof FactorError && !output.signal.aborted && lifecycle) {
96
+ exitCode = 1;
97
+ try {
98
+ await lifecycle.diagnostic(`factor: ${error.message}\n${error.usage ? "Try 'factor --help' for more information.\n" : ""}`);
99
+ }
100
+ catch (reporting) {
101
+ failure = { reason: new AggregateError([error, reporting], "factor failure reporting failed") };
102
+ }
103
+ }
104
+ else
105
+ failure = { reason: error };
106
+ }
107
+ try {
108
+ await output.close();
109
+ }
110
+ catch (cleanup) {
111
+ const previous = failure ?? primary;
112
+ failure = { reason: previous ? new AggregateError([previous.reason, cleanup], "factor execution and cleanup failed") : cleanup };
113
+ }
114
+ context.signal.throwIfAborted();
115
+ output.signal.throwIfAborted();
116
+ if (failure)
117
+ throw failure.reason;
118
+ return { exitCode };
119
+ } };
120
+ }
121
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/factor/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Budget } from "./internal.js";
2
+ export declare function parseNumber(input: string, budget: Budget): Promise<number | "invalid" | "large">;
3
+ export declare function factorRecord(value: number, budget: Budget): Promise<string>;
4
+ //# sourceMappingURL=factor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factor.d.ts","sourceRoot":"","sources":["../../../src/commands/factor/factor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,CAiBtG;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjF"}
@@ -0,0 +1,54 @@
1
+ import { Budget } from "./internal.js";
2
+ export async function parseNumber(input, budget) {
3
+ let start = 0;
4
+ while (input[start] === " ") {
5
+ budget.charge();
6
+ start++;
7
+ await budget.checkpointWork();
8
+ }
9
+ if (input[start] === "+")
10
+ start++;
11
+ if (start === input.length)
12
+ return "invalid";
13
+ let result = 0, large = false;
14
+ for (let offset = start; offset < input.length; offset++) {
15
+ budget.charge();
16
+ const digit = input.charCodeAt(offset) - 48;
17
+ if (digit < 0 || digit > 9)
18
+ return "invalid";
19
+ if (!large) {
20
+ if (result > Math.floor((budget.limits.maxValue - digit) / 10))
21
+ large = true;
22
+ else
23
+ result = result * 10 + digit;
24
+ }
25
+ await budget.checkpointWork();
26
+ }
27
+ return large ? "large" : result;
28
+ }
29
+ export async function factorRecord(value, budget) {
30
+ let remaining = value;
31
+ const factors = [];
32
+ budget.retain(512);
33
+ try {
34
+ for (let divisor = 2; divisor * divisor <= remaining; divisor = divisor === 2 ? 3 : divisor + 2) {
35
+ for (;;) {
36
+ budget.charge();
37
+ await budget.checkpointWork();
38
+ if (remaining % divisor !== 0)
39
+ break;
40
+ budget.charge(2);
41
+ factors.push(divisor);
42
+ remaining /= divisor;
43
+ }
44
+ }
45
+ if (remaining > 1)
46
+ factors.push(remaining);
47
+ budget.charge(1 + factors.length * 11);
48
+ return `${value}:${factors.map(factor => ` ${factor}`).join("")}\n`;
49
+ }
50
+ finally {
51
+ budget.retain(-512);
52
+ }
53
+ }
54
+ //# sourceMappingURL=factor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factor.js","sourceRoot":"","sources":["../../../src/commands/factor/factor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,MAAc;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAAC,CAAC;IACzF,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,KAAK,EAAE,CAAC;IAClC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC;;gBACxE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,MAAc;IAC9D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,IAAI,SAAS,EAAE,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAChG,SAAS,CAAC;gBACR,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC9B,IAAI,SAAS,GAAG,OAAO,KAAK,CAAC;oBAAE,MAAM;gBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,SAAS,IAAI,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;IACtE,CAAC;YAAS,CAAC;QAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import {
2
+ createFactorCommand,
3
+ createFactorCommands,
4
+ factorCommands
5
+ } from "../../chunks/chunk-LUIEXTN5.js";
6
+ import "../../chunks/chunk-UL4TNDNV.js";
7
+ import "../../chunks/chunk-4NMFAR4Z.js";
8
+ export {
9
+ createFactorCommand,
10
+ createFactorCommands,
11
+ factorCommands
12
+ };
13
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import type { CommandDefinition, VirtualShellPlugin } from "../../contracts/index.js";
2
+ import type { FactorCommandsOptions } from "./internal.js";
3
+ export { createFactorCommand } from "./command.js";
4
+ export type { FactorCommandsOptions, FactorLimits } from "./internal.js";
5
+ export declare function createFactorCommands(options?: FactorCommandsOptions): readonly CommandDefinition[];
6
+ export declare function factorCommands(options?: FactorCommandsOptions): VirtualShellPlugin;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/factor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,SAAS,iBAAiB,EAAE,CAEtG;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,kBAAkB,CAKtF"}
@@ -0,0 +1,13 @@
1
+ import { createFactorCommand } from "./command.js";
2
+ export { createFactorCommand } from "./command.js";
3
+ export function createFactorCommands(options = {}) {
4
+ return [createFactorCommand(options)];
5
+ }
6
+ export function factorCommands(options = {}) {
7
+ const commands = createFactorCommands(options);
8
+ return { name: "factor-commands", setup(host) {
9
+ for (const command of commands)
10
+ host.commands.register(command, { replace: options.replace ?? false });
11
+ } };
12
+ }
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/factor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,IAAI;YAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QACzG,CAAC,EAAE,CAAC;AACN,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type CommandContext } from "../../contracts/index.js";
2
+ import { PublicDiagnostic } from "../../diagnostics.js";
3
+ export interface FactorLimits {
4
+ readonly maxValue: number;
5
+ readonly maxArguments: number;
6
+ readonly maxArgumentBytes: number;
7
+ readonly maxInputBytes: number;
8
+ readonly maxTokenBytes: number;
9
+ readonly maxNumbers: number;
10
+ readonly maxBufferedBytes: number;
11
+ readonly maxOutputBytes: number;
12
+ readonly maxDiagnosticBytes: number;
13
+ readonly maxWork: number;
14
+ readonly maxEmptyChunks: number;
15
+ }
16
+ export interface FactorCommandsOptions {
17
+ readonly replace?: boolean;
18
+ readonly limits?: Partial<FactorLimits>;
19
+ }
20
+ export declare function settings(options: FactorCommandsOptions): FactorLimits;
21
+ export declare class FactorError extends PublicDiagnostic {
22
+ readonly usage: boolean;
23
+ constructor(message: string, usage?: boolean);
24
+ }
25
+ export declare function raw(value: Uint8Array): string;
26
+ export declare function bytes(value: string): Uint8Array;
27
+ export declare function quote(value: string, budget: Budget, suffixLength: number): string;
28
+ export declare class Budget {
29
+ readonly context: CommandContext;
30
+ readonly limits: FactorLimits;
31
+ readonly signal: AbortSignal;
32
+ private work;
33
+ private checkpoint;
34
+ private retained;
35
+ private input;
36
+ private numbers;
37
+ private output;
38
+ private diagnostics;
39
+ constructor(context: CommandContext, limits: FactorLimits, signal: AbortSignal);
40
+ check(value: number, maximum: number, label: string): void;
41
+ charge(amount?: number): void;
42
+ checkpointWork(): Promise<void>;
43
+ retain(amount: number): void;
44
+ number(): void;
45
+ inputBytes(amount: number): void;
46
+ outputRoom(amount: number): void;
47
+ diagnosticRoom(amount: number): void;
48
+ emitted(amount: number, diagnostic: boolean): void;
49
+ arguments(): string[];
50
+ }
51
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/commands/factor/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACzC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,YAAY,CAYrE;AAED,qBAAa,WAAY,SAAQ,gBAAgB;IAClB,QAAQ,CAAC,KAAK;gBAA/B,OAAO,EAAE,MAAM,EAAW,KAAK,UAAQ;CACpD;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAI7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE/C;AAID,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAajF;AAED,qBAAa,MAAM;IAQL,QAAQ,CAAC,OAAO,EAAE,cAAc;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW;IAPzG,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAK;gBACH,OAAO,EAAE,cAAc,EAAW,MAAM,EAAE,YAAY,EAAW,MAAM,EAAE,WAAW;IACzG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG1D,MAAM,CAAC,MAAM,SAAI,GAAG,IAAI;IAKlB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,MAAM,IAAI,IAAI;IACd,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAChC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACpC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAIlD,SAAS,IAAI,MAAM,EAAE;CAyBtB"}
@@ -0,0 +1,138 @@
1
+ import { getCommandArguments } from "../../contracts/index.js";
2
+ import { shellValueByteLength, shellValueBytes } from "../../contracts/value.js";
3
+ import { yieldTurn } from "../../contracts/yield.js";
4
+ import { PublicDiagnostic } from "../../diagnostics.js";
5
+ export function settings(options) {
6
+ const limits = {
7
+ maxValue: 4_294_967_295, maxArguments: 4096, maxArgumentBytes: 65_536,
8
+ maxInputBytes: 16_777_216, maxTokenBytes: 65_536, maxNumbers: 65_536,
9
+ maxBufferedBytes: 4_194_304, maxOutputBytes: 16_777_216,
10
+ maxDiagnosticBytes: 65_536, maxWork: 8_388_608, maxEmptyChunks: 4096, ...options.limits,
11
+ };
12
+ for (const [name, value] of Object.entries(limits)) {
13
+ if (!Number.isSafeInteger(value) || value < 1)
14
+ throw new RangeError(`Invalid factor limit: ${name}`);
15
+ }
16
+ if (limits.maxValue > 4_294_967_295)
17
+ throw new RangeError("factor maxValue cannot exceed 4294967295");
18
+ return Object.freeze(limits);
19
+ }
20
+ export class FactorError extends PublicDiagnostic {
21
+ usage;
22
+ constructor(message, usage = false) {
23
+ super(message);
24
+ this.usage = usage;
25
+ }
26
+ }
27
+ export function raw(value) {
28
+ let result = "";
29
+ for (let offset = 0; offset < value.length; offset += 4096)
30
+ result += String.fromCharCode(...value.subarray(offset, offset + 4096));
31
+ return result;
32
+ }
33
+ export function bytes(value) {
34
+ return Uint8Array.from(value, character => character.charCodeAt(0));
35
+ }
36
+ const escapes = { "\x07": "\\a", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", "\t": "\\t", "\v": "\\v", "\\": "\\\\", "'": "\\'" };
37
+ export function quote(value, budget, suffixLength) {
38
+ let length = 2;
39
+ for (const character of value) {
40
+ const code = character.charCodeAt(0);
41
+ length += escapes[character]?.length ?? (code >= 32 && code < 127 ? 1 : 4);
42
+ }
43
+ budget.diagnosticRoom(length + suffixLength);
44
+ let result = "'";
45
+ for (const character of value) {
46
+ const code = character.charCodeAt(0);
47
+ result += escapes[character] ?? (code >= 32 && code < 127 ? character : `\\${code.toString(8).padStart(3, "0")}`);
48
+ }
49
+ return `${result}'`;
50
+ }
51
+ export class Budget {
52
+ context;
53
+ limits;
54
+ signal;
55
+ work = 0;
56
+ checkpoint = 0;
57
+ retained = 0;
58
+ input = 0;
59
+ numbers = 0;
60
+ output = 0;
61
+ diagnostics = 0;
62
+ constructor(context, limits, signal) {
63
+ this.context = context;
64
+ this.limits = limits;
65
+ this.signal = signal;
66
+ }
67
+ check(value, maximum, label) {
68
+ if (!Number.isSafeInteger(value) || value < 0 || value > maximum)
69
+ throw new FactorError(`${label} limit exceeded`);
70
+ }
71
+ charge(amount = 1) {
72
+ this.signal.throwIfAborted();
73
+ this.check(this.work + amount, this.limits.maxWork, "work");
74
+ this.work += amount;
75
+ }
76
+ async checkpointWork() {
77
+ this.signal.throwIfAborted();
78
+ if (this.work - this.checkpoint >= 1024) {
79
+ this.checkpoint = this.work;
80
+ await yieldTurn(this.signal);
81
+ }
82
+ }
83
+ retain(amount) {
84
+ this.check(this.retained + amount, this.limits.maxBufferedBytes, "buffered bytes");
85
+ this.retained += amount;
86
+ }
87
+ number() { this.check(++this.numbers, this.limits.maxNumbers, "numbers"); this.charge(); }
88
+ inputBytes(amount) {
89
+ this.check(this.input + amount, this.limits.maxInputBytes, "input bytes");
90
+ this.input += amount;
91
+ }
92
+ outputRoom(amount) { this.check(this.output + amount, this.limits.maxOutputBytes, "output bytes"); }
93
+ diagnosticRoom(amount) { this.check(this.diagnostics + amount, this.limits.maxDiagnosticBytes, "diagnostic bytes"); }
94
+ emitted(amount, diagnostic) {
95
+ if (diagnostic) {
96
+ this.diagnosticRoom(amount);
97
+ this.diagnostics += amount;
98
+ }
99
+ else {
100
+ this.outputRoom(amount);
101
+ this.charge(amount);
102
+ this.output += amount;
103
+ }
104
+ }
105
+ arguments() {
106
+ this.check(this.context.args.length, this.limits.maxArguments, "argument count");
107
+ let total = 0;
108
+ for (const argument of this.context.args) {
109
+ total += argument.length;
110
+ this.check(total, this.limits.maxArgumentBytes, "argument bytes");
111
+ for (let offset = 0; offset < argument.length; offset++) {
112
+ const unit = argument.charCodeAt(offset);
113
+ if (unit >= 0xd800 && unit <= 0xdbff) {
114
+ const next = argument.charCodeAt(++offset);
115
+ if (!(next >= 0xdc00 && next <= 0xdfff))
116
+ throw new FactorError("arguments must contain well-formed Unicode");
117
+ }
118
+ else if (unit >= 0xdc00 && unit <= 0xdfff)
119
+ throw new FactorError("arguments must contain well-formed Unicode");
120
+ }
121
+ }
122
+ total = 0;
123
+ const values = this.context.argumentValues === undefined ? this.context.args : getCommandArguments(this.context).values;
124
+ for (const argument of values) {
125
+ total += shellValueByteLength(argument);
126
+ this.check(total, this.limits.maxArgumentBytes, "argument bytes");
127
+ }
128
+ this.charge(total);
129
+ this.retain(total * 8 + this.context.args.length * 64 + 128);
130
+ return getCommandArguments(this.context).values.map(argument => {
131
+ const value = shellValueBytes(argument);
132
+ if (value.includes(0))
133
+ throw new FactorError("NUL is not supported in arguments");
134
+ return raw(value);
135
+ });
136
+ }
137
+ }
138
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/commands/factor/internal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { OutputOperation } from "../../contracts/output.js";
2
+ import { Budget } from "./internal.js";
3
+ export declare class Lifecycle {
4
+ readonly budget: Budget;
5
+ private readonly pending;
6
+ private readonly cleanups;
7
+ private closing;
8
+ constructor(budget: Budget, output: OutputOperation);
9
+ cleanup(action: () => Promise<void>): void;
10
+ assertOpen(): void;
11
+ operation<Value>(action: () => Value | Promise<Value>): Promise<Value>;
12
+ close(): Promise<void>;
13
+ write(value: Uint8Array, diagnostic?: boolean): Promise<void>;
14
+ diagnostic(value: string): Promise<void>;
15
+ }
16
+ export declare class TokenReader {
17
+ readonly lifecycle: Lifecycle;
18
+ private iterator;
19
+ private chunk;
20
+ private token;
21
+ private offset;
22
+ private ended;
23
+ private empties;
24
+ constructor(lifecycle: Lifecycle);
25
+ private get;
26
+ next(): Promise<string | undefined>;
27
+ }
28
+ export declare class RecordWriter {
29
+ readonly lifecycle: Lifecycle;
30
+ private buffer;
31
+ private used;
32
+ constructor(lifecycle: Lifecycle);
33
+ append(record: string): Promise<void>;
34
+ finish(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/commands/factor/io.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,MAAM,EAA2B,MAAM,eAAe,CAAC;AAEhE,qBAAa,SAAS;IAIR,QAAQ,CAAC,MAAM,EAAE,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,OAAO,CAA4B;gBACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;IAC5D,OAAO,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAC1C,UAAU,IAAI,IAAI;IAIZ,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAO5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAShB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/C;AAED,qBAAa,WAAW;IAOV,QAAQ,CAAC,SAAS,EAAE,SAAS;IANzC,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAK;gBACC,SAAS,EAAE,SAAS;YAW3B,GAAG;IAuCX,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA2B1C;AAED,qBAAa,YAAY;IAGX,QAAQ,CAAC,SAAS,EAAE,SAAS;IAFzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAK;gBACI,SAAS,EAAE,SAAS;IAKnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}