@salesforce/b2c-cli 0.3.0 → 0.4.1
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 +70 -1
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +14 -1
- package/dist/commands/am/clients/create.d.ts +28 -0
- package/dist/commands/am/clients/create.js +158 -0
- package/dist/commands/am/clients/create.js.map +1 -0
- package/dist/commands/am/clients/delete.d.ts +13 -0
- package/dist/commands/am/clients/delete.js +29 -0
- package/dist/commands/am/clients/delete.js.map +1 -0
- package/dist/commands/am/clients/get.d.ts +26 -0
- package/dist/commands/am/clients/get.js +186 -0
- package/dist/commands/am/clients/get.js.map +1 -0
- package/dist/commands/am/clients/list.d.ts +18 -0
- package/dist/commands/am/clients/list.js +139 -0
- package/dist/commands/am/clients/list.js.map +1 -0
- package/dist/commands/am/clients/password.d.ts +16 -0
- package/dist/commands/am/clients/password.js +51 -0
- package/dist/commands/am/clients/password.js.map +1 -0
- package/dist/commands/am/clients/update.d.ts +34 -0
- package/dist/commands/am/clients/update.js +146 -0
- package/dist/commands/am/clients/update.js.map +1 -0
- package/dist/commands/am/orgs/get.d.ts +23 -0
- package/dist/commands/am/orgs/get.js +175 -0
- package/dist/commands/am/orgs/get.js.map +1 -0
- package/dist/commands/am/orgs/list.d.ts +18 -0
- package/dist/commands/am/orgs/list.js +149 -0
- package/dist/commands/am/orgs/list.js.map +1 -0
- package/dist/commands/am/roles/get.d.ts +15 -0
- package/dist/commands/am/roles/get.js +63 -0
- package/dist/commands/am/roles/get.js.map +1 -0
- package/dist/commands/am/roles/grant.d.ts +18 -0
- package/dist/commands/am/roles/grant.js +72 -0
- package/dist/commands/am/roles/grant.js.map +1 -0
- package/dist/commands/am/roles/list.d.ts +22 -0
- package/dist/commands/am/roles/list.js +142 -0
- package/dist/commands/am/roles/list.js.map +1 -0
- package/dist/commands/am/roles/revoke.d.ts +18 -0
- package/dist/commands/am/roles/revoke.js +72 -0
- package/dist/commands/am/roles/revoke.js.map +1 -0
- package/dist/commands/am/users/create.d.ts +17 -0
- package/dist/commands/am/users/create.js +67 -0
- package/dist/commands/am/users/create.js.map +1 -0
- package/dist/commands/am/users/delete.d.ts +16 -0
- package/dist/commands/am/users/delete.js +63 -0
- package/dist/commands/am/users/delete.js.map +1 -0
- package/dist/commands/am/users/get.d.ts +18 -0
- package/dist/commands/am/users/get.js +96 -0
- package/dist/commands/am/users/get.js.map +1 -0
- package/dist/commands/am/users/list.d.ts +21 -0
- package/dist/commands/am/users/list.js +162 -0
- package/dist/commands/am/users/list.js.map +1 -0
- package/dist/commands/am/users/reset.d.ts +13 -0
- package/dist/commands/am/users/reset.js +43 -0
- package/dist/commands/am/users/reset.js.map +1 -0
- package/dist/commands/am/users/update.d.ts +18 -0
- package/dist/commands/am/users/update.js +63 -0
- package/dist/commands/am/users/update.js.map +1 -0
- package/dist/commands/auth/token.js +1 -1
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/code/activate.d.ts +2 -1
- package/dist/commands/code/delete.d.ts +2 -1
- package/dist/commands/code/deploy.d.ts +2 -1
- package/dist/commands/code/watch.d.ts +2 -1
- package/dist/commands/content/export.d.ts +57 -0
- package/dist/commands/content/export.js +217 -0
- package/dist/commands/content/export.js.map +1 -0
- package/dist/commands/content/list.d.ts +56 -0
- package/dist/commands/content/list.js +133 -0
- package/dist/commands/content/list.js.map +1 -0
- package/dist/commands/docs/download.d.ts +2 -1
- package/dist/commands/ecdn/cache/purge.d.ts +2 -1
- package/dist/commands/ecdn/certificates/add.d.ts +2 -1
- package/dist/commands/ecdn/certificates/delete.d.ts +2 -1
- package/dist/commands/ecdn/certificates/list.d.ts +2 -1
- package/dist/commands/ecdn/certificates/update.d.ts +2 -1
- package/dist/commands/ecdn/certificates/validate.d.ts +2 -1
- package/dist/commands/ecdn/cipher-suites/get.d.ts +2 -1
- package/dist/commands/ecdn/cipher-suites/update.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/create.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/delete.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/get.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/list.d.ts +2 -1
- package/dist/commands/ecdn/logpush/jobs/update.d.ts +2 -1
- package/dist/commands/ecdn/logpush/ownership.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/create.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/delete.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/get.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +2 -1
- package/dist/commands/ecdn/mrt-rules/update.d.ts +2 -1
- package/dist/commands/ecdn/mtls/create.d.ts +2 -1
- package/dist/commands/ecdn/mtls/delete.d.ts +2 -1
- package/dist/commands/ecdn/mtls/get.d.ts +2 -1
- package/dist/commands/ecdn/mtls/list.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/delete.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/get.d.ts +2 -1
- package/dist/commands/ecdn/origin-headers/set.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/create.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/notifications/list.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/create.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/delete.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/get.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/list.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/policies/update.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/scripts/get.d.ts +2 -1
- package/dist/commands/ecdn/page-shield/scripts/list.d.ts +2 -1
- package/dist/commands/ecdn/security/get.d.ts +2 -1
- package/dist/commands/ecdn/security/update.d.ts +2 -1
- package/dist/commands/ecdn/speed/get.d.ts +2 -1
- package/dist/commands/ecdn/speed/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/groups/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/groups/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/managed-rules/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/managed-rules/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/migrate.d.ts +2 -1
- package/dist/commands/ecdn/waf/owasp/get.d.ts +2 -1
- package/dist/commands/ecdn/waf/owasp/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/get.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/rules/update.d.ts +2 -1
- package/dist/commands/ecdn/waf/rulesets/list.d.ts +2 -1
- package/dist/commands/ecdn/waf/rulesets/update.d.ts +2 -1
- package/dist/commands/ecdn/zones/create.d.ts +2 -1
- package/dist/commands/ecdn/zones/list.d.ts +2 -1
- package/dist/commands/job/export.d.ts +2 -1
- package/dist/commands/job/import.d.ts +2 -1
- package/dist/commands/job/run.d.ts +2 -1
- package/dist/commands/job/search.d.ts +2 -1
- package/dist/commands/job/wait.d.ts +2 -1
- package/dist/commands/logs/get.d.ts +2 -1
- package/dist/commands/logs/list.d.ts +2 -1
- package/dist/commands/logs/tail.d.ts +2 -1
- package/dist/commands/mrt/bundle/deploy.js +24 -4
- package/dist/commands/mrt/bundle/deploy.js.map +1 -1
- package/dist/commands/mrt/tail-logs.d.ts +27 -0
- package/dist/commands/mrt/tail-logs.js +137 -0
- package/dist/commands/mrt/tail-logs.js.map +1 -0
- package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
- package/dist/commands/{ods → sandbox}/create.js +112 -102
- package/dist/commands/sandbox/create.js.map +1 -0
- package/dist/commands/sandbox/delete.d.ts +19 -0
- package/dist/commands/sandbox/delete.js +141 -0
- package/dist/commands/sandbox/delete.js.map +1 -0
- package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/get.js +5 -4
- package/dist/commands/sandbox/get.js.map +1 -0
- package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/info.js +6 -5
- package/dist/commands/sandbox/info.js.map +1 -0
- package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/list.js +6 -5
- package/dist/commands/sandbox/list.js.map +1 -0
- package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
- package/dist/commands/sandbox/restart.js +107 -0
- package/dist/commands/sandbox/restart.js.map +1 -0
- package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
- package/dist/commands/sandbox/start.js +108 -0
- package/dist/commands/sandbox/start.js.map +1 -0
- package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
- package/dist/commands/sandbox/stop.js +107 -0
- package/dist/commands/sandbox/stop.js.map +1 -0
- package/dist/commands/scaffold/generate.d.ts +22 -0
- package/dist/commands/scaffold/generate.js +74 -0
- package/dist/commands/scaffold/generate.js.map +1 -0
- package/dist/commands/scaffold/index.d.ts +24 -0
- package/dist/commands/scaffold/index.js +80 -0
- package/dist/commands/scaffold/index.js.map +1 -0
- package/dist/commands/scaffold/info.d.ts +24 -0
- package/dist/commands/scaffold/info.js +89 -0
- package/dist/commands/scaffold/info.js.map +1 -0
- package/dist/commands/scaffold/init.d.ts +29 -0
- package/dist/commands/scaffold/init.js +221 -0
- package/dist/commands/scaffold/init.js.map +1 -0
- package/dist/commands/scaffold/list.d.ts +38 -0
- package/dist/commands/scaffold/list.js +131 -0
- package/dist/commands/scaffold/list.js.map +1 -0
- package/dist/commands/scaffold/search.d.ts +32 -0
- package/dist/commands/scaffold/search.js +97 -0
- package/dist/commands/scaffold/search.js.map +1 -0
- package/dist/commands/scaffold/validate.d.ts +24 -0
- package/dist/commands/scaffold/validate.js +74 -0
- package/dist/commands/scaffold/validate.js.map +1 -0
- package/dist/commands/scapi/custom/status.d.ts +2 -1
- package/dist/commands/scapi/schemas/get.d.ts +2 -1
- package/dist/commands/scapi/schemas/list.d.ts +2 -1
- package/dist/commands/setup/index.d.ts +12 -0
- package/dist/commands/setup/index.js +34 -0
- package/dist/commands/setup/index.js.map +1 -0
- package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
- package/dist/commands/setup/{config.js → inspect.js} +5 -3
- package/dist/commands/setup/inspect.js.map +1 -0
- package/dist/commands/setup/instance/create.d.ts +43 -0
- package/dist/commands/setup/instance/create.js +269 -0
- package/dist/commands/setup/instance/create.js.map +1 -0
- package/dist/commands/setup/instance/index.d.ts +9 -0
- package/dist/commands/setup/instance/index.js +22 -0
- package/dist/commands/setup/instance/index.js.map +1 -0
- package/dist/commands/setup/instance/list.d.ts +31 -0
- package/dist/commands/setup/instance/list.js +68 -0
- package/dist/commands/setup/instance/list.js.map +1 -0
- package/dist/commands/setup/instance/remove.d.ts +34 -0
- package/dist/commands/setup/instance/remove.js +75 -0
- package/dist/commands/setup/instance/remove.js.map +1 -0
- package/dist/commands/setup/instance/set-active.d.ts +33 -0
- package/dist/commands/setup/instance/set-active.js +78 -0
- package/dist/commands/setup/instance/set-active.js.map +1 -0
- package/dist/commands/slas/client/create.d.ts +2 -1
- package/dist/commands/slas/client/create.js +1 -0
- package/dist/commands/slas/client/create.js.map +1 -1
- package/dist/commands/slas/client/delete.d.ts +2 -1
- package/dist/commands/slas/client/get.d.ts +2 -1
- package/dist/commands/slas/client/list.d.ts +2 -1
- package/dist/commands/slas/client/list.js +8 -3
- package/dist/commands/slas/client/list.js.map +1 -1
- package/dist/commands/slas/client/update.d.ts +2 -1
- package/dist/commands/webdav/get.d.ts +2 -1
- package/dist/commands/webdav/rm.d.ts +2 -1
- package/dist/i18n/locales/en.d.ts +42 -0
- package/dist/i18n/locales/en.js +42 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/index.d.ts +42 -0
- package/dist/lib/scaffold/generate-helper.d.ts +47 -0
- package/dist/lib/scaffold/generate-helper.js +271 -0
- package/dist/lib/scaffold/generate-helper.js.map +1 -0
- package/dist/lib/scaffold/source-resolver.d.ts +25 -0
- package/dist/lib/scaffold/source-resolver.js +37 -0
- package/dist/lib/scaffold/source-resolver.js.map +1 -0
- package/dist/utils/am/resolve-org.d.ts +11 -0
- package/dist/utils/am/resolve-org.js +15 -0
- package/dist/utils/am/resolve-org.js.map +1 -0
- package/dist/utils/am/user-display.d.ts +5 -0
- package/dist/utils/am/user-display.js +100 -0
- package/dist/utils/am/user-display.js.map +1 -0
- package/dist/utils/ecdn/zone-command.d.ts +2 -1
- package/dist/utils/mrt-logs/format.d.ts +28 -0
- package/dist/utils/mrt-logs/format.js +90 -0
- package/dist/utils/mrt-logs/format.js.map +1 -0
- package/dist/utils/mrt-logs/index.d.ts +1 -0
- package/dist/utils/mrt-logs/index.js +7 -0
- package/dist/utils/mrt-logs/index.js.map +1 -0
- package/dist/utils/slas/client.d.ts +7 -0
- package/dist/utils/slas/client.js +26 -13
- package/dist/utils/slas/client.js.map +1 -1
- package/oclif.manifest.json +14039 -5107
- package/package.json +61 -19
- package/dist/commands/ods/create.js.map +0 -1
- package/dist/commands/ods/delete.d.ts +0 -15
- package/dist/commands/ods/delete.js +0 -86
- package/dist/commands/ods/delete.js.map +0 -1
- package/dist/commands/ods/get.js.map +0 -1
- package/dist/commands/ods/info.js.map +0 -1
- package/dist/commands/ods/list.js.map +0 -1
- package/dist/commands/ods/restart.js +0 -51
- package/dist/commands/ods/restart.js.map +0 -1
- package/dist/commands/ods/start.js +0 -51
- package/dist/commands/ods/start.js.map +0 -1
- package/dist/commands/ods/stop.js +0 -51
- package/dist/commands/ods/stop.js.map +0 -1
- package/dist/commands/setup/config.js.map +0 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { input, confirm, select, checkbox, search } from '@inquirer/prompts';
|
|
7
|
+
import { createScaffoldRegistry, generateFromScaffold, evaluateCondition, resolveScaffoldParameters, parseParameterOptions, resolveOutputDirectory, } from '@salesforce/b2c-tooling-sdk/scaffold';
|
|
8
|
+
import { resolveLocalSource, resolveRemoteSource, isRemoteSource } from './source-resolver.js';
|
|
9
|
+
/**
|
|
10
|
+
* Execute scaffold generation with the given options.
|
|
11
|
+
*/
|
|
12
|
+
export async function executeScaffoldGenerate(options, ctx) {
|
|
13
|
+
const { scaffoldId, dryRun = false, force = false, projectRoot = process.cwd() } = options;
|
|
14
|
+
const registry = createScaffoldRegistry();
|
|
15
|
+
// Find the scaffold
|
|
16
|
+
const scaffold = await registry.getScaffold(scaffoldId, {
|
|
17
|
+
projectRoot,
|
|
18
|
+
});
|
|
19
|
+
if (!scaffold) {
|
|
20
|
+
ctx.error(`Scaffold not found: ${scaffoldId}`);
|
|
21
|
+
}
|
|
22
|
+
// Parse option flags into variables
|
|
23
|
+
const providedVariables = parseParameterOptions(options.options || [], scaffold);
|
|
24
|
+
// Handle --name shorthand for the first string parameter
|
|
25
|
+
if (options.name) {
|
|
26
|
+
const firstStringParam = scaffold.manifest.parameters.find((p) => p.type === 'string');
|
|
27
|
+
if (firstStringParam) {
|
|
28
|
+
providedVariables[firstStringParam.name] = options.name;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Resolve parameters using SDK, then prompt for any missing
|
|
32
|
+
const isTTY = process.stdin.isTTY && process.stdout.isTTY;
|
|
33
|
+
const interactive = !force && isTTY;
|
|
34
|
+
const resolved = await resolveScaffoldParameters(scaffold, {
|
|
35
|
+
providedVariables,
|
|
36
|
+
projectRoot,
|
|
37
|
+
useDefaults: !interactive,
|
|
38
|
+
});
|
|
39
|
+
// Report any validation errors
|
|
40
|
+
for (const error of resolved.errors) {
|
|
41
|
+
ctx.error(error.message);
|
|
42
|
+
}
|
|
43
|
+
// Check for missing required parameters in non-interactive mode
|
|
44
|
+
if (!interactive) {
|
|
45
|
+
const missingRequired = resolved.missingParameters.filter((p) => p.required);
|
|
46
|
+
if (missingRequired.length > 0) {
|
|
47
|
+
ctx.error(`Missing required parameter: ${missingRequired[0].name}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Prompt for any missing parameters in interactive mode
|
|
51
|
+
const resolvedVariables = { ...resolved.variables };
|
|
52
|
+
if (interactive && resolved.missingParameters.length > 0) {
|
|
53
|
+
for (const param of resolved.missingParameters) {
|
|
54
|
+
// Re-check condition since earlier params may have been filled in
|
|
55
|
+
if (param.when && !evaluateCondition(param.when, resolvedVariables)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line no-await-in-loop
|
|
59
|
+
const value = await promptForParameter(param, projectRoot, ctx);
|
|
60
|
+
if (value !== undefined) {
|
|
61
|
+
resolvedVariables[param.name] = value;
|
|
62
|
+
// Set companion path variable for cartridges source
|
|
63
|
+
if (param.source === 'cartridges' && typeof value === 'string') {
|
|
64
|
+
const result = resolveLocalSource('cartridges', projectRoot);
|
|
65
|
+
const cartridgePath = result.pathMap?.get(value);
|
|
66
|
+
if (cartridgePath) {
|
|
67
|
+
resolvedVariables[`${param.name}Path`] = cartridgePath;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Resolve output directory using SDK function
|
|
74
|
+
ctx.logger.trace({ flagOutput: options.output, defaultOutputDir: scaffold.manifest.defaultOutputDir }, 'Resolving output directory');
|
|
75
|
+
const outputDir = resolveOutputDirectory({
|
|
76
|
+
outputDir: options.output,
|
|
77
|
+
scaffold,
|
|
78
|
+
projectRoot,
|
|
79
|
+
});
|
|
80
|
+
ctx.logger.debug({ outputDir }, 'Resolved output directory');
|
|
81
|
+
if (dryRun) {
|
|
82
|
+
ctx.log('Dry run - no files will be written');
|
|
83
|
+
}
|
|
84
|
+
ctx.log(`Generating ${scaffold.manifest.displayName} scaffold...`);
|
|
85
|
+
// Generate the scaffold
|
|
86
|
+
let result;
|
|
87
|
+
try {
|
|
88
|
+
result = await generateFromScaffold(scaffold, {
|
|
89
|
+
outputDir,
|
|
90
|
+
variables: resolvedVariables,
|
|
91
|
+
dryRun,
|
|
92
|
+
force,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
ctx.error(`Failed to generate scaffold: ${error.message}`);
|
|
97
|
+
}
|
|
98
|
+
const response = {
|
|
99
|
+
scaffold: scaffoldId,
|
|
100
|
+
outputDir,
|
|
101
|
+
dryRun,
|
|
102
|
+
files: result.files.map((f) => ({
|
|
103
|
+
path: f.path,
|
|
104
|
+
action: f.action,
|
|
105
|
+
skipReason: f.skipReason,
|
|
106
|
+
})),
|
|
107
|
+
postInstructions: result.postInstructions,
|
|
108
|
+
};
|
|
109
|
+
// Display results
|
|
110
|
+
const created = result.files.filter((f) => f.action === 'created' || f.action === 'overwritten');
|
|
111
|
+
const skipped = result.files.filter((f) => f.action === 'skipped');
|
|
112
|
+
if (created.length > 0) {
|
|
113
|
+
ctx.log('');
|
|
114
|
+
ctx.log(`Successfully generated ${created.length} file(s):`);
|
|
115
|
+
for (const file of created) {
|
|
116
|
+
// file.path is already relative to cwd from the executor
|
|
117
|
+
ctx.log(` ${file.action === 'overwritten' ? '(overwritten)' : '+'} ${file.path}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (skipped.length > 0) {
|
|
121
|
+
ctx.log('');
|
|
122
|
+
ctx.log(`Skipped ${skipped.length} file(s):`);
|
|
123
|
+
for (const file of skipped) {
|
|
124
|
+
ctx.log(` - ${file.path}${file.skipReason ? ` (${file.skipReason})` : ''}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Show post-instructions
|
|
128
|
+
if (result.postInstructions) {
|
|
129
|
+
ctx.log('');
|
|
130
|
+
ctx.log(result.postInstructions);
|
|
131
|
+
}
|
|
132
|
+
return response;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Prompt for a single parameter value.
|
|
136
|
+
*/
|
|
137
|
+
async function promptForParameter(param, projectRoot, ctx) {
|
|
138
|
+
switch (param.type) {
|
|
139
|
+
case 'boolean': {
|
|
140
|
+
return confirm({
|
|
141
|
+
message: param.prompt,
|
|
142
|
+
default: param.default,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
case 'choice': {
|
|
146
|
+
const { choices, warning } = await resolveSourceChoices(param, projectRoot);
|
|
147
|
+
if (warning)
|
|
148
|
+
ctx.warn(warning);
|
|
149
|
+
if (choices.length === 0) {
|
|
150
|
+
if (param.source)
|
|
151
|
+
ctx.warn(`No ${param.source} found. Please enter a value manually.`);
|
|
152
|
+
return promptTextInput(param);
|
|
153
|
+
}
|
|
154
|
+
if (choices.length > 10) {
|
|
155
|
+
return search({
|
|
156
|
+
message: param.prompt,
|
|
157
|
+
source: createSearchSource(choices),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return select({
|
|
161
|
+
message: param.prompt,
|
|
162
|
+
choices: choices.map((c) => ({ name: c.label, value: c.value })),
|
|
163
|
+
default: param.default,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
case 'multi-choice': {
|
|
167
|
+
const { choices, warning } = await resolveSourceChoices(param, projectRoot);
|
|
168
|
+
if (warning)
|
|
169
|
+
ctx.warn(warning);
|
|
170
|
+
if (choices.length === 0)
|
|
171
|
+
return [];
|
|
172
|
+
// Pre-select default values if specified
|
|
173
|
+
const defaults = Array.isArray(param.default) ? param.default : [];
|
|
174
|
+
return checkbox({
|
|
175
|
+
message: param.prompt,
|
|
176
|
+
choices: choices.map((c) => ({
|
|
177
|
+
name: c.label,
|
|
178
|
+
value: c.value,
|
|
179
|
+
checked: defaults.includes(c.value),
|
|
180
|
+
})),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
case 'string': {
|
|
184
|
+
if (param.source) {
|
|
185
|
+
const { choices, warning } = await resolveSourceChoices(param, projectRoot);
|
|
186
|
+
if (warning)
|
|
187
|
+
ctx.warn(warning);
|
|
188
|
+
if (choices.length > 0) {
|
|
189
|
+
if (choices.length > 10) {
|
|
190
|
+
return search({
|
|
191
|
+
message: param.prompt,
|
|
192
|
+
source: createSearchSource(choices),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return select({
|
|
196
|
+
message: param.prompt,
|
|
197
|
+
choices: choices.map((c) => ({ name: c.label, value: c.value })),
|
|
198
|
+
default: param.default,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
ctx.warn(`No ${param.source} found. Please enter a value manually.`);
|
|
202
|
+
}
|
|
203
|
+
return promptTextInput(param);
|
|
204
|
+
}
|
|
205
|
+
default: {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Prompt for text input with validation.
|
|
212
|
+
*/
|
|
213
|
+
async function promptTextInput(param) {
|
|
214
|
+
const value = await input({
|
|
215
|
+
message: param.prompt,
|
|
216
|
+
default: param.default,
|
|
217
|
+
required: param.required,
|
|
218
|
+
validate(val) {
|
|
219
|
+
if (param.required && !val)
|
|
220
|
+
return 'This field is required';
|
|
221
|
+
if (param.pattern && val) {
|
|
222
|
+
const regex = new RegExp(param.pattern);
|
|
223
|
+
if (!regex.test(val)) {
|
|
224
|
+
return param.validationMessage || `Value does not match pattern: ${param.pattern}`;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return true;
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
return value || undefined;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create a search source function for inquirer search prompt.
|
|
234
|
+
*/
|
|
235
|
+
function createSearchSource(choices) {
|
|
236
|
+
return async (term) => {
|
|
237
|
+
if (!term) {
|
|
238
|
+
return choices.map((c) => ({ name: c.label, value: c.value }));
|
|
239
|
+
}
|
|
240
|
+
const lowerTerm = term.toLowerCase();
|
|
241
|
+
return choices
|
|
242
|
+
.filter((c) => c.label.toLowerCase().includes(lowerTerm) || c.value.toLowerCase().includes(lowerTerm))
|
|
243
|
+
.map((c) => ({ name: c.label, value: c.value }));
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Resolve choices for a parameter with dynamic source.
|
|
248
|
+
*/
|
|
249
|
+
async function resolveSourceChoices(param, projectRoot) {
|
|
250
|
+
if (!param.source) {
|
|
251
|
+
return { choices: param.choices || [] };
|
|
252
|
+
}
|
|
253
|
+
if (isRemoteSource(param.source)) {
|
|
254
|
+
try {
|
|
255
|
+
const choices = await resolveRemoteSource(param.source);
|
|
256
|
+
return { choices };
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
return {
|
|
260
|
+
choices: [],
|
|
261
|
+
warning: `Could not fetch ${param.source}: ${error.message}`,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const result = resolveLocalSource(param.source, projectRoot);
|
|
266
|
+
return {
|
|
267
|
+
choices: result.choices,
|
|
268
|
+
pathMap: result.pathMap,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=generate-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-helper.js","sourceRoot":"","sources":["../../../src/lib/scaffold/generate-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type DynamicParameterSource, type ScaffoldChoice, type SourceResult } from '@salesforce/b2c-tooling-sdk/scaffold';
|
|
2
|
+
export { isRemoteSource, validateAgainstSource, type SourceResult } from '@salesforce/b2c-tooling-sdk/scaffold';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use SourceResult from '@salesforce/b2c-tooling-sdk/scaffold' instead.
|
|
5
|
+
* This type alias is kept for backwards compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export type LocalSourceResult = SourceResult;
|
|
8
|
+
/**
|
|
9
|
+
* Resolves a local (non-remote) parameter source.
|
|
10
|
+
* Delegates to SDK function.
|
|
11
|
+
*
|
|
12
|
+
* @param source - The source type to resolve
|
|
13
|
+
* @param projectRoot - Project root directory for cartridge discovery
|
|
14
|
+
* @returns Resolved choices and optional path mapping
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveLocalSource(source: DynamicParameterSource, projectRoot: string): SourceResult;
|
|
17
|
+
/**
|
|
18
|
+
* CLI wrapper for remote source resolution.
|
|
19
|
+
* Handles auth orchestration using CLI config loading.
|
|
20
|
+
*
|
|
21
|
+
* @param source - The source type to resolve
|
|
22
|
+
* @returns Promise resolving to choices array
|
|
23
|
+
* @throws Error if authentication fails or API call fails
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveRemoteSource(source: DynamicParameterSource): Promise<ScaffoldChoice[]>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { resolveLocalSource as sdkResolveLocalSource, resolveRemoteSource as sdkResolveRemoteSource, } from '@salesforce/b2c-tooling-sdk/scaffold';
|
|
7
|
+
import { loadConfig } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
// Re-export SDK functions and types
|
|
9
|
+
export { isRemoteSource, validateAgainstSource } from '@salesforce/b2c-tooling-sdk/scaffold';
|
|
10
|
+
/**
|
|
11
|
+
* Resolves a local (non-remote) parameter source.
|
|
12
|
+
* Delegates to SDK function.
|
|
13
|
+
*
|
|
14
|
+
* @param source - The source type to resolve
|
|
15
|
+
* @param projectRoot - Project root directory for cartridge discovery
|
|
16
|
+
* @returns Resolved choices and optional path mapping
|
|
17
|
+
*/
|
|
18
|
+
export function resolveLocalSource(source, projectRoot) {
|
|
19
|
+
return sdkResolveLocalSource(source, projectRoot);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* CLI wrapper for remote source resolution.
|
|
23
|
+
* Handles auth orchestration using CLI config loading.
|
|
24
|
+
*
|
|
25
|
+
* @param source - The source type to resolve
|
|
26
|
+
* @returns Promise resolving to choices array
|
|
27
|
+
* @throws Error if authentication fails or API call fails
|
|
28
|
+
*/
|
|
29
|
+
export async function resolveRemoteSource(source) {
|
|
30
|
+
const config = loadConfig({}, { configPath: undefined });
|
|
31
|
+
if (!config.hasB2CInstanceConfig() || !config.hasOAuthConfig()) {
|
|
32
|
+
throw new Error('B2C instance configuration with OAuth required for sites source');
|
|
33
|
+
}
|
|
34
|
+
const instance = config.createB2CInstance();
|
|
35
|
+
return sdkResolveRemoteSource(source, instance);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=source-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../../src/lib/scaffold/source-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,kBAAkB,IAAI,qBAAqB,EAC3C,mBAAmB,IAAI,sBAAsB,GAI9C,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAE3D,oCAAoC;AACpC,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAoB,MAAM,sCAAsC,CAAC;AAQ9G;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA8B,EAAE,WAAmB;IACpF,OAAO,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAA8B;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC5C,OAAO,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AccountManagerOrganization } from '@salesforce/b2c-tooling-sdk';
|
|
2
|
+
interface OrgResolver {
|
|
3
|
+
getOrg(orgId: string): Promise<AccountManagerOrganization>;
|
|
4
|
+
getOrgByName(name: string): Promise<AccountManagerOrganization>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Resolves an organization identifier (ID or friendly name) to an org ID.
|
|
8
|
+
* Tries by ID first, then falls back to name lookup.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveOrgId(client: OrgResolver, orgIdOrName: string): Promise<string>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves an organization identifier (ID or friendly name) to an org ID.
|
|
3
|
+
* Tries by ID first, then falls back to name lookup.
|
|
4
|
+
*/
|
|
5
|
+
export async function resolveOrgId(client, orgIdOrName) {
|
|
6
|
+
try {
|
|
7
|
+
const org = await client.getOrg(orgIdOrName);
|
|
8
|
+
return org.id;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
const org = await client.getOrgByName(orgIdOrName);
|
|
12
|
+
return org.id;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=resolve-org.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-org.js","sourceRoot":"","sources":["../../../src/utils/am/resolve-org.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAmB,EAAE,WAAmB;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,EAAG,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,EAAG,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AccountManagerUser, RoleMapping, OrgMapping } from '@salesforce/b2c-tooling-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Prints user details to stdout using cliui formatting.
|
|
4
|
+
*/
|
|
5
|
+
export declare function printUserDetails(user: AccountManagerUser, roleMapping: RoleMapping, orgMapping: OrgMapping): void;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ux } from '@oclif/core';
|
|
7
|
+
import cliui from 'cliui';
|
|
8
|
+
import { resolveToInternalRole } from '@salesforce/b2c-tooling-sdk';
|
|
9
|
+
/**
|
|
10
|
+
* Formats a role for display as "Description (ENUM_NAME)" or just "ENUM_NAME".
|
|
11
|
+
*/
|
|
12
|
+
function formatRoleDisplay(roleName, roleMapping) {
|
|
13
|
+
const enumName = resolveToInternalRole(roleName, roleMapping);
|
|
14
|
+
const description = roleMapping.descriptions.get(enumName);
|
|
15
|
+
return description ? `${description} (${enumName})` : enumName;
|
|
16
|
+
}
|
|
17
|
+
function formatOrgDisplay(orgId, orgMapping) {
|
|
18
|
+
const name = orgMapping.byId.get(orgId);
|
|
19
|
+
return name ? `${name} (${orgId})` : orgId;
|
|
20
|
+
}
|
|
21
|
+
function printBasicFields(ui, user, orgMapping) {
|
|
22
|
+
const isPasswordExpired = user.passwordExpirationTimestamp
|
|
23
|
+
? user.passwordExpirationTimestamp < Date.now()
|
|
24
|
+
: undefined;
|
|
25
|
+
const twoFAEnabled = user.verifiers && user.verifiers.length > 0 ? 'Yes' : 'No';
|
|
26
|
+
const primaryOrg = user.primaryOrganization ? formatOrgDisplay(user.primaryOrganization, orgMapping) : undefined;
|
|
27
|
+
const fields = [
|
|
28
|
+
['ID', user.id],
|
|
29
|
+
['Email', user.mail],
|
|
30
|
+
['First Name', user.firstName],
|
|
31
|
+
['Last Name', user.lastName],
|
|
32
|
+
['Display Name', user.displayName],
|
|
33
|
+
['State', user.userState],
|
|
34
|
+
['Primary Organization', primaryOrg],
|
|
35
|
+
['Preferred Locale', user.preferredLocale || undefined],
|
|
36
|
+
['Business Phone', user.businessPhone || undefined],
|
|
37
|
+
['Home Phone', user.homePhone || undefined],
|
|
38
|
+
['Mobile Phone', user.mobilePhone || undefined],
|
|
39
|
+
['Linked to SF Identity', user.linkedToSfIdentity?.toString()],
|
|
40
|
+
['2FA Enabled', twoFAEnabled],
|
|
41
|
+
['Password Expired', isPasswordExpired === undefined ? undefined : isPasswordExpired ? 'Yes' : 'No'],
|
|
42
|
+
['Last Login', user.lastLoginDate || undefined],
|
|
43
|
+
['Created At', user.createdAt ? new Date(user.createdAt).toLocaleString() : undefined],
|
|
44
|
+
['Last Modified', user.lastModified ? new Date(user.lastModified).toLocaleString() : undefined],
|
|
45
|
+
];
|
|
46
|
+
for (const [label, value] of fields) {
|
|
47
|
+
if (value !== undefined) {
|
|
48
|
+
ui.div({ text: `${label}:`, width: 25, padding: [0, 2, 0, 0] }, { text: value, padding: [0, 0, 0, 0] });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function printOrganizations(ui, user, orgMapping) {
|
|
53
|
+
if (!user.organizations || user.organizations.length === 0) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
ui.div({ text: 'Organizations', padding: [2, 0, 0, 0] });
|
|
57
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
58
|
+
for (const o of user.organizations) {
|
|
59
|
+
const orgId = typeof o === 'string' ? o : o.id || 'Unknown';
|
|
60
|
+
const name = formatOrgDisplay(orgId, orgMapping);
|
|
61
|
+
ui.div({ text: `- ${name}`, padding: [0, 0, 0, 2] });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function printRoles(ui, user, roleMapping) {
|
|
65
|
+
if (!user.roles || user.roles.length === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
ui.div({ text: 'Roles', padding: [2, 0, 0, 0] });
|
|
69
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
70
|
+
for (const r of user.roles) {
|
|
71
|
+
const name = typeof r === 'string' ? r : r.roleEnumName || r.id || 'Unknown';
|
|
72
|
+
const display = formatRoleDisplay(name, roleMapping);
|
|
73
|
+
ui.div({ text: `- ${display}`, padding: [0, 0, 0, 2] });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function printRoleScopes(ui, user) {
|
|
77
|
+
if (!user.roleTenantFilterMap || Object.keys(user.roleTenantFilterMap).length === 0) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
ui.div({ text: 'Role Scopes', padding: [2, 0, 0, 0] });
|
|
81
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
82
|
+
for (const [roleEnumName, filter] of Object.entries(user.roleTenantFilterMap)) {
|
|
83
|
+
const filterValue = typeof filter === 'string' ? filter : Array.isArray(filter) ? filter.join(', ') : String(filter);
|
|
84
|
+
ui.div({ text: `${roleEnumName}:`, width: 30, padding: [0, 2, 0, 0] }, { text: filterValue, padding: [0, 0, 0, 0] });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Prints user details to stdout using cliui formatting.
|
|
89
|
+
*/
|
|
90
|
+
export function printUserDetails(user, roleMapping, orgMapping) {
|
|
91
|
+
const ui = cliui({ width: process.stdout.columns || 80 });
|
|
92
|
+
ui.div({ text: 'User Details', padding: [1, 0, 0, 0] });
|
|
93
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
94
|
+
printBasicFields(ui, user, orgMapping);
|
|
95
|
+
printOrganizations(ui, user, orgMapping);
|
|
96
|
+
printRoles(ui, user, roleMapping);
|
|
97
|
+
printRoleScopes(ui, user);
|
|
98
|
+
ux.stdout(ui.toString());
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=user-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-display.js","sourceRoot":"","sources":["../../../src/utils/am/user-display.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,11 @@ export declare abstract class EcdnZoneCommand<T extends typeof Command> extends
|
|
|
10
10
|
zone: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
'client-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
'client-secret': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
-
scope: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'auth-scope': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'short-code': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
'tenant-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
16
|
'auth-methods': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
'user-auth': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
'account-manager-host': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
19
|
'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
20
|
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MrtLogEntry } from '@salesforce/b2c-tooling-sdk/operations/mrt';
|
|
2
|
+
/**
|
|
3
|
+
* Options for formatting an MRT log entry.
|
|
4
|
+
*/
|
|
5
|
+
export interface FormatMrtEntryOptions {
|
|
6
|
+
/** Whether to use ANSI color codes. */
|
|
7
|
+
useColor: boolean;
|
|
8
|
+
/** Regex to highlight matches in the message. */
|
|
9
|
+
searchHighlight?: RegExp;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Colorizes a log level name using its level color + bold.
|
|
13
|
+
*/
|
|
14
|
+
export declare function colorLevel(level: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Colorizes text with the search highlight style (bold yellow).
|
|
17
|
+
*/
|
|
18
|
+
export declare function colorHighlight(text: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Formats an MRT log entry for terminal display.
|
|
21
|
+
*
|
|
22
|
+
* Output format:
|
|
23
|
+
* ```
|
|
24
|
+
* LEVEL [timestamp] [shortRequestId]
|
|
25
|
+
* message
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatMrtEntry(entry: MrtLogEntry, options: FormatMrtEntryOptions): string;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* ANSI color codes for log levels.
|
|
8
|
+
* Matches the color scheme from logs/format.ts for consistency.
|
|
9
|
+
*/
|
|
10
|
+
const LEVEL_COLORS = {
|
|
11
|
+
ERROR: '\u001B[31m', // Red
|
|
12
|
+
FATAL: '\u001B[35m', // Magenta
|
|
13
|
+
WARN: '\u001B[33m', // Yellow
|
|
14
|
+
WARNING: '\u001B[33m', // Yellow
|
|
15
|
+
INFO: '\u001B[36m', // Cyan
|
|
16
|
+
DEBUG: '\u001B[90m', // Gray
|
|
17
|
+
TRACE: '\u001B[90m', // Gray
|
|
18
|
+
};
|
|
19
|
+
const RESET = '\u001B[0m';
|
|
20
|
+
const DIM = '\u001B[2m';
|
|
21
|
+
const BOLD = '\u001B[1m';
|
|
22
|
+
const HIGHLIGHT = '\u001B[1;33m'; // Bold yellow for search matches
|
|
23
|
+
/**
|
|
24
|
+
* Highlights regex matches in text with ANSI color codes.
|
|
25
|
+
*/
|
|
26
|
+
function highlightMatches(text, pattern) {
|
|
27
|
+
return text.replace(pattern, (match) => `${HIGHLIGHT}${match}${RESET}`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Colorizes a log level name using its level color + bold.
|
|
31
|
+
*/
|
|
32
|
+
export function colorLevel(level) {
|
|
33
|
+
const color = LEVEL_COLORS[level] || '';
|
|
34
|
+
return `${color}${BOLD}${level}${RESET}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Colorizes text with the search highlight style (bold yellow).
|
|
38
|
+
*/
|
|
39
|
+
export function colorHighlight(text) {
|
|
40
|
+
return `${HIGHLIGHT}${text}${RESET}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Formats an MRT log entry for terminal display.
|
|
44
|
+
*
|
|
45
|
+
* Output format:
|
|
46
|
+
* ```
|
|
47
|
+
* LEVEL [timestamp] [shortRequestId]
|
|
48
|
+
* message
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function formatMrtEntry(entry, options) {
|
|
52
|
+
const { useColor, searchHighlight } = options;
|
|
53
|
+
const headerParts = [];
|
|
54
|
+
// Level first (most important for scanning)
|
|
55
|
+
if (entry.level) {
|
|
56
|
+
if (useColor) {
|
|
57
|
+
const color = LEVEL_COLORS[entry.level] || '';
|
|
58
|
+
headerParts.push(`${color}${BOLD}${entry.level}${RESET}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
headerParts.push(entry.level);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Timestamp
|
|
65
|
+
if (entry.timestamp) {
|
|
66
|
+
if (useColor) {
|
|
67
|
+
headerParts.push(`${DIM}[${entry.timestamp}]${RESET}`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
headerParts.push(`[${entry.timestamp}]`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Short request ID
|
|
74
|
+
if (entry.shortRequestId) {
|
|
75
|
+
if (useColor) {
|
|
76
|
+
headerParts.push(`${DIM}[${entry.shortRequestId}]${RESET}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
headerParts.push(`[${entry.shortRequestId}]`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const header = headerParts.join(' ');
|
|
83
|
+
let message = entry.message.trimEnd();
|
|
84
|
+
// Highlight search matches in message
|
|
85
|
+
if (useColor && searchHighlight) {
|
|
86
|
+
message = highlightMatches(message, searchHighlight);
|
|
87
|
+
}
|
|
88
|
+
return `${header}\n${message}\n`;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/mrt-logs/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './format.js';
|