@poe-platform/safe-bash 0.1.525 → 0.1.526

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.
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poe-platform/safe-bash",
3
- "version": "0.1.525",
3
+ "version": "0.1.526",
4
4
  "description": "Extensible virtual shell with pluggable filesystems and streaming commands",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -188,7 +188,7 @@
188
188
  "access": "public"
189
189
  },
190
190
  "dependencies": {
191
- "@poe-platform/safe-fs": "0.1.525",
191
+ "@poe-platform/safe-fs": "0.1.526",
192
192
  "pako": "3.0.1",
193
193
  "@noble/hashes": "2.4.0",
194
194
  "@types/node": "^25.2.2"