Add interactive mode with menu-driven resource editing
Running with no flags launches an interactive menu powered by @inquirer/prompts. Supports chaining multiple actions (max resources, set crafted, geology, time) before saving once to clipboard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
12
README.md
12
README.md
@@ -12,7 +12,17 @@ npm install
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
The tool reads save data from your **clipboard** by default (or from stdin/argument), applies edits, and copies the result back to the clipboard.
|
### Interactive mode
|
||||||
|
|
||||||
|
Run with no flags to launch an interactive menu. It reads your save from the clipboard, lets you pick actions and select individual resources, then copies the result back.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
node index.js
|
||||||
|
```
|
||||||
|
|
||||||
|
### CLI mode
|
||||||
|
|
||||||
|
Pass flags for non-interactive, scriptable usage. Reads save data from your **clipboard** by default (or from stdin/argument), applies edits, and copies the result back.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# List all resources and their current values
|
# List all resources and their current values
|
||||||
|
|||||||
205
index.js
205
index.js
@@ -162,9 +162,11 @@ function main() {
|
|||||||
|
|
||||||
const hasAction = flags.has("--max-resources") || flags.has("--max-time") || flags.has("--max-geology") || flags.has("--list") || craftedValue !== null;
|
const hasAction = flags.has("--max-resources") || flags.has("--max-time") || flags.has("--max-geology") || flags.has("--list") || craftedValue !== null;
|
||||||
|
|
||||||
if (flags.has("--help") || !hasAction) {
|
if (flags.has("--help")) {
|
||||||
console.log(`Usage: node index.js [options] [save-string]
|
console.log(`Usage: node index.js [options] [save-string]
|
||||||
|
|
||||||
|
Running with no flags launches interactive mode.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--list List all resources in the save with current values
|
--list List all resources in the save with current values
|
||||||
--max-resources Set all capped resources to their max
|
--max-resources Set all capped resources to their max
|
||||||
@@ -176,32 +178,19 @@ Options:
|
|||||||
--help Show this help
|
--help Show this help
|
||||||
|
|
||||||
Save string can be passed as argument, piped via stdin, or read from clipboard.`);
|
Save string can be passed as argument, piped via stdin, or read from clipboard.`);
|
||||||
process.exit(flags.has("--help") ? 0 : 1);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
let input;
|
if (!hasAction && process.stdin.isTTY) {
|
||||||
if (positional.length > 0) {
|
return interactiveMode();
|
||||||
input = positional[0].trim();
|
|
||||||
} else if (!process.stdin.isTTY) {
|
|
||||||
try {
|
|
||||||
input = require("fs").readFileSync("/dev/stdin", "utf-8").trim();
|
|
||||||
} catch {
|
|
||||||
// stdin not readable (e.g. piped but empty), fall through to clipboard
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!input) {
|
if (!hasAction) {
|
||||||
const clip = readFromClipboard();
|
console.error("Error: No action specified. Use --help for usage or run without flags for interactive mode.");
|
||||||
if (clip) {
|
|
||||||
console.log("Reading save data from clipboard...");
|
|
||||||
input = clip;
|
|
||||||
} else {
|
|
||||||
console.error("Error: No save data provided. Pass as argument, pipe via stdin, or copy to clipboard.");
|
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const data = decodeSave(input);
|
const { data, noCopy } = loadSave(positional, flags.has("--no-copy"));
|
||||||
|
|
||||||
if (flags.has("--list")) {
|
if (flags.has("--list")) {
|
||||||
listResources(data);
|
listResources(data);
|
||||||
@@ -245,9 +234,39 @@ Save string can be passed as argument, piped via stdin, or read from clipboard.`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outputResult(data, noCopy);
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadSave(positional, noCopy) {
|
||||||
|
let input;
|
||||||
|
if (positional.length > 0) {
|
||||||
|
input = positional[0].trim();
|
||||||
|
} else if (!process.stdin.isTTY) {
|
||||||
|
try {
|
||||||
|
input = require("fs").readFileSync("/dev/stdin", "utf-8").trim();
|
||||||
|
} catch {
|
||||||
|
// stdin not readable (e.g. piped but empty), fall through to clipboard
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!input) {
|
||||||
|
const clip = readFromClipboard();
|
||||||
|
if (clip) {
|
||||||
|
console.log("Reading save data from clipboard...");
|
||||||
|
input = clip;
|
||||||
|
} else {
|
||||||
|
console.error("Error: No save data provided. Pass as argument, pipe via stdin, or copy to clipboard.");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { data: decodeSave(input), noCopy };
|
||||||
|
}
|
||||||
|
|
||||||
|
function outputResult(data, noCopy) {
|
||||||
const result = encodeSave(data);
|
const result = encodeSave(data);
|
||||||
|
|
||||||
if (flags.has("--no-copy")) {
|
if (noCopy) {
|
||||||
console.log(result);
|
console.log(result);
|
||||||
} else if (copyToClipboard(result)) {
|
} else if (copyToClipboard(result)) {
|
||||||
console.log("Edited save copied to clipboard.");
|
console.log("Edited save copied to clipboard.");
|
||||||
@@ -257,4 +276,148 @@ Save string can be passed as argument, piped via stdin, or read from clipboard.`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getResourceChoices(data, type) {
|
||||||
|
const choices = [];
|
||||||
|
for (const [key, res] of Object.entries(data.resource || {})) {
|
||||||
|
const name = res.name || key;
|
||||||
|
const amount = res.amount ?? 0;
|
||||||
|
const max = res.max ?? 0;
|
||||||
|
|
||||||
|
if (type === "capped" && max > 0) {
|
||||||
|
const full = amount >= max;
|
||||||
|
choices.push({
|
||||||
|
value: key,
|
||||||
|
name: `${name} (${Math.floor(amount)} / ${max})${full ? " [full]" : ""}`,
|
||||||
|
checked: !full,
|
||||||
|
});
|
||||||
|
} else if (type === "crafted" && max === -1) {
|
||||||
|
choices.push({
|
||||||
|
value: key,
|
||||||
|
name: `${name} (${Math.floor(amount)})`,
|
||||||
|
checked: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return choices;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function interactiveMode() {
|
||||||
|
const { select, checkbox, confirm, input } = require("@inquirer/prompts");
|
||||||
|
|
||||||
|
const { data } = loadSave([], false);
|
||||||
|
|
||||||
|
let modified = false;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
const action = await select({
|
||||||
|
message: "What would you like to do?",
|
||||||
|
choices: [
|
||||||
|
{ value: "max-resources", name: "Max capped resources" },
|
||||||
|
{ value: "set-crafted", name: "Set crafted resources" },
|
||||||
|
{ value: "max-geology", name: "Max geology bonuses" },
|
||||||
|
{ value: "max-time", name: "Max accelerated time" },
|
||||||
|
{ value: "list", name: "List all resources" },
|
||||||
|
...(modified ? [{ value: "save", name: "Save & copy to clipboard" }] : []),
|
||||||
|
{ value: "exit", name: "Exit" },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
if (action === "exit") {
|
||||||
|
if (modified) {
|
||||||
|
const discard = await confirm({ message: "Discard unsaved changes?", default: false });
|
||||||
|
if (!discard) continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "save") {
|
||||||
|
outputResult(data, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "list") {
|
||||||
|
listResources(data);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "max-time") {
|
||||||
|
const MAX_AT = 11520;
|
||||||
|
const old = data.settings?.at ?? 0;
|
||||||
|
if (old < MAX_AT) {
|
||||||
|
data.settings.at = MAX_AT;
|
||||||
|
console.log(`Accelerated time: ${old} -> ${MAX_AT} (adjusts to 8 hours on load)`);
|
||||||
|
modified = true;
|
||||||
|
} else {
|
||||||
|
console.log(`Accelerated time already at ${old} (>= max).`);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "max-geology") {
|
||||||
|
console.log(setGeology(data));
|
||||||
|
modified = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "max-resources") {
|
||||||
|
const choices = getResourceChoices(data, "capped");
|
||||||
|
if (choices.length === 0) {
|
||||||
|
console.log("No capped resources found.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const selected = await checkbox({
|
||||||
|
message: "Select resources to max (space to toggle, enter to confirm)",
|
||||||
|
choices,
|
||||||
|
});
|
||||||
|
if (selected.length === 0) {
|
||||||
|
console.log("No resources selected.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const filter = new Set(selected.map((s) => s.toLowerCase()));
|
||||||
|
const changed = maxResources(data, filter);
|
||||||
|
if (changed.length > 0) {
|
||||||
|
console.log(`Maxed ${changed.length} resources:`);
|
||||||
|
changed.forEach((line) => console.log(line));
|
||||||
|
modified = true;
|
||||||
|
} else {
|
||||||
|
console.log("Selected resources already at max.");
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === "set-crafted") {
|
||||||
|
const choices = getResourceChoices(data, "crafted");
|
||||||
|
if (choices.length === 0) {
|
||||||
|
console.log("No crafted resources found.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const value = await input({
|
||||||
|
message: "Set crafted resources to what value?",
|
||||||
|
validate: (v) => {
|
||||||
|
const n = Number(v);
|
||||||
|
return !isNaN(n) && n >= 0 ? true : "Enter a non-negative number";
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const selected = await checkbox({
|
||||||
|
message: "Select resources to set (space to toggle, enter to confirm)",
|
||||||
|
choices,
|
||||||
|
});
|
||||||
|
if (selected.length === 0) {
|
||||||
|
console.log("No resources selected.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const filter = new Set(selected.map((s) => s.toLowerCase()));
|
||||||
|
const changed = setCraftedResources(data, Number(value), filter);
|
||||||
|
if (changed.length > 0) {
|
||||||
|
console.log(`Set ${changed.length} crafted resources to ${value}:`);
|
||||||
|
changed.forEach((line) => console.log(line));
|
||||||
|
modified = true;
|
||||||
|
} else {
|
||||||
|
console.log("Selected resources already at or above target.");
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
main();
|
main();
|
||||||
|
|||||||
411
package-lock.json
generated
411
package-lock.json
generated
@@ -9,9 +9,393 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@inquirer/prompts": "^8.3.0",
|
||||||
"lz-string": "^1.5.0"
|
"lz-string": "^1.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@inquirer/ansi": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/checkbox": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/ansi": "^2.0.3",
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/figures": "^2.0.3",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/confirm": {
|
||||||
|
"version": "6.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.8.tgz",
|
||||||
|
"integrity": "sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/core": {
|
||||||
|
"version": "11.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.5.tgz",
|
||||||
|
"integrity": "sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/ansi": "^2.0.3",
|
||||||
|
"@inquirer/figures": "^2.0.3",
|
||||||
|
"@inquirer/type": "^4.0.3",
|
||||||
|
"cli-width": "^4.1.0",
|
||||||
|
"fast-wrap-ansi": "^0.2.0",
|
||||||
|
"mute-stream": "^3.0.0",
|
||||||
|
"signal-exit": "^4.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/editor": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/external-editor": "^2.0.3",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/expand": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/external-editor": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"chardet": "^2.1.1",
|
||||||
|
"iconv-lite": "^0.7.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/figures": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/input": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/number": {
|
||||||
|
"version": "4.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.8.tgz",
|
||||||
|
"integrity": "sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/password": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/ansi": "^2.0.3",
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/prompts": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/checkbox": "^5.1.0",
|
||||||
|
"@inquirer/confirm": "^6.0.8",
|
||||||
|
"@inquirer/editor": "^5.0.8",
|
||||||
|
"@inquirer/expand": "^5.0.8",
|
||||||
|
"@inquirer/input": "^5.0.8",
|
||||||
|
"@inquirer/number": "^4.0.8",
|
||||||
|
"@inquirer/password": "^5.0.8",
|
||||||
|
"@inquirer/rawlist": "^5.2.4",
|
||||||
|
"@inquirer/search": "^4.1.4",
|
||||||
|
"@inquirer/select": "^5.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/rawlist": {
|
||||||
|
"version": "5.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.4.tgz",
|
||||||
|
"integrity": "sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/search": {
|
||||||
|
"version": "4.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.4.tgz",
|
||||||
|
"integrity": "sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/figures": "^2.0.3",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/select": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@inquirer/ansi": "^2.0.3",
|
||||||
|
"@inquirer/core": "^11.1.5",
|
||||||
|
"@inquirer/figures": "^2.0.3",
|
||||||
|
"@inquirer/type": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@inquirer/type": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/chardet": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/cli-width": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fast-string-truncated-width": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/fast-string-width": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fast-string-truncated-width": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fast-wrap-ansi": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz",
|
||||||
|
"integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fast-string-width": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/iconv-lite": {
|
||||||
|
"version": "0.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
|
||||||
|
"integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/lz-string": {
|
"node_modules/lz-string": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
|
||||||
@@ -20,6 +404,33 @@
|
|||||||
"bin": {
|
"bin": {
|
||||||
"lz-string": "bin/bin.js"
|
"lz-string": "bin/bin.js"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mute-stream": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": "^20.17.0 || >=22.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safer-buffer": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/signal-exit": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"type": "commonjs",
|
"type": "commonjs",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@inquirer/prompts": "^8.3.0",
|
||||||
"lz-string": "^1.5.0"
|
"lz-string": "^1.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user