simplemdg-dev-cli 2.0.4 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -354
- package/USER_GUIDE.md +55 -376
- package/dist/commands/cds.command.js +69 -60
- package/dist/commands/cds.command.js.map +1 -1
- package/dist/commands/cf-db.command.d.ts +2 -0
- package/dist/commands/cf-db.command.js +606 -0
- package/dist/commands/cf-db.command.js.map +1 -0
- package/dist/commands/cf.command.js +291 -280
- package/dist/commands/cf.command.js.map +1 -1
- package/dist/commands/gitlab.command.d.ts +2 -0
- package/dist/commands/gitlab.command.js +351 -0
- package/dist/commands/gitlab.command.js.map +1 -0
- package/dist/commands/npmrc.command.js +50 -44
- package/dist/commands/npmrc.command.js.map +1 -1
- package/dist/core/cache.d.ts +1 -1
- package/dist/core/cache.js +58 -31
- package/dist/core/cache.js.map +1 -1
- package/dist/core/cds.js +32 -22
- package/dist/core/cds.js.map +1 -1
- package/dist/core/cf-env-parser.d.ts +1 -1
- package/dist/core/cf-env-parser.js +4 -1
- package/dist/core/cf-env-parser.js.map +1 -1
- package/dist/core/cf.d.ts +1 -1
- package/dist/core/cf.js +46 -31
- package/dist/core/cf.js.map +1 -1
- package/dist/core/db/db-btp.d.ts +48 -0
- package/dist/core/db/db-btp.js +162 -0
- package/dist/core/db/db-btp.js.map +1 -0
- package/dist/core/db/db-cache.d.ts +40 -0
- package/dist/core/db/db-cache.js +188 -0
- package/dist/core/db/db-cache.js.map +1 -0
- package/dist/core/db/db-connection.d.ts +22 -0
- package/dist/core/db/db-connection.js +73 -0
- package/dist/core/db/db-connection.js.map +1 -0
- package/dist/core/db/db-crypto.d.ts +3 -0
- package/dist/core/db/db-crypto.js +54 -0
- package/dist/core/db/db-crypto.js.map +1 -0
- package/dist/core/db/db-hana-adapter.d.ts +36 -0
- package/dist/core/db/db-hana-adapter.js +251 -0
- package/dist/core/db/db-hana-adapter.js.map +1 -0
- package/dist/core/db/db-metadata.d.ts +25 -0
- package/dist/core/db/db-metadata.js +150 -0
- package/dist/core/db/db-metadata.js.map +1 -0
- package/dist/core/db/db-postgres-adapter.d.ts +34 -0
- package/dist/core/db/db-postgres-adapter.js +259 -0
- package/dist/core/db/db-postgres-adapter.js.map +1 -0
- package/dist/core/db/db-query-files.d.ts +20 -0
- package/dist/core/db/db-query-files.js +106 -0
- package/dist/core/db/db-query-files.js.map +1 -0
- package/dist/core/db/db-query-history.d.ts +5 -0
- package/dist/core/db/db-query-history.js +49 -0
- package/dist/core/db/db-query-history.js.map +1 -0
- package/dist/core/db/db-row.d.ts +28 -0
- package/dist/core/db/db-row.js +123 -0
- package/dist/core/db/db-row.js.map +1 -0
- package/dist/core/db/db-studio-client.d.ts +1 -0
- package/dist/core/db/db-studio-client.js +401 -0
- package/dist/core/db/db-studio-client.js.map +1 -0
- package/dist/core/db/db-studio-html.d.ts +4 -0
- package/dist/core/db/db-studio-html.js +83 -0
- package/dist/core/db/db-studio-html.js.map +1 -0
- package/dist/core/db/db-studio-server.d.ts +11 -0
- package/dist/core/db/db-studio-server.js +528 -0
- package/dist/core/db/db-studio-server.js.map +1 -0
- package/dist/core/db/db-studio-styles.d.ts +1 -0
- package/dist/core/db/db-studio-styles.js +225 -0
- package/dist/core/db/db-studio-styles.js.map +1 -0
- package/dist/core/db/db-types.d.ts +214 -0
- package/dist/core/db/db-types.js +3 -0
- package/dist/core/db/db-types.js.map +1 -0
- package/dist/core/db/db-vcap-parser.d.ts +7 -0
- package/dist/core/db/db-vcap-parser.js +137 -0
- package/dist/core/db/db-vcap-parser.js.map +1 -0
- package/dist/core/doctor.d.ts +1 -1
- package/dist/core/doctor.js +14 -8
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/guide.js +31 -26
- package/dist/core/guide.js.map +1 -1
- package/dist/core/install.d.ts +1 -1
- package/dist/core/install.js +17 -11
- package/dist/core/install.js.map +1 -1
- package/dist/core/navigator.d.ts +17 -0
- package/dist/core/navigator.js +140 -0
- package/dist/core/navigator.js.map +1 -0
- package/dist/core/npmrc.js +29 -16
- package/dist/core/npmrc.js.map +1 -1
- package/dist/core/process.js +11 -6
- package/dist/core/process.js.map +1 -1
- package/dist/core/prompts.js +16 -8
- package/dist/core/prompts.js.map +1 -1
- package/dist/core/repository.d.ts +1 -1
- package/dist/core/repository.js +16 -9
- package/dist/core/repository.js.map +1 -1
- package/dist/core/scanner.d.ts +1 -1
- package/dist/core/scanner.js +13 -7
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/tooling.d.ts +28 -0
- package/dist/core/tooling.js +168 -0
- package/dist/core/tooling.js.map +1 -0
- package/dist/core/types.js +2 -1
- package/dist/core/version-conflict.d.ts +2 -2
- package/dist/core/version-conflict.js +11 -6
- package/dist/core/version-conflict.js.map +1 -1
- package/dist/index.js +65 -48
- package/dist/index.js.map +1 -1
- package/dist/types-local.js +2 -1
- package/package.json +12 -6
- package/src/commands/cds.command.ts +529 -0
- package/src/commands/cf-db.command.ts +636 -0
- package/src/commands/cf.command.ts +3345 -0
- package/src/commands/gitlab.command.ts +373 -0
- package/src/commands/npmrc.command.ts +581 -0
- package/src/core/cache.ts +332 -0
- package/src/core/cds.ts +278 -0
- package/src/core/cf-env-parser.ts +131 -0
- package/src/core/cf.ts +271 -0
- package/src/core/db/db-btp.ts +207 -0
- package/src/core/db/db-cache.ts +242 -0
- package/src/core/db/db-connection.ts +79 -0
- package/src/core/db/db-crypto.ts +53 -0
- package/src/core/db/db-hana-adapter.ts +306 -0
- package/src/core/db/db-metadata.ts +174 -0
- package/src/core/db/db-postgres-adapter.ts +293 -0
- package/src/core/db/db-query-files.ts +130 -0
- package/src/core/db/db-query-history.ts +53 -0
- package/src/core/db/db-row.ts +157 -0
- package/src/core/db/db-studio-client.ts +397 -0
- package/src/core/db/db-studio-html.ts +85 -0
- package/src/core/db/db-studio-server.ts +626 -0
- package/src/core/db/db-studio-styles.ts +221 -0
- package/src/core/db/db-types.ts +243 -0
- package/src/core/db/db-vcap-parser.ts +182 -0
- package/src/core/doctor.ts +70 -0
- package/src/core/guide.ts +261 -0
- package/src/core/install.ts +91 -0
- package/src/core/navigator.ts +164 -0
- package/src/core/npmrc.ts +171 -0
- package/src/core/process.ts +75 -0
- package/src/core/prompts.ts +225 -0
- package/src/core/repository.ts +36 -0
- package/src/core/scanner.ts +41 -0
- package/src/core/tooling.ts +207 -0
- package/src/core/types.ts +152 -0
- package/src/core/version-conflict.ts +46 -0
- package/src/index.ts +460 -0
- package/src/types/external.d.ts +3 -0
- package/src/types-local.ts +11 -0
- package/tsconfig.json +17 -0
package/dist/core/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/core/guide.js
CHANGED
|
@@ -1,25 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.printUserGuide = printUserGuide;
|
|
7
|
+
exports.openUserGuideInBrowser = openUserGuideInBrowser;
|
|
8
|
+
exports.askRootHelpMode = askRootHelpMode;
|
|
9
|
+
const node_http_1 = __importDefault(require("node:http"));
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const node_child_process_1 = require("node:child_process");
|
|
12
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
8
15
|
const GUIDE_FILE_NAME = "USER_GUIDE.md";
|
|
9
16
|
function getPackageRootPath() {
|
|
10
|
-
|
|
11
|
-
const distCorePath = path.dirname(currentFilePath);
|
|
12
|
-
return path.resolve(distCorePath, "..", "..");
|
|
17
|
+
return node_path_1.default.resolve(__dirname, "..", "..");
|
|
13
18
|
}
|
|
14
19
|
async function readGuideMarkdown() {
|
|
15
20
|
const packageRootPath = getPackageRootPath();
|
|
16
|
-
const guidePath =
|
|
17
|
-
if (await
|
|
18
|
-
return
|
|
21
|
+
const guidePath = node_path_1.default.join(packageRootPath, GUIDE_FILE_NAME);
|
|
22
|
+
if (await fs_extra_1.default.pathExists(guidePath)) {
|
|
23
|
+
return fs_extra_1.default.readFile(guidePath, "utf8");
|
|
19
24
|
}
|
|
20
|
-
const readmePath =
|
|
21
|
-
if (await
|
|
22
|
-
return
|
|
25
|
+
const readmePath = node_path_1.default.join(packageRootPath, "README.md");
|
|
26
|
+
if (await fs_extra_1.default.pathExists(readmePath)) {
|
|
27
|
+
return fs_extra_1.default.readFile(readmePath, "utf8");
|
|
23
28
|
}
|
|
24
29
|
return `# SimpleMDG Dev CLI\n\nGuide file was not found. Run smdg --help to see command help.`;
|
|
25
30
|
}
|
|
@@ -171,27 +176,27 @@ function buildGuideHtml(markdown) {
|
|
|
171
176
|
function openBrowser(url) {
|
|
172
177
|
const platform = process.platform;
|
|
173
178
|
if (platform === "win32") {
|
|
174
|
-
spawn("cmd", ["/c", "start", "", url], { detached: true, stdio: "ignore" }).unref();
|
|
179
|
+
(0, node_child_process_1.spawn)("cmd", ["/c", "start", "", url], { detached: true, stdio: "ignore" }).unref();
|
|
175
180
|
return;
|
|
176
181
|
}
|
|
177
182
|
if (platform === "darwin") {
|
|
178
|
-
spawn("open", [url], { detached: true, stdio: "ignore" }).unref();
|
|
183
|
+
(0, node_child_process_1.spawn)("open", [url], { detached: true, stdio: "ignore" }).unref();
|
|
179
184
|
return;
|
|
180
185
|
}
|
|
181
|
-
spawn("xdg-open", [url], { detached: true, stdio: "ignore" }).unref();
|
|
186
|
+
(0, node_child_process_1.spawn)("xdg-open", [url], { detached: true, stdio: "ignore" }).unref();
|
|
182
187
|
}
|
|
183
|
-
|
|
188
|
+
async function printUserGuide() {
|
|
184
189
|
const markdown = await readGuideMarkdown();
|
|
185
190
|
console.log(markdown);
|
|
186
191
|
}
|
|
187
|
-
|
|
192
|
+
async function openUserGuideInBrowser(port) {
|
|
188
193
|
const markdown = await readGuideMarkdown();
|
|
189
194
|
const html = buildGuideHtml(markdown);
|
|
190
195
|
const requestedPort = port?.trim() ? Number(port.trim()) : 0;
|
|
191
196
|
if (port?.trim() && (!Number.isInteger(requestedPort) || requestedPort < 1 || requestedPort > 65535)) {
|
|
192
197
|
throw new Error("Guide port must be a number from 1 to 65535");
|
|
193
198
|
}
|
|
194
|
-
const server =
|
|
199
|
+
const server = node_http_1.default.createServer((request, response) => {
|
|
195
200
|
if (request.url === "/" || request.url === "/index.html") {
|
|
196
201
|
response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
|
|
197
202
|
response.end(html);
|
|
@@ -207,12 +212,12 @@ export async function openUserGuideInBrowser(port) {
|
|
|
207
212
|
const address = server.address();
|
|
208
213
|
const actualPort = typeof address === "object" && address ? address.port : requestedPort;
|
|
209
214
|
const url = `http://127.0.0.1:${actualPort}`;
|
|
210
|
-
console.log(
|
|
211
|
-
console.log(
|
|
215
|
+
console.log(chalk_1.default.green(`SimpleMDG Dev CLI guide: ${url}`));
|
|
216
|
+
console.log(chalk_1.default.gray("Press Ctrl + C to stop the guide server."));
|
|
212
217
|
openBrowser(url);
|
|
213
218
|
}
|
|
214
|
-
|
|
215
|
-
const response = await
|
|
219
|
+
async function askRootHelpMode() {
|
|
220
|
+
const response = await (0, prompts_1.default)({
|
|
216
221
|
type: "select",
|
|
217
222
|
name: "mode",
|
|
218
223
|
message: "How do you want to view SimpleMDG CLI help?",
|
package/dist/core/guide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/core/guide.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/core/guide.ts"],"names":[],"mappings":"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"}
|
package/dist/core/install.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { TInstallRepositoryOptions, TInstallRepositoryResult } from "./types
|
|
1
|
+
import type { TInstallRepositoryOptions, TInstallRepositoryResult } from "./types";
|
|
2
2
|
export declare function installRepository(options: TInstallRepositoryOptions): Promise<TInstallRepositoryResult>;
|
package/dist/core/install.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installRepository = installRepository;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
9
|
+
const execa_1 = require("execa");
|
|
10
|
+
const process_1 = require("./process");
|
|
5
11
|
function replaceVariables(content, variableValues) {
|
|
6
12
|
return content.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g, (fullMatch, variableName) => {
|
|
7
13
|
return variableValues[variableName] ?? fullMatch;
|
|
@@ -22,8 +28,8 @@ function mergePackageOverrides(packageJson, temporaryOverrides) {
|
|
|
22
28
|
},
|
|
23
29
|
};
|
|
24
30
|
}
|
|
25
|
-
|
|
26
|
-
const filePaths = await
|
|
31
|
+
async function installRepository(options) {
|
|
32
|
+
const filePaths = await (0, fast_glob_1.default)(options.filePatterns, {
|
|
27
33
|
cwd: options.repositoryPath,
|
|
28
34
|
absolute: true,
|
|
29
35
|
onlyFiles: true,
|
|
@@ -32,7 +38,7 @@ export async function installRepository(options) {
|
|
|
32
38
|
const originalContents = new Map();
|
|
33
39
|
try {
|
|
34
40
|
for (const filePath of filePaths) {
|
|
35
|
-
const originalContent = await
|
|
41
|
+
const originalContent = await fs_extra_1.default.readFile(filePath, "utf8");
|
|
36
42
|
originalContents.set(filePath, originalContent);
|
|
37
43
|
let nextContent = replaceVariables(originalContent, options.variableValues);
|
|
38
44
|
if (filePath.endsWith("package.json")) {
|
|
@@ -40,11 +46,11 @@ export async function installRepository(options) {
|
|
|
40
46
|
nextContent = `${JSON.stringify(mergePackageOverrides(packageJson, options.temporaryOverrides), null, 2)}\n`;
|
|
41
47
|
}
|
|
42
48
|
if (nextContent !== originalContent) {
|
|
43
|
-
await
|
|
49
|
+
await fs_extra_1.default.writeFile(filePath, nextContent, "utf8");
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
|
-
const { command, args } = splitCommand(options.installCommand);
|
|
47
|
-
const childProcess = execa(command, args, {
|
|
52
|
+
const { command, args } = (0, process_1.splitCommand)(options.installCommand);
|
|
53
|
+
const childProcess = (0, execa_1.execa)(command, args, {
|
|
48
54
|
cwd: options.repositoryPath,
|
|
49
55
|
reject: false,
|
|
50
56
|
all: false,
|
|
@@ -70,7 +76,7 @@ export async function installRepository(options) {
|
|
|
70
76
|
}
|
|
71
77
|
finally {
|
|
72
78
|
for (const [filePath, content] of originalContents.entries()) {
|
|
73
|
-
await
|
|
79
|
+
await fs_extra_1.default.writeFile(filePath, content, "utf8");
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
82
|
}
|
package/dist/core/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/core/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/core/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* Drive interactive navigation starting from a group command. Shows the list of
|
|
4
|
+
* subcommands, lets the user descend into nested groups, and finally runs the
|
|
5
|
+
* selected leaf command (which collects its own options interactively).
|
|
6
|
+
*/
|
|
7
|
+
export declare function runGroupNavigator(startGroup: Command): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Attach the interactive navigator to every group command in the tree. After
|
|
10
|
+
* this, invoking a group without a subcommand (e.g. `smdg cf` or `smdg cf db`)
|
|
11
|
+
* opens a searchable menu of its subcommands instead of printing help.
|
|
12
|
+
*
|
|
13
|
+
* Leaf commands keep their own action handlers untouched. Existing default
|
|
14
|
+
* actions on group commands are replaced by the navigator so navigation stays
|
|
15
|
+
* consistent across the whole CLI.
|
|
16
|
+
*/
|
|
17
|
+
export declare function enableInteractiveNavigation(program: Command): void;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runGroupNavigator = runGroupNavigator;
|
|
7
|
+
exports.enableInteractiveNavigation = enableInteractiveNavigation;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const prompts_1 = require("./prompts");
|
|
10
|
+
const BACK_VALUE = "__SMDG_NAV_BACK__";
|
|
11
|
+
const EXIT_VALUE = "__SMDG_NAV_EXIT__";
|
|
12
|
+
// Commands that exist only for internal/background use and should never be
|
|
13
|
+
// offered in the interactive menu.
|
|
14
|
+
const INTERNAL_COMMAND_NAMES = new Set(["apps-cache-refresh"]);
|
|
15
|
+
function isHidden(command) {
|
|
16
|
+
return Boolean(command._hidden);
|
|
17
|
+
}
|
|
18
|
+
function getNavigableChildren(command) {
|
|
19
|
+
return command.commands.filter((child) => {
|
|
20
|
+
if (child.name() === "help") {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (isHidden(child)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return !INTERNAL_COMMAND_NAMES.has(child.name());
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function isGroup(command) {
|
|
30
|
+
return getNavigableChildren(command).length > 0;
|
|
31
|
+
}
|
|
32
|
+
function buildBreadcrumb(command) {
|
|
33
|
+
const names = [];
|
|
34
|
+
let current = command;
|
|
35
|
+
while (current) {
|
|
36
|
+
names.unshift(current.name());
|
|
37
|
+
current = current.parent;
|
|
38
|
+
}
|
|
39
|
+
// The bin is published as `smdg`; show that shorter name in breadcrumbs.
|
|
40
|
+
if (names[0] === "simplemdg") {
|
|
41
|
+
names[0] = "smdg";
|
|
42
|
+
}
|
|
43
|
+
return names.join(" ");
|
|
44
|
+
}
|
|
45
|
+
function buildChoiceTitle(command) {
|
|
46
|
+
const aliases = command.aliases();
|
|
47
|
+
const aliasText = aliases.length ? chalk_1.default.gray(` (${aliases.join(", ")})`) : "";
|
|
48
|
+
const marker = isGroup(command) ? chalk_1.default.cyan(" ›") : "";
|
|
49
|
+
const description = command.description();
|
|
50
|
+
const descriptionText = description ? ` ${chalk_1.default.gray(`— ${description}`)}` : "";
|
|
51
|
+
return `${chalk_1.default.bold(command.name())}${aliasText}${marker}${descriptionText}`;
|
|
52
|
+
}
|
|
53
|
+
async function dispatchLeaf(leaf) {
|
|
54
|
+
console.log(chalk_1.default.gray(`→ ${buildBreadcrumb(leaf)}`));
|
|
55
|
+
console.log("");
|
|
56
|
+
// Parsing the leaf with no user args runs its action with default options.
|
|
57
|
+
// Each leaf already prompts interactively for whatever it still needs.
|
|
58
|
+
await leaf.parseAsync([], { from: "user" });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Drive interactive navigation starting from a group command. Shows the list of
|
|
62
|
+
* subcommands, lets the user descend into nested groups, and finally runs the
|
|
63
|
+
* selected leaf command (which collects its own options interactively).
|
|
64
|
+
*/
|
|
65
|
+
async function runGroupNavigator(startGroup) {
|
|
66
|
+
const stack = [startGroup];
|
|
67
|
+
while (stack.length > 0) {
|
|
68
|
+
const current = stack[stack.length - 1];
|
|
69
|
+
const children = getNavigableChildren(current);
|
|
70
|
+
if (children.length === 0) {
|
|
71
|
+
await dispatchLeaf(current);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const choices = children.map((child) => ({
|
|
75
|
+
title: buildChoiceTitle(child),
|
|
76
|
+
value: child.name(),
|
|
77
|
+
}));
|
|
78
|
+
if (stack.length > 1) {
|
|
79
|
+
choices.push({ title: chalk_1.default.yellow("← Back"), value: BACK_VALUE });
|
|
80
|
+
}
|
|
81
|
+
choices.push({ title: chalk_1.default.gray("✕ Exit"), value: EXIT_VALUE });
|
|
82
|
+
let picked;
|
|
83
|
+
try {
|
|
84
|
+
picked = await (0, prompts_1.searchableSelectChoice)({
|
|
85
|
+
message: `${chalk_1.default.cyan(buildBreadcrumb(current))} — type to filter, then select`,
|
|
86
|
+
choices,
|
|
87
|
+
allowCustomValue: false,
|
|
88
|
+
limit: 20,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// ESC / cancel: step back one level, or exit when at the top.
|
|
93
|
+
if (stack.length > 1) {
|
|
94
|
+
stack.pop();
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (picked === EXIT_VALUE) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (picked === BACK_VALUE) {
|
|
103
|
+
stack.pop();
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const selected = children.find((child) => child.name() === picked);
|
|
107
|
+
if (!selected) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (isGroup(selected)) {
|
|
111
|
+
stack.push(selected);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
await dispatchLeaf(selected);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Attach the interactive navigator to every group command in the tree. After
|
|
120
|
+
* this, invoking a group without a subcommand (e.g. `smdg cf` or `smdg cf db`)
|
|
121
|
+
* opens a searchable menu of its subcommands instead of printing help.
|
|
122
|
+
*
|
|
123
|
+
* Leaf commands keep their own action handlers untouched. Existing default
|
|
124
|
+
* actions on group commands are replaced by the navigator so navigation stays
|
|
125
|
+
* consistent across the whole CLI.
|
|
126
|
+
*/
|
|
127
|
+
function enableInteractiveNavigation(program) {
|
|
128
|
+
const attach = (command) => {
|
|
129
|
+
for (const child of command.commands) {
|
|
130
|
+
if (isGroup(child)) {
|
|
131
|
+
child.action(async () => {
|
|
132
|
+
await runGroupNavigator(child);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
attach(child);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
attach(program);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=navigator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../src/core/navigator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/npmrc.js
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeNpmScope = normalizeNpmScope;
|
|
7
|
+
exports.normalizeGitLabHost = normalizeGitLabHost;
|
|
8
|
+
exports.buildGitLabNpmRegistryUrl = buildGitLabNpmRegistryUrl;
|
|
9
|
+
exports.buildGitLabNpmAuthRegistryPath = buildGitLabNpmAuthRegistryPath;
|
|
10
|
+
exports.writeNpmrcFile = writeNpmrcFile;
|
|
11
|
+
exports.parsePackageIdList = parsePackageIdList;
|
|
12
|
+
exports.readPackageJsonName = readPackageJsonName;
|
|
13
|
+
exports.parsePackageInputList = parsePackageInputList;
|
|
14
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
3
16
|
function trimSlashes(value) {
|
|
4
17
|
return value.trim().replace(/^\/+/, "").replace(/\/+$/, "");
|
|
5
18
|
}
|
|
6
|
-
|
|
19
|
+
function normalizeNpmScope(scope) {
|
|
7
20
|
const trimmedScope = scope.trim();
|
|
8
21
|
if (!trimmedScope) {
|
|
9
22
|
throw new Error("Scope is required");
|
|
10
23
|
}
|
|
11
24
|
return trimmedScope.startsWith("@") ? trimmedScope : `@${trimmedScope}`;
|
|
12
25
|
}
|
|
13
|
-
|
|
26
|
+
function normalizeGitLabHost(host) {
|
|
14
27
|
return trimSlashes(host.replace(/^https?:\/\//, ""));
|
|
15
28
|
}
|
|
16
|
-
|
|
29
|
+
function buildGitLabNpmRegistryUrl(options) {
|
|
17
30
|
const host = normalizeGitLabHost(options.host);
|
|
18
31
|
const packageId = options.packageId.trim();
|
|
19
32
|
if (!/^\d+$/.test(packageId)) {
|
|
@@ -21,7 +34,7 @@ export function buildGitLabNpmRegistryUrl(options) {
|
|
|
21
34
|
}
|
|
22
35
|
return `https://${host}/api/v4/projects/${packageId}/packages/npm/`;
|
|
23
36
|
}
|
|
24
|
-
|
|
37
|
+
function buildGitLabNpmAuthRegistryPath(options) {
|
|
25
38
|
const host = normalizeGitLabHost(options.host);
|
|
26
39
|
const packageId = options.packageId.trim();
|
|
27
40
|
if (!/^\d+$/.test(packageId)) {
|
|
@@ -51,9 +64,9 @@ function removeExistingManagedLines(options) {
|
|
|
51
64
|
return true;
|
|
52
65
|
});
|
|
53
66
|
}
|
|
54
|
-
|
|
55
|
-
const outputPath =
|
|
56
|
-
const existingContent = await
|
|
67
|
+
async function writeNpmrcFile(options) {
|
|
68
|
+
const outputPath = node_path_1.default.resolve(process.cwd(), options.outputFileName);
|
|
69
|
+
const existingContent = await fs_extra_1.default.pathExists(outputPath) ? await fs_extra_1.default.readFile(outputPath, "utf8") : "";
|
|
57
70
|
const preservedLines = removeExistingManagedLines({
|
|
58
71
|
currentContent: existingContent,
|
|
59
72
|
scope: options.scope,
|
|
@@ -68,25 +81,25 @@ export async function writeNpmrcFile(options) {
|
|
|
68
81
|
`always-auth=${options.alwaysAuth ? "true" : "false"}`,
|
|
69
82
|
];
|
|
70
83
|
const nextContent = [...preservedLines, ...managedLines].join("\n") + "\n";
|
|
71
|
-
await
|
|
84
|
+
await fs_extra_1.default.writeFile(outputPath, nextContent, "utf8");
|
|
72
85
|
return outputPath;
|
|
73
86
|
}
|
|
74
|
-
|
|
87
|
+
function parsePackageIdList(input) {
|
|
75
88
|
return [...new Set(input
|
|
76
89
|
.split(/[\s,;]+/)
|
|
77
90
|
.map((value) => value.trim())
|
|
78
91
|
.filter(Boolean)
|
|
79
92
|
.filter((value) => /^\d+$/.test(value)))];
|
|
80
93
|
}
|
|
81
|
-
|
|
82
|
-
const packageJsonPath =
|
|
83
|
-
if (!(await
|
|
94
|
+
async function readPackageJsonName(repositoryPath) {
|
|
95
|
+
const packageJsonPath = node_path_1.default.join(repositoryPath, "package.json");
|
|
96
|
+
if (!(await fs_extra_1.default.pathExists(packageJsonPath))) {
|
|
84
97
|
return undefined;
|
|
85
98
|
}
|
|
86
|
-
const packageJson = await
|
|
99
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath).catch(() => undefined);
|
|
87
100
|
return packageJson?.name;
|
|
88
101
|
}
|
|
89
|
-
|
|
102
|
+
function parsePackageInputList(input) {
|
|
90
103
|
const entries = [];
|
|
91
104
|
const keys = new Set();
|
|
92
105
|
for (const rawLine of input.split(/\r?\n/)) {
|
package/dist/core/npmrc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../src/core/npmrc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../src/core/npmrc.ts"],"names":[],"mappings":";;;;;AAgBA,8CAOC;AAED,kDAEC;AAED,8DASC;AAED,wEASC;AAmCD,wCAuBC;AAED,gDAMC;AAED,kDASC;AAOD,sDAqCC;AA1KD,0DAA6B;AAC7B,wDAA0B;AAW1B,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;AAC1E,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,yBAAyB,CAAC,OAA4C;IACpF,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAE3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,WAAW,IAAI,oBAAoB,SAAS,gBAAgB,CAAC;AACtE,CAAC;AAED,SAAgB,8BAA8B,CAAC,OAA4C;IACzF,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAE3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,IAAI,oBAAoB,SAAS,gBAAgB,CAAC;AAChE,CAAC;AAED,SAAS,0BAA0B,CAAC,OAInC;IACC,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC,cAAc;SAC1B,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,eAAe,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,cAAc,mBAAmB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACrH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,WAAW,KAAK,kBAAkB,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrG,MAAM,cAAc,GAAG,0BAA0B,CAAC;QAChD,cAAc,EAAE,eAAe;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpG,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAE9G,MAAM,YAAY,GAAG;QACnB,GAAG,KAAK,aAAa,WAAW,EAAE;QAClC,GAAG,gBAAgB,eAAe,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;QACxD,eAAe,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;KACvD,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE3E,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK;aACrB,KAAK,CAAC,SAAS,CAAC;aAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE;AAC/C,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,cAAsB;IAC9D,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAElE,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAkC,CAAC;IAC/G,OAAO,WAAW,EAAE,IAAI,CAAC;AAC3B,CAAC;AAOD,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1F,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,IAAI,sBAAsB,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,sBAAsB,CAAC,CAAC;YACxF,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;YACtE,MAAM,GAAG,GAAG,SAAS,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,SAAS;QACX,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/core/process.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runCommand = runCommand;
|
|
4
|
+
exports.runCommandInherit = runCommandInherit;
|
|
5
|
+
exports.splitCommand = splitCommand;
|
|
6
|
+
const execa_1 = require("execa");
|
|
7
|
+
async function runCommand(command, args, options) {
|
|
8
|
+
const result = await (0, execa_1.execa)(command, args, {
|
|
4
9
|
cwd: options?.cwd,
|
|
5
10
|
reject: options?.reject ?? false,
|
|
6
11
|
all: false,
|
|
@@ -12,8 +17,8 @@ export async function runCommand(command, args, options) {
|
|
|
12
17
|
exitCode: result.exitCode ?? 0,
|
|
13
18
|
};
|
|
14
19
|
}
|
|
15
|
-
|
|
16
|
-
const result = await execa(command, args, {
|
|
20
|
+
async function runCommandInherit(command, args, options) {
|
|
21
|
+
const result = await (0, execa_1.execa)(command, args, {
|
|
17
22
|
cwd: options?.cwd,
|
|
18
23
|
stdio: "inherit",
|
|
19
24
|
reject: false,
|
|
@@ -21,7 +26,7 @@ export async function runCommandInherit(command, args, options) {
|
|
|
21
26
|
});
|
|
22
27
|
return result.exitCode ?? 0;
|
|
23
28
|
}
|
|
24
|
-
|
|
29
|
+
function splitCommand(commandLine) {
|
|
25
30
|
const tokens = [];
|
|
26
31
|
let current = "";
|
|
27
32
|
let quote;
|
package/dist/core/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/core/process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/core/process.ts"],"names":[],"mappings":";;AAQA,gCAaC;AAED,8CASC;AAED,oCAwCC;AA1ED,iCAA8B;AAQvB,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,OAA4C;IAC5G,MAAM,MAAM,GAAG,MAAM,IAAA,aAAK,EAAC,OAAO,EAAE,IAAI,EAAE;QACxC,GAAG,EAAE,OAAO,EAAE,GAAG;QACjB,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;QAChC,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAc,EAAE,OAA0B;IACjG,MAAM,MAAM,GAAG,MAAM,IAAA,aAAK,EAAC,OAAO,EAAE,IAAI,EAAE;QACxC,GAAG,EAAE,OAAO,EAAE,GAAG;QACjB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,YAAY,CAAC,WAAmB;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAA4B,CAAC;IAEjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvD,KAAK,GAAG,SAAS,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACjC,KAAK,GAAG,SAAS,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,SAAS;QACX,CAAC;QAED,OAAO,IAAI,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/core/prompts.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.searchableSelectChoice = searchableSelectChoice;
|
|
7
|
+
exports.searchableSelectOrInput = searchableSelectOrInput;
|
|
8
|
+
exports.selectFromHistoryOrInput = selectFromHistoryOrInput;
|
|
9
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
2
10
|
const CUSTOM_VALUE_PREFIX = "__SMDG_CUSTOM_VALUE__:";
|
|
3
11
|
function normalizeValue(value) {
|
|
4
12
|
return value.trim();
|
|
@@ -56,7 +64,7 @@ function buildSearchableChoices(options) {
|
|
|
56
64
|
}
|
|
57
65
|
return scoredChoices;
|
|
58
66
|
}
|
|
59
|
-
|
|
67
|
+
async function searchableSelectChoice(options) {
|
|
60
68
|
const allowCustomValue = options.allowCustomValue ?? true;
|
|
61
69
|
const validate = options.validateCustomValue ?? ((value) => value.trim() ? true : "Value is required");
|
|
62
70
|
const choices = options.choices.map((choice) => ({
|
|
@@ -65,7 +73,7 @@ export async function searchableSelectChoice(options) {
|
|
|
65
73
|
description: choice.description,
|
|
66
74
|
}));
|
|
67
75
|
if (choices.length === 0) {
|
|
68
|
-
const response = await
|
|
76
|
+
const response = await (0, prompts_1.default)({
|
|
69
77
|
type: "text",
|
|
70
78
|
name: "value",
|
|
71
79
|
message: options.message,
|
|
@@ -76,7 +84,7 @@ export async function searchableSelectChoice(options) {
|
|
|
76
84
|
}
|
|
77
85
|
return String(response.value).trim();
|
|
78
86
|
}
|
|
79
|
-
const response = await
|
|
87
|
+
const response = await (0, prompts_1.default)({
|
|
80
88
|
type: "autocomplete",
|
|
81
89
|
name: "value",
|
|
82
90
|
message: options.message,
|
|
@@ -104,13 +112,13 @@ export async function searchableSelectChoice(options) {
|
|
|
104
112
|
}
|
|
105
113
|
return selectedValue;
|
|
106
114
|
}
|
|
107
|
-
|
|
115
|
+
async function searchableSelectOrInput(options) {
|
|
108
116
|
const values = uniqueValues([options.initialValue, ...options.values]);
|
|
109
117
|
const choices = values.map((value) => ({ title: value, value }));
|
|
110
118
|
const allowCustomValue = options.allowCustomValue ?? true;
|
|
111
119
|
const validate = options.validate ?? ((value) => value.trim() ? true : "Value is required");
|
|
112
120
|
if (choices.length > 0) {
|
|
113
|
-
const response = await
|
|
121
|
+
const response = await (0, prompts_1.default)({
|
|
114
122
|
type: "autocomplete",
|
|
115
123
|
name: "value",
|
|
116
124
|
message: options.message,
|
|
@@ -138,7 +146,7 @@ export async function searchableSelectOrInput(options) {
|
|
|
138
146
|
}
|
|
139
147
|
return selectedValue;
|
|
140
148
|
}
|
|
141
|
-
const input = await
|
|
149
|
+
const input = await (0, prompts_1.default)({
|
|
142
150
|
type: "text",
|
|
143
151
|
name: "value",
|
|
144
152
|
message: options.inputMessage ?? options.message,
|
|
@@ -150,7 +158,7 @@ export async function searchableSelectOrInput(options) {
|
|
|
150
158
|
}
|
|
151
159
|
return String(input.value).trim();
|
|
152
160
|
}
|
|
153
|
-
|
|
161
|
+
async function selectFromHistoryOrInput(options) {
|
|
154
162
|
return searchableSelectOrInput({
|
|
155
163
|
...options,
|
|
156
164
|
allowCustomValue: true,
|