poe-code 15.0.4 → 15.0.5
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/metafile.json +1 -1
- package/package.json +8 -2
- package/packages/safe-bash/dist/chunks/chunk-2GV4WO7O.js +136 -0
- package/packages/safe-bash/dist/chunks/chunk-2GV4WO7O.js.map +7 -0
- package/packages/safe-bash/dist/chunks/chunk-54Z5EUCW.js +340 -0
- package/packages/safe-bash/dist/chunks/chunk-54Z5EUCW.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-NYHAKXQ7.js → chunk-6MHYEBAJ.js} +16 -140
- package/packages/safe-bash/dist/chunks/chunk-6MHYEBAJ.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-5MSOBYRG.js → chunk-IKATLB4I.js} +5 -3
- package/packages/safe-bash/dist/chunks/{chunk-5MSOBYRG.js.map → chunk-IKATLB4I.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-5OCQTFXT.js → chunk-LUJYX5H5.js} +6 -332
- package/packages/safe-bash/dist/chunks/{chunk-5OCQTFXT.js.map → chunk-LUJYX5H5.js.map} +4 -4
- package/packages/safe-bash/dist/chunks/chunk-UGMUVHIY.js +1603 -0
- package/packages/safe-bash/dist/chunks/chunk-UGMUVHIY.js.map +7 -0
- package/packages/safe-bash/dist/commands/network/args.d.ts +3 -0
- package/packages/safe-bash/dist/commands/network/args.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/network/args.js +1 -1
- package/packages/safe-bash/dist/commands/network/args.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/body.js +2 -2
- package/packages/safe-bash/dist/commands/network/body.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/curl.d.ts +12 -2
- package/packages/safe-bash/dist/commands/network/curl.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/network/curl.js +46 -27
- package/packages/safe-bash/dist/commands/network/curl.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/index.browser.js +29 -0
- package/packages/safe-bash/dist/commands/network/index.browser.js.map +7 -0
- package/packages/safe-bash/dist/commands/network/index.d.ts +1 -10
- package/packages/safe-bash/dist/commands/network/index.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/network/index.js +1 -22
- package/packages/safe-bash/dist/commands/network/index.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/platform.d.ts +4 -0
- package/packages/safe-bash/dist/commands/network/platform.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/network/platform.js +4 -0
- package/packages/safe-bash/dist/commands/network/platform.js.map +1 -0
- package/packages/safe-bash/dist/commands/network/public.d.ts +12 -0
- package/packages/safe-bash/dist/commands/network/public.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/network/public.js +27 -0
- package/packages/safe-bash/dist/commands/network/public.js.map +1 -0
- package/packages/safe-bash/dist/commands/network/shared.js +1 -1
- package/packages/safe-bash/dist/commands/network/shared.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/wget.d.ts +4 -0
- package/packages/safe-bash/dist/commands/network/wget.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/network/wget.js +155 -0
- package/packages/safe-bash/dist/commands/network/wget.js.map +1 -0
- package/packages/safe-bash/dist/commands/xml/index.browser.js +3 -2
- package/packages/safe-bash/dist/commands/yq/index.browser.js +4 -2
- package/packages/safe-bash/dist/core.browser.js +1054 -459
- package/packages/safe-bash/dist/core.browser.js.map +4 -4
- package/packages/safe-bash/dist/core.d.ts +1 -5
- package/packages/safe-bash/dist/core.d.ts.map +1 -1
- package/packages/safe-bash/dist/core.js +1 -3
- package/packages/safe-bash/dist/core.js.map +1 -1
- package/packages/safe-bash/dist/shell/arrays/bindings.d.ts +15 -2
- package/packages/safe-bash/dist/shell/arrays/bindings.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/arrays/bindings.js +118 -5
- package/packages/safe-bash/dist/shell/arrays/bindings.js.map +1 -1
- package/packages/safe-bash/dist/shell/arrays/syntax.d.ts +5 -2
- package/packages/safe-bash/dist/shell/arrays/syntax.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/arrays/syntax.js +19 -6
- package/packages/safe-bash/dist/shell/arrays/syntax.js.map +1 -1
- package/packages/safe-bash/dist/shell/display.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/display.js +5 -1
- package/packages/safe-bash/dist/shell/display.js.map +1 -1
- package/packages/safe-bash/dist/shell/input.d.ts +10 -0
- package/packages/safe-bash/dist/shell/input.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/input.js +110 -0
- package/packages/safe-bash/dist/shell/input.js.map +1 -1
- package/packages/safe-bash/dist/shell/mapfile.d.ts +29 -0
- package/packages/safe-bash/dist/shell/mapfile.d.ts.map +1 -0
- package/packages/safe-bash/dist/shell/mapfile.js +134 -0
- package/packages/safe-bash/dist/shell/mapfile.js.map +1 -0
- package/packages/safe-bash/dist/shell/parameter-transforms.d.ts +12 -0
- package/packages/safe-bash/dist/shell/parameter-transforms.d.ts.map +1 -0
- package/packages/safe-bash/dist/shell/parameter-transforms.js +166 -0
- package/packages/safe-bash/dist/shell/parameter-transforms.js.map +1 -0
- package/packages/safe-bash/dist/shell/parser.d.ts +12 -0
- package/packages/safe-bash/dist/shell/parser.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/parser.js +75 -14
- package/packages/safe-bash/dist/shell/parser.js.map +1 -1
- package/packages/safe-bash/dist/shell/runtime.d.ts +7 -3
- package/packages/safe-bash/dist/shell/runtime.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/runtime.js +440 -63
- package/packages/safe-bash/dist/shell/runtime.js.map +1 -1
- package/packages/safe-bash/dist/shell/select-menu.d.ts +6 -0
- package/packages/safe-bash/dist/shell/select-menu.d.ts.map +1 -0
- package/packages/safe-bash/dist/shell/select-menu.js +103 -0
- package/packages/safe-bash/dist/shell/select-menu.js.map +1 -0
- package/packages/safe-bash/dist/chunks/chunk-NYHAKXQ7.js.map +0 -7
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ShellValue, type ValueAllocation } from "../contracts/value.js";
|
|
2
|
+
import { type ByteSink } from "../contracts/index.js";
|
|
3
|
+
import { type StringWork } from "./string-operations.js";
|
|
4
|
+
/** GNU select's column-major menu, with fixed eight-column tab stops. */
|
|
5
|
+
export declare function selectMenu(values: readonly ShellValue[], columns: string | undefined, byteLocale: boolean, sink: ByteSink, work: StringWork, allocation: ValueAllocation): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=select-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-menu.d.ts","sourceRoot":"","sources":["../../src/shell/select-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE3E,yEAAyE;AACzE,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E9L"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { shellValueBytes } from "../contracts/value.js";
|
|
2
|
+
import { writeText } from "../contracts/index.js";
|
|
3
|
+
import { stringCheckpoint } from "./string-operations.js";
|
|
4
|
+
/** GNU select's column-major menu, with fixed eight-column tab stops. */
|
|
5
|
+
export async function selectMenu(values, columns, byteLocale, sink, work, allocation) {
|
|
6
|
+
allocation.reserve(64 + values.length * 32, 0);
|
|
7
|
+
const items = [];
|
|
8
|
+
let maximum = 0;
|
|
9
|
+
for (const value of values) {
|
|
10
|
+
const bytes = shellValueBytes(value, allocation);
|
|
11
|
+
allocation.reserve(bytes.length * 2 + 64, 0);
|
|
12
|
+
const decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
|
|
13
|
+
let text = "";
|
|
14
|
+
for (let offset = 0; offset < bytes.length; offset += 1024) {
|
|
15
|
+
const end = Math.min(offset + 1024, bytes.length);
|
|
16
|
+
const pending = stringCheckpoint(work, end - offset);
|
|
17
|
+
if (pending)
|
|
18
|
+
await pending;
|
|
19
|
+
if (text !== undefined)
|
|
20
|
+
try {
|
|
21
|
+
text += decoder.decode(bytes.subarray(offset, end), { stream: end < bytes.length });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (!(error instanceof TypeError) || "code" in error && error.code !== "ERR_ENCODING_INVALID_ENCODED_DATA")
|
|
25
|
+
throw error;
|
|
26
|
+
text = undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
let width = 0;
|
|
30
|
+
if (text !== undefined)
|
|
31
|
+
for (const character of text) {
|
|
32
|
+
const pending = stringCheckpoint(work);
|
|
33
|
+
if (pending)
|
|
34
|
+
await pending;
|
|
35
|
+
const point = character.codePointAt(0);
|
|
36
|
+
if (byteLocale && point >= 128) {
|
|
37
|
+
width = 0;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
if (point < 32 || point === 127) {
|
|
41
|
+
width = bytes.length;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
if (/[\p{Mn}\p{Me}\p{Cf}]/u.test(character))
|
|
45
|
+
continue;
|
|
46
|
+
width += point >= 0x1100 && (point <= 0x115f || point === 0x2329 || point === 0x232a || point >= 0x2e80 && point <= 0xa4cf && point !== 0x303f || point >= 0xac00 && point <= 0xd7a3 || point >= 0xf900 && point <= 0xfaff || point >= 0xfe10 && point <= 0xfe19 || point >= 0xfe30 && point <= 0xfe6f || point >= 0xff00 && point <= 0xff60 || point >= 0xffe0 && point <= 0xffe6 || point >= 0x1f300 && point <= 0x1faff || point >= 0x20000 && point <= 0x3fffd) ? 2 : 1;
|
|
47
|
+
}
|
|
48
|
+
maximum = Math.max(maximum, byteLocale ? bytes.length : width);
|
|
49
|
+
items.push({ bytes, width });
|
|
50
|
+
}
|
|
51
|
+
let screen = 0;
|
|
52
|
+
if (columns) {
|
|
53
|
+
let started = false;
|
|
54
|
+
for (const character of columns) {
|
|
55
|
+
const pending = stringCheckpoint(work);
|
|
56
|
+
if (pending)
|
|
57
|
+
await pending;
|
|
58
|
+
if (!started && " \t\r\n\v\f".includes(character))
|
|
59
|
+
continue;
|
|
60
|
+
if (!started && character === "+") {
|
|
61
|
+
started = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (character < "0" || character > "9")
|
|
65
|
+
break;
|
|
66
|
+
started = true;
|
|
67
|
+
screen = Math.min(0x7fffffff, screen * 10 + Number(character));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
screen ||= 80;
|
|
71
|
+
const digits = String(values.length).length;
|
|
72
|
+
const cell = maximum + digits + 4;
|
|
73
|
+
let rows = Math.ceil(values.length / Math.max(1, Math.floor(screen / cell)));
|
|
74
|
+
if (rows === 1)
|
|
75
|
+
rows = values.length;
|
|
76
|
+
for (let row = 0; row < rows; row++) {
|
|
77
|
+
let position = 0;
|
|
78
|
+
for (let index = row; index < items.length; index += rows) {
|
|
79
|
+
const pending = stringCheckpoint(work);
|
|
80
|
+
if (pending)
|
|
81
|
+
await pending;
|
|
82
|
+
const item = items[index];
|
|
83
|
+
const indexWidth = position ? digits : String(rows).length;
|
|
84
|
+
await writeText(sink, `${String(index + 1).padStart(indexWidth)}) `);
|
|
85
|
+
await sink.write(item.bytes);
|
|
86
|
+
if (index + rows < items.length) {
|
|
87
|
+
let from = position + indexWidth + 2 + item.width;
|
|
88
|
+
const to = position + cell;
|
|
89
|
+
while (from < to) {
|
|
90
|
+
const pending = stringCheckpoint(work);
|
|
91
|
+
if (pending)
|
|
92
|
+
await pending;
|
|
93
|
+
const tab = Math.floor(to / 8) > Math.floor(from / 8);
|
|
94
|
+
await writeText(sink, tab ? "\t" : " ");
|
|
95
|
+
from += tab ? 8 - from % 8 : 1;
|
|
96
|
+
}
|
|
97
|
+
position += cell;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
await writeText(sink, "\n");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=select-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-menu.js","sourceRoot":"","sources":["../../src/shell/select-menu.ts"],"names":[],"mappings":"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"}
|