1 Commits

Author SHA1 Message Date
Renovate Bot 96f5611022 Update dependency @inquirer/prompts to v8.4.0 2026-04-06 20:01:11 +00:00
4 changed files with 95 additions and 375 deletions
+1 -8
View File
@@ -23,14 +23,7 @@ node index.js --max-resources --no-copy < save.txt
Saves are LZString `compressToBase64` of a JSON object (not plain base64). Uses the `lz-string` npm package to match the game's own JS implementation. Saves are LZString `compressToBase64` of a JSON object (not plain base64). Uses the `lz-string` npm package to match the game's own JS implementation.
Key top-level sections: `resource`, `race`, `tech`, `city`, `space`, `civic`, `genes`, `prestige`, `settings`, `arpa`, `pillars`. Key top-level sections: `resource`, `race`, `tech`, `city`, `space`, `civic`, `genes`, `prestige`, `settings`, `arpa`.
### Pillars (`pillars`)
Flat map of `<species key>: <rank>` — only species with a pillar appear. Rank is the ascension `alevel()` (15, +1 per challenge gene active on that run), *not* the universe. 63 species total (all races except `protoplasm`); the race table lives in `RACES` in `index.js`, mirrored from the game's `src/races.js`. Pillar bonus: +1% production / +2% storage per pillar, with the currently-played species counting 4×.
### Prestige structure (`prestige.<name>`)
- `count`: current value
- Prestige currencies: `Plasmid`, `AntiPlasmid`, `Phage`, `Dark`, `Harmony`, `AICore`, `Artifact`, `Blood_Stone`, `Supercoiled`
### Resource structure (`resource.<name>`) ### Resource structure (`resource.<name>`)
- `amount`: current value - `amount`: current value
+2 -17
View File
@@ -28,26 +28,14 @@ Pass flags for non-interactive, scriptable usage. Reads save data from your **cl
# List all resources and their current values # List all resources and their current values
node index.js --list node index.js --list
# Show which species already have a pillar in the Circle of Pillars
node index.js --pillars
# Same, but also list the species still missing a pillar
node index.js --pillars-all
# Max all capped resources # Max all capped resources
node index.js --max-resources node index.js --max-resources
# Set a specific resource or prestige currency to a value
node index.js --set=Plasmid=5000
# Set multiple at once
node index.js --set=Plasmid=5000 --set=Phage=3000
# Set all crafted (unlimited) resources to 100,000 # Set all crafted (unlimited) resources to 100,000
node index.js --set-crafted=100000 node index.js --set-crafted=100000
# Combine multiple actions # Combine both
node index.js --max-resources --set-crafted=100000 --set=Plasmid=5000 node index.js --max-resources --set-crafted=100000
# Max only specific resources # Max only specific resources
node index.js --max-resources --only=food,stone,iron node index.js --max-resources --only=food,stone,iron
@@ -67,10 +55,7 @@ node index.js --max-resources --no-copy
| Flag | Description | | Flag | Description |
|------|-------------| |------|-------------|
| `--list` | List all resources in the save, grouped by type (capped, crafted, special, locked) | | `--list` | List all resources in the save, grouped by type (capped, crafted, special, locked) |
| `--pillars` | Show Circle of Pillars progress: pillared species grouped by genus, with their rank |
| `--pillars-all` | Same as `--pillars`, but also lists species that have no pillar yet |
| `--max-resources` | Set all capped resources (`max > 0`) to their max | | `--max-resources` | Set all capped resources (`max > 0`) to their max |
| `--set=key=N` | Set a specific resource or prestige currency to N (e.g. `--set=Plasmid=100`). Case-insensitive. Can be used multiple times. |
| `--set-crafted=N` | Set all unlimited/crafted resources (`max == -1`) to N | | `--set-crafted=N` | Set all unlimited/crafted resources (`max == -1`) to N |
| `--only=a,b,c` | Only affect listed resources (comma-separated, case-insensitive). Matches resource names (e.g. `Food`) or internal keys (e.g. `food`). Applies to `--max-resources` and `--set-crafted`. | | `--only=a,b,c` | Only affect listed resources (comma-separated, case-insensitive). Matches resource names (e.g. `Food`) or internal keys (e.g. `food`). Applies to `--max-resources` and `--set-crafted`. |
| `--max-soldiers` | Fill garrison to max capacity and heal all wounded soldiers | | `--max-soldiers` | Fill garrison to max capacity and heal all wounded soldiers |
+4 -262
View File
@@ -142,151 +142,6 @@ function setGeology(data) {
return `Set 4 geology bonuses (max +${(maxBonus * 100).toFixed(0)}% from White Hole level ${whLevel}):\n${entries}`; return `Set 4 geology bonuses (max +${(maxBonus * 100).toFixed(0)}% from White Hole level ${whLevel}):\n${entries}`;
} }
// All pillar-able species (every race except protoplasm), in game order.
// Pillar count target for the Circle of Pillars is RACES.size (63).
const RACES = {
human: { name: "Human", genus: "humanoid" },
elven: { name: "Elf", genus: "humanoid" },
orc: { name: "Orc", genus: "humanoid" },
cath: { name: "Cath", genus: "carnivore" },
wolven: { name: "Wolven", genus: "carnivore" },
vulpine: { name: "Vulpine", genus: "carnivore" },
centaur: { name: "Centaur", genus: "herbivore" },
rhinotaur: { name: "Rhinotaur", genus: "herbivore" },
capybara: { name: "Capybara", genus: "herbivore" },
porkenari: { name: "Porkenari", genus: "omnivore" },
hedgeoken: { name: "Hedgeoken", genus: "omnivore" },
kobold: { name: "Kobold", genus: "small" },
goblin: { name: "Goblin", genus: "small" },
gnome: { name: "Gnome", genus: "small" },
ogre: { name: "Ogre", genus: "giant" },
cyclops: { name: "Cyclops", genus: "giant" },
troll: { name: "Troll", genus: "giant" },
tortoisan: { name: "Tortoisan", genus: "reptilian" },
gecko: { name: "Gecko", genus: "reptilian" },
slitheryn: { name: "Slitheryn", genus: "reptilian" },
arraak: { name: "Arraak", genus: "avian" },
pterodacti: { name: "Pterodacti", genus: "avian" },
dracnid: { name: "Dracnid", genus: "avian" },
entish: { name: "Ent", genus: "plant" },
cacti: { name: "Cacti", genus: "plant" },
pinguicula: { name: "Pinguicula", genus: "plant" },
sporgar: { name: "Sporgar", genus: "fungi" },
shroomi: { name: "Shroomi", genus: "fungi" },
moldling: { name: "Moldling", genus: "fungi" },
mantis: { name: "Mantis", genus: "insectoid" },
scorpid: { name: "Scorpid", genus: "insectoid" },
antid: { name: "Antid", genus: "insectoid" },
sharkin: { name: "Sharkin", genus: "aquatic" },
octigoran: { name: "Octigoran", genus: "aquatic" },
dryad: { name: "Dryad", genus: "fey" },
satyr: { name: "Satyr", genus: "fey" },
phoenix: { name: "Phoenix", genus: "heat" },
salamander: { name: "Salamander", genus: "heat" },
yeti: { name: "Yeti", genus: "polar" },
wendigo: { name: "Wendigo", genus: "polar" },
tuskin: { name: "Tuskin", genus: "sand" },
kamel: { name: "Kamel", genus: "sand" },
balorg: { name: "Balorg", genus: "demonic" },
imp: { name: "Imp", genus: "demonic" },
hellspawn: { name: "Hellspawn", genus: "demonic" },
seraph: { name: "Seraph", genus: "angelic" },
unicorn: { name: "Unicorn", genus: "angelic" },
synth: { name: "Synth", genus: "synthetic" },
nano: { name: "Nano", genus: "synthetic" },
ghast: { name: "Ghast", genus: "eldritch" },
shoggoth: { name: "Shoggoth", genus: "eldritch" },
dwarf: { name: "Dwarf", genus: "hybrid" },
raccoon: { name: "Racconar", genus: "hybrid" },
lichen: { name: "Lichen", genus: "hybrid" },
wyvern: { name: "Wyvern", genus: "hybrid" },
beholder: { name: "Eye-Spector", genus: "hybrid" },
djinn: { name: "Djinn", genus: "hybrid" },
narwhal: { name: "Narwhalus", genus: "hybrid" },
bombardier: { name: "Bombardier", genus: "hybrid" },
nephilim: { name: "Nephilim", genus: "hybrid" },
junker: { name: "Valdi", genus: "special" },
sludge: { name: "Sludge", genus: "special" },
ultra_sludge: { name: "Ultra Sludge", genus: "special" },
};
const GENUS_NAMES = {
humanoid: "Humanoid",
carnivore: "Carnivore",
herbivore: "Herbivore",
omnivore: "Omnivore",
small: "Small",
giant: "Giant",
reptilian: "Reptilian",
avian: "Avian",
plant: "Plant",
fungi: "Fungi",
insectoid: "Insectoid",
aquatic: "Aquatic",
fey: "Fey",
heat: "Heat",
polar: "Polar",
sand: "Sand",
demonic: "Demonic",
angelic: "Angelic",
synthetic: "Synthetic",
eldritch: "Eldritch",
hybrid: "Hybrid",
special: "Special",
};
function listPillars(data, showAll) {
const pillars = data.pillars || {};
const current = data.race?.species;
const total = Object.keys(RACES).length;
const owned = Object.keys(pillars).filter((k) => pillars[k]);
if (owned.length === 0 && !showAll) {
console.log("No pillars in this save (Circle of Pillars not started).");
return;
}
// Group races by genus, keeping game order within each genus
const byGenus = {};
for (const [key, race] of Object.entries(RACES)) {
(byGenus[race.genus] ||= []).push(key);
}
console.log(`Circle of Pillars: ${owned.length} / ${total} species pillared\n`);
for (const [genus, keys] of Object.entries(byGenus)) {
const done = keys.filter((k) => pillars[k]);
if (done.length === 0 && !showAll) continue;
const label = GENUS_NAMES[genus] || genus;
console.log(`${label} (${done.length}/${keys.length}):`);
for (const key of keys) {
const rank = pillars[key];
const name = RACES[key].name;
const marker = key === current ? " <- current species" : "";
if (rank) {
console.log(` [x] ${name} (${key}) - rank ${rank}${marker}`);
} else if (showAll) {
console.log(` [ ] ${name} (${key})${marker}`);
}
}
}
// Unknown keys (custom races or races added after this list was built)
const unknown = owned.filter((k) => !RACES[k]);
if (unknown.length > 0) {
console.log(`Unrecognized (custom?) species:`);
unknown.forEach((k) => console.log(` [x] ${k} - rank ${pillars[k]}`));
}
// Pillar bonus: +1% production / +2% storage per pillar, current species counts 4x
const active = owned.reduce((sum, k) => sum + (k === current ? 4 : 1), 0);
console.log(`\nPillar bonus: +${active}% production, +${active * 2}% storage`);
if (!showAll) {
console.log(`${total - owned.length} species still missing (use --pillars-all to list them).`);
}
}
function readFromClipboard() { function readFromClipboard() {
try { try {
return execSync("pbpaste", { encoding: "utf-8" }).trim(); return execSync("pbpaste", { encoding: "utf-8" }).trim();
@@ -313,55 +168,16 @@ function copyToClipboard(text) {
} }
} }
function setPrestige(data, key, value) {
for (const [k, entry] of Object.entries(data.prestige || {})) {
if (k.toLowerCase() === key.toLowerCase()) {
const old = entry.count ?? 0;
entry.count = value;
return ` ${k}: ${old} -> ${value}`;
}
}
return null;
}
function setResource(data, key, value) {
// Check prestige currencies first
const prestigeResult = setPrestige(data, key, value);
if (prestigeResult) return prestigeResult;
const res = (data.resource || {})[key];
if (!res) {
for (const [k, r] of Object.entries(data.resource || {})) {
if (k.toLowerCase() === key.toLowerCase() || (r.name || "").toLowerCase() === key.toLowerCase()) {
const old = r.amount ?? 0;
r.amount = value;
return ` ${r.name || k}: ${Math.floor(old)} -> ${value}`;
}
}
return null;
}
const old = res.amount ?? 0;
res.amount = value;
return ` ${res.name || key}: ${Math.floor(old)} -> ${value}`;
}
function main() { function main() {
const args = process.argv.slice(2); const args = process.argv.slice(2);
const flags = new Set(); const flags = new Set();
const positional = []; const positional = [];
let craftedValue = null; let craftedValue = null;
let onlyFilter = null; let onlyFilter = null;
const setValues = []; // [{key, value}]
for (const arg of args) { for (const arg of args) {
if (arg.startsWith("--set-crafted=")) { if (arg.startsWith("--set-crafted=")) {
craftedValue = Number(arg.split("=")[1]); craftedValue = Number(arg.split("=")[1]);
} else if (arg.startsWith("--set=")) {
const parts = arg.slice("--set=".length);
const eqIdx = parts.lastIndexOf("=");
if (eqIdx > 0) {
setValues.push({ key: parts.slice(0, eqIdx), value: Number(parts.slice(eqIdx + 1)) });
}
} else if (arg.startsWith("--only=")) { } else if (arg.startsWith("--only=")) {
onlyFilter = new Set(arg.slice("--only=".length).split(",").map(s => s.trim().toLowerCase())); onlyFilter = new Set(arg.slice("--only=".length).split(",").map(s => s.trim().toLowerCase()));
} else if (arg.startsWith("--")) { } else if (arg.startsWith("--")) {
@@ -371,9 +187,7 @@ function main() {
} }
} }
const mutates = flags.has("--max-resources") || flags.has("--max-time") || flags.has("--max-geology") || flags.has("--max-soldiers") || craftedValue !== null || setValues.length > 0; const hasAction = flags.has("--max-resources") || flags.has("--max-time") || flags.has("--max-geology") || flags.has("--max-soldiers") || flags.has("--list") || craftedValue !== null;
const inspects = flags.has("--list") || flags.has("--pillars") || flags.has("--pillars-all");
const hasAction = mutates || inspects;
if (flags.has("--help")) { if (flags.has("--help")) {
console.log(`Usage: node index.js [options] [save-string] console.log(`Usage: node index.js [options] [save-string]
@@ -382,10 +196,7 @@ 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
--pillars Show which species have a pillar in the Circle of Pillars
--pillars-all Same, but also list species without a pillar
--max-resources Set all capped resources to their max --max-resources Set all capped resources to their max
--set=key=N Set a specific resource to N (e.g. --set=Plasmid=100)
--set-crafted=N Set all unlimited (crafted) resources to N --set-crafted=N Set all unlimited (crafted) resources to N
--only=a,b,c Only affect listed resources (comma-separated names or keys) --only=a,b,c Only affect listed resources (comma-separated names or keys)
--max-soldiers Fill garrison to max and heal all wounded --max-soldiers Fill garrison to max and heal all wounded
@@ -411,14 +222,9 @@ Save string can be passed as argument, piped via stdin, or read from clipboard.`
if (flags.has("--list")) { if (flags.has("--list")) {
listResources(data); listResources(data);
} if (!flags.has("--max-resources") && !flags.has("--max-soldiers") && !flags.has("--max-geology") && !flags.has("--max-time") && craftedValue === null) {
process.exit(0);
if (flags.has("--pillars") || flags.has("--pillars-all")) { }
listPillars(data, flags.has("--pillars-all"));
}
if (inspects && !mutates) {
process.exit(0);
} }
if (flags.has("--max-resources")) { if (flags.has("--max-resources")) {
@@ -450,21 +256,6 @@ Save string can be passed as argument, piped via stdin, or read from clipboard.`
} }
} }
if (setValues.length > 0) {
for (const { key, value } of setValues) {
if (isNaN(value)) {
console.error(`Invalid value for ${key}. Must be a number.`);
continue;
}
const result = setResource(data, key, value);
if (result) {
console.log(`Set resource:\n${result}`);
} else {
console.error(`Resource "${key}" not found in save.`);
}
}
}
if (craftedValue !== null) { if (craftedValue !== null) {
const changed = setCraftedResources(data, craftedValue, onlyFilter); const changed = setCraftedResources(data, craftedValue, onlyFilter);
if (changed.length > 0) { if (changed.length > 0) {
@@ -554,13 +345,11 @@ async function interactiveMode() {
message: "What would you like to do?", message: "What would you like to do?",
choices: [ choices: [
{ value: "max-resources", name: "Max capped resources" }, { value: "max-resources", name: "Max capped resources" },
{ value: "set-resource", name: "Set a specific resource" },
{ value: "set-crafted", name: "Set crafted resources" }, { value: "set-crafted", name: "Set crafted resources" },
{ value: "max-soldiers", name: "Max soldiers & heal wounded" }, { value: "max-soldiers", name: "Max soldiers & heal wounded" },
{ value: "max-geology", name: "Max geology bonuses" }, { value: "max-geology", name: "Max geology bonuses" },
{ value: "max-time", name: "Max accelerated time" }, { value: "max-time", name: "Max accelerated time" },
{ value: "list", name: "List all resources" }, { value: "list", name: "List all resources" },
{ value: "pillars", name: "Show Circle of Pillars progress" },
...(modified ? [{ value: "save", name: "Save & copy to clipboard" }] : []), ...(modified ? [{ value: "save", name: "Save & copy to clipboard" }] : []),
{ value: "exit", name: "Exit" }, { value: "exit", name: "Exit" },
], ],
@@ -584,12 +373,6 @@ async function interactiveMode() {
continue; continue;
} }
if (action === "pillars") {
const showAll = await confirm({ message: "Also show species without a pillar?", default: false });
listPillars(data, showAll);
continue;
}
if (action === "max-time") { if (action === "max-time") {
const MAX_AT = 11520; const MAX_AT = 11520;
const old = data.settings?.at ?? 0; const old = data.settings?.at ?? 0;
@@ -644,47 +427,6 @@ async function interactiveMode() {
continue; continue;
} }
if (action === "set-resource") {
const prestige = Object.entries(data.prestige || {})
.filter(([, p]) => (p.count ?? 0) > 0)
.map(([key, p]) => ({
value: `prestige:${key}`,
name: `${key} (${p.count}) [prestige]`,
}));
const resources = Object.entries(data.resource || {})
.filter(([, r]) => (r.amount ?? 0) > 0 || (r.max ?? 0) !== 0)
.map(([key, r]) => ({
value: `resource:${key}`,
name: `${r.name || key} (${Math.floor(r.amount ?? 0)}${r.max > 0 ? ` / ${r.max}` : ""})`,
}));
const choices = [...prestige, ...resources];
if (choices.length === 0) {
console.log("No resources found.");
continue;
}
const selected = await select({
message: "Which resource?",
choices,
});
const [type, resKey] = selected.split(":");
const label = type === "prestige" ? resKey : (data.resource[resKey].name || resKey);
const value = await input({
message: `Set ${label} to what value?`,
validate: (v) => {
const n = Number(v);
return !isNaN(n) && n >= 0 ? true : "Enter a non-negative number";
},
});
const result = type === "prestige"
? setPrestige(data, resKey, Number(value))
: setResource(data, resKey, Number(value));
if (result) {
console.log(`Set resource:\n${result}`);
modified = true;
}
continue;
}
if (action === "set-crafted") { if (action === "set-crafted") {
const choices = getResourceChoices(data, "crafted"); const choices = getResourceChoices(data, "crafted");
if (choices.length === 0) { if (choices.length === 0) {
+88 -88
View File
@@ -14,24 +14,24 @@
} }
}, },
"node_modules/@inquirer/ansi": { "node_modules/@inquirer/ansi": {
"version": "2.0.3", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz",
"integrity": "sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==", "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
} }
}, },
"node_modules/@inquirer/checkbox": { "node_modules/@inquirer/checkbox": {
"version": "5.1.0", "version": "5.1.3",
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.0.tgz", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.3.tgz",
"integrity": "sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==", "integrity": "sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^2.0.3", "@inquirer/ansi": "^2.0.5",
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/figures": "^2.0.3", "@inquirer/figures": "^2.0.5",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -46,13 +46,13 @@
} }
}, },
"node_modules/@inquirer/confirm": { "node_modules/@inquirer/confirm": {
"version": "6.0.8", "version": "6.0.11",
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.11.tgz",
"integrity": "sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==", "integrity": "sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -67,14 +67,14 @@
} }
}, },
"node_modules/@inquirer/core": { "node_modules/@inquirer/core": {
"version": "11.1.5", "version": "11.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.5.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.8.tgz",
"integrity": "sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==", "integrity": "sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^2.0.3", "@inquirer/ansi": "^2.0.5",
"@inquirer/figures": "^2.0.3", "@inquirer/figures": "^2.0.5",
"@inquirer/type": "^4.0.3", "@inquirer/type": "^4.0.5",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"fast-wrap-ansi": "^0.2.0", "fast-wrap-ansi": "^0.2.0",
"mute-stream": "^3.0.0", "mute-stream": "^3.0.0",
@@ -93,14 +93,14 @@
} }
}, },
"node_modules/@inquirer/editor": { "node_modules/@inquirer/editor": {
"version": "5.0.8", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.0.tgz",
"integrity": "sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==", "integrity": "sha512-6wlkYl65Qfayy48gPCfU4D7li6KCAGN79mLXa/tYHZH99OfZ820yY+HA+DgE88r8YwwgeuY6PQgNqMeK6LuMmw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/external-editor": "^2.0.3", "@inquirer/external-editor": "^3.0.0",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -115,13 +115,13 @@
} }
}, },
"node_modules/@inquirer/expand": { "node_modules/@inquirer/expand": {
"version": "5.0.8", "version": "5.0.11",
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.11.tgz",
"integrity": "sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==", "integrity": "sha512-yxSO89MQ7t4LTCwtsXQ/ppcfw2otLsum6nF+TM9pKesy3k2AhVDUIkaiJIwG6lzm/csc5n38MaFKLY0TrSHzEA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -136,9 +136,9 @@
} }
}, },
"node_modules/@inquirer/external-editor": { "node_modules/@inquirer/external-editor": {
"version": "2.0.3", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz",
"integrity": "sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==", "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chardet": "^2.1.1", "chardet": "^2.1.1",
@@ -157,22 +157,22 @@
} }
}, },
"node_modules/@inquirer/figures": { "node_modules/@inquirer/figures": {
"version": "2.0.3", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz",
"integrity": "sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==", "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
} }
}, },
"node_modules/@inquirer/input": { "node_modules/@inquirer/input": {
"version": "5.0.8", "version": "5.0.11",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.11.tgz",
"integrity": "sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==", "integrity": "sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -187,13 +187,13 @@
} }
}, },
"node_modules/@inquirer/number": { "node_modules/@inquirer/number": {
"version": "4.0.8", "version": "4.0.11",
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.11.tgz",
"integrity": "sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==", "integrity": "sha512-Vscmim9TCksQsfjPtka/JwPUcbLhqWYrgfPf1cHrCm24X/F2joFwnageD50yMKsaX14oNGOyKf/RNXAFkNjWpA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -208,14 +208,14 @@
} }
}, },
"node_modules/@inquirer/password": { "node_modules/@inquirer/password": {
"version": "5.0.8", "version": "5.0.11",
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.8.tgz", "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.11.tgz",
"integrity": "sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==", "integrity": "sha512-9KZFeRaNHIcejtPb0wN4ddFc7EvobVoAFa049eS3LrDZFxI8O7xUXiITEOinBzkZFAIwY5V4yzQae/QfO9cbbg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^2.0.3", "@inquirer/ansi": "^2.0.5",
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -230,21 +230,21 @@
} }
}, },
"node_modules/@inquirer/prompts": { "node_modules/@inquirer/prompts": {
"version": "8.3.0", "version": "8.4.0",
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.3.0.tgz", "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.0.tgz",
"integrity": "sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==", "integrity": "sha512-Z3pFkae4WSzK95tvbaxR3rD9JlScFIh6/Ufw60H8Ck7GugdzYCe/3FwZCfvXwHZXjyk671w8FnVuwvxx1eP7ug==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/checkbox": "^5.1.0", "@inquirer/checkbox": "^5.1.3",
"@inquirer/confirm": "^6.0.8", "@inquirer/confirm": "^6.0.11",
"@inquirer/editor": "^5.0.8", "@inquirer/editor": "^5.1.0",
"@inquirer/expand": "^5.0.8", "@inquirer/expand": "^5.0.11",
"@inquirer/input": "^5.0.8", "@inquirer/input": "^5.0.11",
"@inquirer/number": "^4.0.8", "@inquirer/number": "^4.0.11",
"@inquirer/password": "^5.0.8", "@inquirer/password": "^5.0.11",
"@inquirer/rawlist": "^5.2.4", "@inquirer/rawlist": "^5.2.7",
"@inquirer/search": "^4.1.4", "@inquirer/search": "^4.1.7",
"@inquirer/select": "^5.1.0" "@inquirer/select": "^5.1.3"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -259,13 +259,13 @@
} }
}, },
"node_modules/@inquirer/rawlist": { "node_modules/@inquirer/rawlist": {
"version": "5.2.4", "version": "5.2.7",
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.4.tgz", "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.7.tgz",
"integrity": "sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==", "integrity": "sha512-AqRMiD9+uE1lskDPrdqHwrV/EUmxKEBLX44SR7uxK3vD2413AmVfE5EQaPeNzYf5Pq5SitHJDYUFVF0poIr09w==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -280,14 +280,14 @@
} }
}, },
"node_modules/@inquirer/search": { "node_modules/@inquirer/search": {
"version": "4.1.4", "version": "4.1.7",
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.4.tgz", "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.7.tgz",
"integrity": "sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==", "integrity": "sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/figures": "^2.0.3", "@inquirer/figures": "^2.0.5",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -302,15 +302,15 @@
} }
}, },
"node_modules/@inquirer/select": { "node_modules/@inquirer/select": {
"version": "5.1.0", "version": "5.1.3",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.0.tgz", "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.3.tgz",
"integrity": "sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==", "integrity": "sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^2.0.3", "@inquirer/ansi": "^2.0.5",
"@inquirer/core": "^11.1.5", "@inquirer/core": "^11.1.8",
"@inquirer/figures": "^2.0.3", "@inquirer/figures": "^2.0.5",
"@inquirer/type": "^4.0.3" "@inquirer/type": "^4.0.5"
}, },
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
@@ -325,9 +325,9 @@
} }
}, },
"node_modules/@inquirer/type": { "node_modules/@inquirer/type": {
"version": "4.0.3", "version": "4.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.3.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz",
"integrity": "sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==", "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"