@sundaeswap/sprinkles 0.4.0 → 0.6.0
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/cjs/Sprinkle/__tests__/encryption.test.js +22 -8
- package/dist/cjs/Sprinkle/__tests__/encryption.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/enhancements.test.js +37 -46
- package/dist/cjs/Sprinkle/__tests__/enhancements.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/field-utils.test.js +170 -0
- package/dist/cjs/Sprinkle/__tests__/field-utils.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +283 -81
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/formatting.test.js +97 -0
- package/dist/cjs/Sprinkle/__tests__/formatting.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/show-menu.test.js +97 -7
- package/dist/cjs/Sprinkle/__tests__/show-menu.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/tx-dialog.test.js +30 -0
- package/dist/cjs/Sprinkle/__tests__/tx-dialog.test.js.map +1 -1
- package/dist/cjs/Sprinkle/encryption.js +131 -0
- package/dist/cjs/Sprinkle/encryption.js.map +1 -0
- package/dist/cjs/Sprinkle/index.js +427 -438
- package/dist/cjs/Sprinkle/index.js.map +1 -1
- package/dist/cjs/Sprinkle/menus/array-menu.js +195 -0
- package/dist/cjs/Sprinkle/menus/array-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/field-menu.js +161 -0
- package/dist/cjs/Sprinkle/menus/field-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/index.js +33 -0
- package/dist/cjs/Sprinkle/menus/index.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/object-menu.js +324 -0
- package/dist/cjs/Sprinkle/menus/object-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/prompts.js +459 -0
- package/dist/cjs/Sprinkle/prompts.js.map +1 -0
- package/dist/cjs/Sprinkle/schemas.js +97 -0
- package/dist/cjs/Sprinkle/schemas.js.map +1 -0
- package/dist/cjs/Sprinkle/tx-dialog.js +101 -0
- package/dist/cjs/Sprinkle/tx-dialog.js.map +1 -0
- package/dist/cjs/Sprinkle/type-guards.js +89 -0
- package/dist/cjs/Sprinkle/type-guards.js.map +1 -0
- package/dist/cjs/Sprinkle/types.js +73 -0
- package/dist/cjs/Sprinkle/types.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/field-utils.js +154 -0
- package/dist/cjs/Sprinkle/utils/field-utils.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/formatting.js +126 -0
- package/dist/cjs/Sprinkle/utils/formatting.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/index.js +56 -0
- package/dist/cjs/Sprinkle/utils/index.js.map +1 -0
- package/dist/cjs/Sprinkle/wallet.js +98 -0
- package/dist/cjs/Sprinkle/wallet.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/encryption.test.js +22 -8
- package/dist/esm/Sprinkle/__tests__/encryption.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/enhancements.test.js +37 -46
- package/dist/esm/Sprinkle/__tests__/enhancements.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/field-utils.test.js +168 -0
- package/dist/esm/Sprinkle/__tests__/field-utils.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +284 -82
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/formatting.test.js +95 -0
- package/dist/esm/Sprinkle/__tests__/formatting.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/show-menu.test.js +98 -8
- package/dist/esm/Sprinkle/__tests__/show-menu.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/tx-dialog.test.js +30 -0
- package/dist/esm/Sprinkle/__tests__/tx-dialog.test.js.map +1 -1
- package/dist/esm/Sprinkle/encryption.js +117 -0
- package/dist/esm/Sprinkle/encryption.js.map +1 -0
- package/dist/esm/Sprinkle/index.js +248 -425
- package/dist/esm/Sprinkle/index.js.map +1 -1
- package/dist/esm/Sprinkle/menus/array-menu.js +190 -0
- package/dist/esm/Sprinkle/menus/array-menu.js.map +1 -0
- package/dist/esm/Sprinkle/menus/field-menu.js +155 -0
- package/dist/esm/Sprinkle/menus/field-menu.js.map +1 -0
- package/dist/esm/Sprinkle/menus/index.js +8 -0
- package/dist/esm/Sprinkle/menus/index.js.map +1 -0
- package/dist/esm/Sprinkle/menus/object-menu.js +318 -0
- package/dist/esm/Sprinkle/menus/object-menu.js.map +1 -0
- package/dist/esm/Sprinkle/prompts.js +443 -0
- package/dist/esm/Sprinkle/prompts.js.map +1 -0
- package/dist/esm/Sprinkle/schemas.js +91 -0
- package/dist/esm/Sprinkle/schemas.js.map +1 -0
- package/dist/esm/Sprinkle/tx-dialog.js +90 -0
- package/dist/esm/Sprinkle/tx-dialog.js.map +1 -0
- package/dist/esm/Sprinkle/type-guards.js +66 -0
- package/dist/esm/Sprinkle/type-guards.js.map +1 -0
- package/dist/esm/Sprinkle/types.js +66 -0
- package/dist/esm/Sprinkle/types.js.map +1 -0
- package/dist/esm/Sprinkle/utils/field-utils.js +145 -0
- package/dist/esm/Sprinkle/utils/field-utils.js.map +1 -0
- package/dist/esm/Sprinkle/utils/formatting.js +118 -0
- package/dist/esm/Sprinkle/utils/formatting.js.map +1 -0
- package/dist/esm/Sprinkle/utils/index.js +7 -0
- package/dist/esm/Sprinkle/utils/index.js.map +1 -0
- package/dist/esm/Sprinkle/wallet.js +90 -0
- package/dist/esm/Sprinkle/wallet.js.map +1 -0
- package/dist/types/Sprinkle/encryption.d.ts +43 -0
- package/dist/types/Sprinkle/encryption.d.ts.map +1 -0
- package/dist/types/Sprinkle/index.d.ts +17 -177
- package/dist/types/Sprinkle/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/menus/array-menu.d.ts +31 -0
- package/dist/types/Sprinkle/menus/array-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/field-menu.d.ts +34 -0
- package/dist/types/Sprinkle/menus/field-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/index.d.ts +10 -0
- package/dist/types/Sprinkle/menus/index.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/object-menu.d.ts +34 -0
- package/dist/types/Sprinkle/menus/object-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/prompts.d.ts +119 -0
- package/dist/types/Sprinkle/prompts.d.ts.map +1 -0
- package/dist/types/Sprinkle/schemas.d.ts +125 -0
- package/dist/types/Sprinkle/schemas.d.ts.map +1 -0
- package/dist/types/Sprinkle/tx-dialog.d.ts +37 -0
- package/dist/types/Sprinkle/tx-dialog.d.ts.map +1 -0
- package/dist/types/Sprinkle/type-guards.d.ts +45 -0
- package/dist/types/Sprinkle/type-guards.d.ts.map +1 -0
- package/dist/types/Sprinkle/types.d.ts +115 -0
- package/dist/types/Sprinkle/types.d.ts.map +1 -0
- package/dist/types/Sprinkle/utils/field-utils.d.ts +47 -0
- package/dist/types/Sprinkle/utils/field-utils.d.ts.map +1 -0
- package/dist/types/Sprinkle/utils/formatting.d.ts +30 -0
- package/dist/types/Sprinkle/utils/formatting.d.ts.map +1 -0
- package/dist/types/Sprinkle/wallet.d.ts +27 -0
- package/dist/types/Sprinkle/wallet.d.ts.map +1 -0
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/Sprinkle/__tests__/encryption.test.ts +23 -8
- package/src/Sprinkle/__tests__/enhancements.test.ts +34 -47
- package/src/Sprinkle/__tests__/field-utils.test.ts +191 -0
- package/src/Sprinkle/__tests__/fill-in-struct.test.ts +301 -86
- package/src/Sprinkle/__tests__/formatting.test.ts +115 -0
- package/src/Sprinkle/__tests__/show-menu.test.ts +102 -8
- package/src/Sprinkle/__tests__/tx-dialog.test.ts +30 -0
- package/src/Sprinkle/encryption.ts +130 -0
- package/src/Sprinkle/index.ts +368 -598
- package/src/Sprinkle/menus/array-menu.ts +191 -0
- package/src/Sprinkle/menus/field-menu.ts +145 -0
- package/src/Sprinkle/menus/index.ts +12 -0
- package/src/Sprinkle/menus/object-menu.ts +336 -0
- package/src/Sprinkle/prompts.ts +551 -0
- package/src/Sprinkle/schemas.ts +111 -0
- package/src/Sprinkle/tx-dialog.ts +100 -0
- package/src/Sprinkle/type-guards.ts +93 -0
- package/src/Sprinkle/types.ts +116 -0
- package/src/Sprinkle/utils/field-utils.ts +158 -0
- package/src/Sprinkle/utils/formatting.ts +127 -0
- package/src/Sprinkle/utils/index.ts +17 -0
- package/src/Sprinkle/wallet.ts +133 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.promptArray = promptArray;
|
|
7
|
+
var _core = require("@inquirer/core");
|
|
8
|
+
var _prompts = require("../prompts.js");
|
|
9
|
+
var _types = require("../types.js");
|
|
10
|
+
var _formatting = require("../utils/formatting.js");
|
|
11
|
+
var _fieldMenu = require("./field-menu.js");
|
|
12
|
+
/**
|
|
13
|
+
* Array menu module for menu-based struct editing.
|
|
14
|
+
* Shows array items and allows adding/removing/editing.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Options for the array menu prompt.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Show a menu-based editor for an array.
|
|
23
|
+
* Allows adding, removing, and editing items.
|
|
24
|
+
*
|
|
25
|
+
* @param options - Array menu options
|
|
26
|
+
* @returns The edited array or back result
|
|
27
|
+
*/
|
|
28
|
+
async function promptArray(options) {
|
|
29
|
+
const {
|
|
30
|
+
type,
|
|
31
|
+
path,
|
|
32
|
+
defs,
|
|
33
|
+
defaults = [],
|
|
34
|
+
fillField
|
|
35
|
+
} = options;
|
|
36
|
+
const itemType = type.items;
|
|
37
|
+
|
|
38
|
+
// Initialize items from defaults
|
|
39
|
+
const items = [...defaults];
|
|
40
|
+
|
|
41
|
+
// Main menu loop
|
|
42
|
+
while (true) {
|
|
43
|
+
// Build menu choices
|
|
44
|
+
const choices = [];
|
|
45
|
+
|
|
46
|
+
// Add existing items
|
|
47
|
+
for (let i = 0; i < items.length; i++) {
|
|
48
|
+
const preview = (0, _formatting.formatValuePreview)(items[i], 40);
|
|
49
|
+
choices.push({
|
|
50
|
+
name: `[${i}]: ${preview}`,
|
|
51
|
+
value: `item:${i}`
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Add separator and actions
|
|
56
|
+
choices.push(new _core.Separator("\u2500\u2500\u2500 Actions \u2500\u2500\u2500"));
|
|
57
|
+
choices.push({
|
|
58
|
+
name: "Add item",
|
|
59
|
+
value: "add"
|
|
60
|
+
});
|
|
61
|
+
if (items.length > 0) {
|
|
62
|
+
choices.push({
|
|
63
|
+
name: "Remove item...",
|
|
64
|
+
value: "remove"
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
choices.push({
|
|
68
|
+
name: `Done (${items.length} item${items.length === 1 ? "" : "s"})`,
|
|
69
|
+
value: "done"
|
|
70
|
+
});
|
|
71
|
+
choices.push({
|
|
72
|
+
name: "Back",
|
|
73
|
+
value: "back"
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Show menu
|
|
77
|
+
const breadcrumb = (0, _formatting.formatBreadcrumb)(path);
|
|
78
|
+
const message = breadcrumb ? `Edit ${breadcrumb} [${items.length} items]:` : `Edit array [${items.length} items]:`;
|
|
79
|
+
const selection = await (0, _prompts.selectWithClear)({
|
|
80
|
+
message,
|
|
81
|
+
choices
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Handle escape - same as done
|
|
85
|
+
if (selection === null) {
|
|
86
|
+
return {
|
|
87
|
+
action: "done",
|
|
88
|
+
value: items
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Handle done
|
|
93
|
+
if (selection === "done") {
|
|
94
|
+
return {
|
|
95
|
+
action: "done",
|
|
96
|
+
value: items
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Handle back
|
|
101
|
+
if (selection === "back") {
|
|
102
|
+
return {
|
|
103
|
+
action: "back"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Handle add
|
|
108
|
+
if (selection === "add") {
|
|
109
|
+
try {
|
|
110
|
+
const newItem = await fillField(itemType, [...path, `[${items.length}]`], defs, undefined);
|
|
111
|
+
items.push(newItem);
|
|
112
|
+
} catch (e) {
|
|
113
|
+
if (e instanceof _types.UserCancelledError) {
|
|
114
|
+
// Return to menu without adding
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Handle remove
|
|
123
|
+
if (selection === "remove") {
|
|
124
|
+
const removeChoices = items.map((item, i) => ({
|
|
125
|
+
name: `[${i}]: ${(0, _formatting.formatValuePreview)(item, 40)}`,
|
|
126
|
+
value: i
|
|
127
|
+
}));
|
|
128
|
+
removeChoices.push({
|
|
129
|
+
name: "Cancel",
|
|
130
|
+
value: -1
|
|
131
|
+
});
|
|
132
|
+
const indexToRemove = await (0, _prompts.selectWithClear)({
|
|
133
|
+
message: "Select item to remove:",
|
|
134
|
+
choices: removeChoices
|
|
135
|
+
});
|
|
136
|
+
if (indexToRemove !== null && indexToRemove !== -1) {
|
|
137
|
+
items.splice(indexToRemove, 1);
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Handle item selection
|
|
143
|
+
if (typeof selection === "string" && selection.startsWith("item:")) {
|
|
144
|
+
const index = parseInt(selection.slice(5), 10);
|
|
145
|
+
const currentValue = items[index];
|
|
146
|
+
|
|
147
|
+
// Create a FieldState for the item
|
|
148
|
+
const itemState = {
|
|
149
|
+
status: "set",
|
|
150
|
+
value: currentValue
|
|
151
|
+
};
|
|
152
|
+
const menuResult = await (0, _fieldMenu.promptFieldMenu)({
|
|
153
|
+
fieldName: `[${index}]`,
|
|
154
|
+
fieldType: itemType,
|
|
155
|
+
state: itemState
|
|
156
|
+
});
|
|
157
|
+
switch (menuResult.action) {
|
|
158
|
+
case "edit":
|
|
159
|
+
{
|
|
160
|
+
try {
|
|
161
|
+
const newValue = await fillField(itemType, [...path, `[${index}]`], defs, currentValue);
|
|
162
|
+
items[index] = newValue;
|
|
163
|
+
} catch (e) {
|
|
164
|
+
if (e instanceof _types.UserCancelledError) {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
throw e;
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case "view":
|
|
172
|
+
{
|
|
173
|
+
await (0, _fieldMenu.displayFullValue)(`[${index}]`, currentValue);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case "clear":
|
|
177
|
+
{
|
|
178
|
+
// Remove the item
|
|
179
|
+
items.splice(index, 1);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case "setNull":
|
|
183
|
+
{
|
|
184
|
+
items[index] = null;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case "reset":
|
|
188
|
+
case "back":
|
|
189
|
+
// Do nothing
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=array-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-menu.js","names":["_core","require","_prompts","_types","_formatting","_fieldMenu","promptArray","options","type","path","defs","defaults","fillField","itemType","items","choices","i","length","preview","formatValuePreview","push","name","value","Separator","breadcrumb","formatBreadcrumb","message","selection","selectWithClear","action","newItem","undefined","e","UserCancelledError","removeChoices","map","item","indexToRemove","splice","startsWith","index","parseInt","slice","currentValue","itemState","status","menuResult","promptFieldMenu","fieldName","fieldType","state","newValue","displayFullValue"],"sources":["../../../../src/Sprinkle/menus/array-menu.ts"],"sourcesContent":["/**\n * Array menu module for menu-based struct editing.\n * Shows array items and allows adding/removing/editing.\n */\n\nimport { Separator } from \"@inquirer/core\";\nimport type { TArray, TSchema } from \"@sinclair/typebox\";\nimport { selectWithClear } from \"../prompts.js\";\nimport type { ArrayMenuResult, FieldState } from \"../types.js\";\nimport { UserCancelledError } from \"../types.js\";\nimport { formatValuePreview, formatBreadcrumb } from \"../utils/formatting.js\";\nimport { promptFieldMenu, displayFullValue } from \"./field-menu.js\";\nimport type { FillFunction } from \"./object-menu.js\";\n\n/**\n * Options for the array menu prompt.\n */\nexport interface ArrayMenuOptions {\n /** The array schema */\n type: TArray;\n /** Current path for display */\n path: string[];\n /** Type definitions for resolving refs */\n defs: Record<string, TSchema>;\n /** Existing array values */\n defaults?: unknown[];\n /** Function to fill individual items */\n fillField: FillFunction;\n}\n\n/**\n * Show a menu-based editor for an array.\n * Allows adding, removing, and editing items.\n *\n * @param options - Array menu options\n * @returns The edited array or back result\n */\nexport async function promptArray<T>(\n options: ArrayMenuOptions,\n): Promise<ArrayMenuResult<T>> {\n const { type, path, defs, defaults = [], fillField } = options;\n\n const itemType = type.items as TSchema;\n\n // Initialize items from defaults\n const items: T[] = [...(defaults as T[])];\n\n // Main menu loop\n while (true) {\n // Build menu choices\n const choices: Array<{ name: string; value: string } | Separator> = [];\n\n // Add existing items\n for (let i = 0; i < items.length; i++) {\n const preview = formatValuePreview(items[i], 40);\n choices.push({ name: `[${i}]: ${preview}`, value: `item:${i}` });\n }\n\n // Add separator and actions\n choices.push(new Separator(\"\\u2500\\u2500\\u2500 Actions \\u2500\\u2500\\u2500\"));\n choices.push({ name: \"Add item\", value: \"add\" });\n\n if (items.length > 0) {\n choices.push({ name: \"Remove item...\", value: \"remove\" });\n }\n\n choices.push({ name: `Done (${items.length} item${items.length === 1 ? \"\" : \"s\"})`, value: \"done\" });\n choices.push({ name: \"Back\", value: \"back\" });\n\n // Show menu\n const breadcrumb = formatBreadcrumb(path);\n const message = breadcrumb\n ? `Edit ${breadcrumb} [${items.length} items]:`\n : `Edit array [${items.length} items]:`;\n\n const selection = await selectWithClear({\n message,\n choices,\n });\n\n // Handle escape - same as done\n if (selection === null) {\n return { action: \"done\", value: items };\n }\n\n // Handle done\n if (selection === \"done\") {\n return { action: \"done\", value: items };\n }\n\n // Handle back\n if (selection === \"back\") {\n return { action: \"back\" };\n }\n\n // Handle add\n if (selection === \"add\") {\n try {\n const newItem = await fillField(\n itemType,\n [...path, `[${items.length}]`],\n defs,\n undefined,\n );\n items.push(newItem as T);\n } catch (e) {\n if (e instanceof UserCancelledError) {\n // Return to menu without adding\n continue;\n }\n throw e;\n }\n continue;\n }\n\n // Handle remove\n if (selection === \"remove\") {\n const removeChoices = items.map((item, i) => ({\n name: `[${i}]: ${formatValuePreview(item, 40)}`,\n value: i,\n }));\n removeChoices.push({ name: \"Cancel\", value: -1 } as { name: string; value: number });\n\n const indexToRemove = await selectWithClear({\n message: \"Select item to remove:\",\n choices: removeChoices,\n });\n\n if (indexToRemove !== null && indexToRemove !== -1) {\n items.splice(indexToRemove as number, 1);\n }\n continue;\n }\n\n // Handle item selection\n if (typeof selection === \"string\" && selection.startsWith(\"item:\")) {\n const index = parseInt(selection.slice(5), 10);\n const currentValue = items[index];\n\n // Create a FieldState for the item\n const itemState: FieldState<T> = { status: \"set\", value: currentValue as T };\n\n const menuResult = await promptFieldMenu({\n fieldName: `[${index}]`,\n fieldType: itemType,\n state: itemState,\n });\n\n switch (menuResult.action) {\n case \"edit\": {\n try {\n const newValue = await fillField(\n itemType,\n [...path, `[${index}]`],\n defs,\n currentValue,\n );\n items[index] = newValue as T;\n } catch (e) {\n if (e instanceof UserCancelledError) {\n continue;\n }\n throw e;\n }\n break;\n }\n\n case \"view\": {\n await displayFullValue(`[${index}]`, currentValue);\n break;\n }\n\n case \"clear\": {\n // Remove the item\n items.splice(index, 1);\n break;\n }\n\n case \"setNull\": {\n items[index] = null as T;\n break;\n }\n\n case \"reset\":\n case \"back\":\n // Do nothing\n break;\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.displayFullValue = displayFullValue;
|
|
7
|
+
exports.promptFieldMenu = promptFieldMenu;
|
|
8
|
+
var _core = require("@inquirer/core");
|
|
9
|
+
var _prompts = require("../prompts.js");
|
|
10
|
+
var _typeGuards = require("../type-guards.js");
|
|
11
|
+
var _formatting = require("../utils/formatting.js");
|
|
12
|
+
var _encryption = require("../encryption.js");
|
|
13
|
+
/**
|
|
14
|
+
* Field menu module for menu-based struct editing.
|
|
15
|
+
* Handles the sub-menu shown when selecting a field with an existing value.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Options for the field menu prompt.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Show a sub-menu for a field that has a value.
|
|
24
|
+
* Provides options to edit, view, clear, set null, or reset to default.
|
|
25
|
+
*
|
|
26
|
+
* @param options - Field menu options
|
|
27
|
+
* @returns The user's chosen action
|
|
28
|
+
*/
|
|
29
|
+
async function promptFieldMenu(options) {
|
|
30
|
+
const {
|
|
31
|
+
fieldName,
|
|
32
|
+
fieldType,
|
|
33
|
+
state
|
|
34
|
+
} = options;
|
|
35
|
+
const nullable = (0, _typeGuards.isNullable)(fieldType);
|
|
36
|
+
const hasDefaultVal = (0, _typeGuards.hasDefault)(fieldType);
|
|
37
|
+
const defaultVal = hasDefaultVal ? (0, _typeGuards.getDefault)(fieldType) : undefined;
|
|
38
|
+
|
|
39
|
+
// Build the display of current value
|
|
40
|
+
const currentDisplay = state.status === "null" ? "null" : state.status === "set" ? (0, _formatting.formatValuePreview)(state.value, 40) : "[not set]";
|
|
41
|
+
const choices = [];
|
|
42
|
+
|
|
43
|
+
// Always offer edit
|
|
44
|
+
choices.push({
|
|
45
|
+
name: "Edit value",
|
|
46
|
+
value: "edit"
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// View full value (only if there's a value to view)
|
|
50
|
+
if (state.status === "set") {
|
|
51
|
+
choices.push({
|
|
52
|
+
name: "View full value",
|
|
53
|
+
value: "view"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// For nullable fields with value: offer "Set to null" and "Clear value"
|
|
58
|
+
if (nullable && state.status === "set") {
|
|
59
|
+
choices.push({
|
|
60
|
+
name: "Set to null",
|
|
61
|
+
value: "setNull"
|
|
62
|
+
});
|
|
63
|
+
choices.push({
|
|
64
|
+
name: "Clear value (remove from output)",
|
|
65
|
+
value: "clear"
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// For nullable fields that are null: offer "Clear value" to remove null
|
|
70
|
+
if (nullable && state.status === "null") {
|
|
71
|
+
choices.push({
|
|
72
|
+
name: "Clear value (remove from output)",
|
|
73
|
+
value: "clear"
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// For non-nullable fields with default: offer "Reset to default"
|
|
78
|
+
if (hasDefaultVal && !nullable && state.status === "set") {
|
|
79
|
+
const defaultPreview = (0, _formatting.formatValuePreview)(defaultVal, 20);
|
|
80
|
+
choices.push({
|
|
81
|
+
name: `Reset to default (${defaultPreview})`,
|
|
82
|
+
value: "reset"
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
choices.push(new _core.Separator());
|
|
86
|
+
choices.push({
|
|
87
|
+
name: "Back (keep current)",
|
|
88
|
+
value: "back"
|
|
89
|
+
});
|
|
90
|
+
const selection = await (0, _prompts.selectWithClear)({
|
|
91
|
+
message: `${fieldName}: ${currentDisplay}`,
|
|
92
|
+
choices
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// Escape returns to menu
|
|
96
|
+
if (selection === null) {
|
|
97
|
+
return {
|
|
98
|
+
action: "back"
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
switch (selection) {
|
|
102
|
+
case "edit":
|
|
103
|
+
// Caller will handle the actual editing
|
|
104
|
+
return {
|
|
105
|
+
action: "edit"
|
|
106
|
+
};
|
|
107
|
+
case "view":
|
|
108
|
+
return {
|
|
109
|
+
action: "view"
|
|
110
|
+
};
|
|
111
|
+
case "clear":
|
|
112
|
+
return {
|
|
113
|
+
action: "clear"
|
|
114
|
+
};
|
|
115
|
+
case "setNull":
|
|
116
|
+
return {
|
|
117
|
+
action: "setNull"
|
|
118
|
+
};
|
|
119
|
+
case "reset":
|
|
120
|
+
return {
|
|
121
|
+
action: "reset",
|
|
122
|
+
defaultValue: defaultVal
|
|
123
|
+
};
|
|
124
|
+
case "back":
|
|
125
|
+
default:
|
|
126
|
+
return {
|
|
127
|
+
action: "back"
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Display the full value of a field.
|
|
134
|
+
* Shows formatted JSON and waits for user to press Enter.
|
|
135
|
+
*
|
|
136
|
+
* @param fieldName - The field name
|
|
137
|
+
* @param value - The value to display
|
|
138
|
+
*/
|
|
139
|
+
async function displayFullValue(fieldName, value) {
|
|
140
|
+
const header = `Current value of ${fieldName}:`;
|
|
141
|
+
const jsonStr = JSON.stringify(value, _encryption.bigIntReplacer, 2);
|
|
142
|
+
const jsonLines = jsonStr.split("\n").length;
|
|
143
|
+
console.log("");
|
|
144
|
+
console.log(header);
|
|
145
|
+
console.log(jsonStr);
|
|
146
|
+
console.log("");
|
|
147
|
+
|
|
148
|
+
// Wait for user to press Enter
|
|
149
|
+
await (0, _prompts.selectWithClear)({
|
|
150
|
+
message: "Press Enter to continue...",
|
|
151
|
+
choices: [{
|
|
152
|
+
name: "Continue",
|
|
153
|
+
value: "continue"
|
|
154
|
+
}]
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Clear all the output lines: empty line + header + json lines + empty line
|
|
158
|
+
const totalLines = 1 + 1 + jsonLines + 1;
|
|
159
|
+
process.stdout.write("\x1b[1A\x1b[2K".repeat(totalLines) + "\x1b[G");
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=field-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-menu.js","names":["_core","require","_prompts","_typeGuards","_formatting","_encryption","promptFieldMenu","options","fieldName","fieldType","state","nullable","isNullable","hasDefaultVal","hasDefault","defaultVal","getDefault","undefined","currentDisplay","status","formatValuePreview","value","choices","push","name","defaultPreview","Separator","selection","selectWithClear","message","action","defaultValue","displayFullValue","header","jsonStr","JSON","stringify","bigIntReplacer","jsonLines","split","length","console","log","totalLines","process","stdout","write","repeat"],"sources":["../../../../src/Sprinkle/menus/field-menu.ts"],"sourcesContent":["/**\n * Field menu module for menu-based struct editing.\n * Handles the sub-menu shown when selecting a field with an existing value.\n */\n\nimport { Separator } from \"@inquirer/core\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport { selectWithClear } from \"../prompts.js\";\nimport type { FieldMenuResult, FieldState } from \"../types.js\";\nimport { isNullable, hasDefault, getDefault } from \"../type-guards.js\";\nimport { formatValuePreview } from \"../utils/formatting.js\";\nimport { bigIntReplacer } from \"../encryption.js\";\n\n/**\n * Options for the field menu prompt.\n */\nexport interface FieldMenuOptions<T> {\n /** The field name */\n fieldName: string;\n /** The field's schema */\n fieldType: TSchema;\n /** Current state of the field */\n state: FieldState<T>;\n}\n\n/**\n * Show a sub-menu for a field that has a value.\n * Provides options to edit, view, clear, set null, or reset to default.\n *\n * @param options - Field menu options\n * @returns The user's chosen action\n */\nexport async function promptFieldMenu<T>(\n options: FieldMenuOptions<T>,\n): Promise<FieldMenuResult<T>> {\n const { fieldName, fieldType, state } = options;\n\n const nullable = isNullable(fieldType);\n const hasDefaultVal = hasDefault(fieldType);\n const defaultVal = hasDefaultVal ? getDefault(fieldType) : undefined;\n\n // Build the display of current value\n const currentDisplay =\n state.status === \"null\"\n ? \"null\"\n : state.status === \"set\"\n ? formatValuePreview(state.value, 40)\n : \"[not set]\";\n\n const choices: Array<{ name: string; value: string } | Separator> = [];\n\n // Always offer edit\n choices.push({ name: \"Edit value\", value: \"edit\" });\n\n // View full value (only if there's a value to view)\n if (state.status === \"set\") {\n choices.push({ name: \"View full value\", value: \"view\" });\n }\n\n // For nullable fields with value: offer \"Set to null\" and \"Clear value\"\n if (nullable && state.status === \"set\") {\n choices.push({ name: \"Set to null\", value: \"setNull\" });\n choices.push({ name: \"Clear value (remove from output)\", value: \"clear\" });\n }\n\n // For nullable fields that are null: offer \"Clear value\" to remove null\n if (nullable && state.status === \"null\") {\n choices.push({ name: \"Clear value (remove from output)\", value: \"clear\" });\n }\n\n // For non-nullable fields with default: offer \"Reset to default\"\n if (hasDefaultVal && !nullable && state.status === \"set\") {\n const defaultPreview = formatValuePreview(defaultVal, 20);\n choices.push({\n name: `Reset to default (${defaultPreview})`,\n value: \"reset\",\n });\n }\n\n choices.push(new Separator());\n choices.push({ name: \"Back (keep current)\", value: \"back\" });\n\n const selection = await selectWithClear({\n message: `${fieldName}: ${currentDisplay}`,\n choices,\n });\n\n // Escape returns to menu\n if (selection === null) {\n return { action: \"back\" };\n }\n\n switch (selection) {\n case \"edit\":\n // Caller will handle the actual editing\n return { action: \"edit\" };\n\n case \"view\":\n return { action: \"view\" };\n\n case \"clear\":\n return { action: \"clear\" };\n\n case \"setNull\":\n return { action: \"setNull\" };\n\n case \"reset\":\n return { action: \"reset\", defaultValue: defaultVal as T };\n\n case \"back\":\n default:\n return { action: \"back\" };\n }\n}\n\n/**\n * Display the full value of a field.\n * Shows formatted JSON and waits for user to press Enter.\n *\n * @param fieldName - The field name\n * @param value - The value to display\n */\nexport async function displayFullValue(\n fieldName: string,\n value: unknown,\n): Promise<void> {\n const header = `Current value of ${fieldName}:`;\n const jsonStr = JSON.stringify(value, bigIntReplacer, 2);\n const jsonLines = jsonStr.split(\"\\n\").length;\n\n console.log(\"\");\n console.log(header);\n console.log(jsonStr);\n console.log(\"\");\n\n // Wait for user to press Enter\n await selectWithClear({\n message: \"Press Enter to continue...\",\n choices: [{ name: \"Continue\", value: \"continue\" }],\n });\n\n // Clear all the output lines: empty line + header + json lines + empty line\n const totalLines = 1 + 1 + jsonLines + 1;\n process.stdout.write(\"\\x1b[1A\\x1b[2K\".repeat(totalLines) + \"\\x1b[G\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "displayFullValue", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _fieldMenu.displayFullValue;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "promptArray", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _arrayMenu.promptArray;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "promptFieldMenu", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _fieldMenu.promptFieldMenu;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "promptObject", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _objectMenu.promptObject;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var _fieldMenu = require("./field-menu.js");
|
|
31
|
+
var _objectMenu = require("./object-menu.js");
|
|
32
|
+
var _arrayMenu = require("./array-menu.js");
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_fieldMenu","require","_objectMenu","_arrayMenu"],"sources":["../../../../src/Sprinkle/menus/index.ts"],"sourcesContent":["/**\n * Menu modules for menu-based struct editing.\n */\n\nexport { promptFieldMenu, displayFullValue } from \"./field-menu.js\";\nexport type { FieldMenuOptions } from \"./field-menu.js\";\n\nexport { promptObject } from \"./object-menu.js\";\nexport type { ObjectMenuOptions, FillFunction } from \"./object-menu.js\";\n\nexport { promptArray } from \"./array-menu.js\";\nexport type { ArrayMenuOptions } from \"./array-menu.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAGA,IAAAC,WAAA,GAAAD,OAAA;AAGA,IAAAE,UAAA,GAAAF,OAAA","ignoreList":[]}
|