@salesforce/b2c-tooling-sdk 1.22.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/guides/index.json +64 -17
- package/data/tooling/index.json +434 -11
- package/dist/esm/cli/base-command.js +3 -0
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/config.d.ts +2 -0
- package/dist/esm/cli/config.js +1 -0
- package/dist/esm/cli/config.js.map +1 -1
- package/dist/esm/config/index.d.ts +4 -1
- package/dist/esm/config/index.js +4 -0
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/project-environment.d.ts +4 -0
- package/dist/esm/config/project-environment.js +22 -0
- package/dist/esm/config/project-environment.js.map +1 -0
- package/dist/esm/config/resolver.js +15 -1
- package/dist/esm/config/resolver.js.map +1 -1
- package/dist/esm/config/settings.d.ts +26 -0
- package/dist/esm/config/settings.js +65 -0
- package/dist/esm/config/settings.js.map +1 -0
- package/dist/esm/config/sources/dw-json-source.js +179 -59
- package/dist/esm/config/sources/dw-json-source.js.map +1 -1
- package/dist/esm/config/sources/env-source.d.ts +1 -1
- package/dist/esm/config/sources/env-source.js +12 -7
- package/dist/esm/config/sources/env-source.js.map +1 -1
- package/dist/esm/config/sources/package-json-source.js +2 -1
- package/dist/esm/config/sources/package-json-source.js.map +1 -1
- package/dist/esm/config/types.d.ts +22 -3
- package/package.json +2 -1
|
@@ -8,9 +8,107 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @internal This module is internal to the SDK. Use ConfigResolver instead.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
import path from 'node:path';
|
|
13
|
+
import { loadDwJson, loadFullDwJson, addInstance, removeInstance, saveDwJson, setActiveInstance } from '../dw-json.js';
|
|
12
14
|
import { getPopulatedFields, mapDwJsonToNormalizedConfig, mapNormalizedConfigToDwJson } from '../mapping.js';
|
|
13
15
|
import { getLogger } from '../../logging/logger.js';
|
|
16
|
+
/** Select the explicit, project-local, or global-default dw.json path. */
|
|
17
|
+
function selectConfigPath(options) {
|
|
18
|
+
if (options.configPath)
|
|
19
|
+
return options.configPath;
|
|
20
|
+
const projectConfigPath = path.join(options.projectDirectory ?? options.workingDirectory ?? process.cwd(), 'dw.json');
|
|
21
|
+
if (existsSync(projectConfigPath))
|
|
22
|
+
return projectConfigPath;
|
|
23
|
+
return options.defaultConfigPath;
|
|
24
|
+
}
|
|
25
|
+
/** Select the ordered files that contribute instances to the effective catalog. */
|
|
26
|
+
function selectConfigPaths(options) {
|
|
27
|
+
const paths = [];
|
|
28
|
+
const primaryPath = path.resolve(options.configPath ?? path.join(options.projectDirectory ?? options.workingDirectory ?? process.cwd(), 'dw.json'));
|
|
29
|
+
if (existsSync(primaryPath))
|
|
30
|
+
paths.push(primaryPath);
|
|
31
|
+
const defaultConfigPath = options.defaultConfigPath ? path.resolve(options.defaultConfigPath) : undefined;
|
|
32
|
+
if (defaultConfigPath && existsSync(defaultConfigPath) && !paths.includes(defaultConfigPath)) {
|
|
33
|
+
paths.push(defaultConfigPath);
|
|
34
|
+
}
|
|
35
|
+
return paths;
|
|
36
|
+
}
|
|
37
|
+
/** Whether a resolved file came from the shared global setting rather than the primary path. */
|
|
38
|
+
function isGlobalConfigPath(configPath, options) {
|
|
39
|
+
if (!options.defaultConfigPath)
|
|
40
|
+
return false;
|
|
41
|
+
const primaryPath = path.resolve(options.configPath ?? path.join(options.projectDirectory ?? options.workingDirectory ?? process.cwd(), 'dw.json'));
|
|
42
|
+
const resolvedPath = path.resolve(configPath);
|
|
43
|
+
return resolvedPath !== primaryPath && resolvedPath === path.resolve(options.defaultConfigPath);
|
|
44
|
+
}
|
|
45
|
+
/** Describe all files participating in instance selection. */
|
|
46
|
+
function createInstanceCatalog(configPaths, selectedPath, options) {
|
|
47
|
+
const normalizedSelectedPath = selectedPath ? path.resolve(selectedPath) : undefined;
|
|
48
|
+
return configPaths.map((configPath) => ({
|
|
49
|
+
location: configPath,
|
|
50
|
+
scope: isGlobalConfigPath(configPath, options) ? 'global' : 'primary',
|
|
51
|
+
selected: path.resolve(configPath) === normalizedSelectedPath,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
async function listInstancesFromPath(sourceName, configPath) {
|
|
55
|
+
let result;
|
|
56
|
+
try {
|
|
57
|
+
result = await loadFullDwJson({ path: configPath });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
61
|
+
getLogger().warn({ error: message }, '[DwJsonSource] Failed to read dw.json while listing instances');
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
if (!result)
|
|
65
|
+
return [];
|
|
66
|
+
const instances = [];
|
|
67
|
+
const { config, path: dwJsonPath } = result;
|
|
68
|
+
if (config.name) {
|
|
69
|
+
instances.push({
|
|
70
|
+
name: config.name,
|
|
71
|
+
hostname: config.hostname,
|
|
72
|
+
active: config.active,
|
|
73
|
+
source: sourceName,
|
|
74
|
+
location: dwJsonPath,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
for (const item of config.configs ?? []) {
|
|
78
|
+
if (item.name) {
|
|
79
|
+
instances.push({
|
|
80
|
+
name: item.name,
|
|
81
|
+
hostname: item.hostname,
|
|
82
|
+
active: item.active,
|
|
83
|
+
source: sourceName,
|
|
84
|
+
location: dwJsonPath,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return instances;
|
|
89
|
+
}
|
|
90
|
+
async function loadActiveConfig(configPath) {
|
|
91
|
+
const full = await loadFullDwJson({ path: configPath });
|
|
92
|
+
if (!full)
|
|
93
|
+
return undefined;
|
|
94
|
+
const active = full.config.configs?.find((item) => item.active === true);
|
|
95
|
+
if (active?.name)
|
|
96
|
+
return loadDwJson({ path: configPath, instance: active.name });
|
|
97
|
+
if (full.config.active === true) {
|
|
98
|
+
return loadDwJson({ path: configPath, instance: full.config.name });
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/** Load a file's root/default entry only when it contains configuration fields. */
|
|
103
|
+
async function loadDefaultConfig(configPath) {
|
|
104
|
+
const result = await loadDwJson({ path: configPath });
|
|
105
|
+
if (!result)
|
|
106
|
+
return undefined;
|
|
107
|
+
if (result.config.active === false)
|
|
108
|
+
return undefined;
|
|
109
|
+
const config = mapDwJsonToNormalizedConfig(result.config);
|
|
110
|
+
return getPopulatedFields(config).length > 0 ? result : undefined;
|
|
111
|
+
}
|
|
14
112
|
/**
|
|
15
113
|
* Configuration source that loads from dw.json files.
|
|
16
114
|
*
|
|
@@ -31,66 +129,51 @@ export class DwJsonSource {
|
|
|
31
129
|
*/
|
|
32
130
|
async load(options) {
|
|
33
131
|
const logger = getLogger();
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
132
|
+
const configPaths = selectConfigPaths(options);
|
|
133
|
+
let result;
|
|
134
|
+
if (options.instance) {
|
|
135
|
+
for (const configPath of configPaths) {
|
|
136
|
+
result = await loadDwJson({ instance: options.instance, path: configPath });
|
|
137
|
+
if (result)
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
for (const configPath of configPaths) {
|
|
143
|
+
result = await loadActiveConfig(configPath);
|
|
144
|
+
if (!result) {
|
|
145
|
+
result = await loadDefaultConfig(configPath);
|
|
146
|
+
}
|
|
147
|
+
if (result)
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const instanceCatalog = createInstanceCatalog(configPaths, result?.path, options);
|
|
39
152
|
if (!result) {
|
|
153
|
+
if (instanceCatalog.length > 0) {
|
|
154
|
+
logger.trace({ instanceCatalog }, '[DwJsonSource] No matching/default instance; catalog retained');
|
|
155
|
+
return { config: {}, instanceCatalog };
|
|
156
|
+
}
|
|
40
157
|
return undefined;
|
|
41
158
|
}
|
|
42
159
|
const config = mapDwJsonToNormalizedConfig(result.config);
|
|
43
160
|
const fields = getPopulatedFields(config);
|
|
44
|
-
|
|
45
|
-
|
|
161
|
+
const scope = isGlobalConfigPath(result.path, options) ? 'global' : undefined;
|
|
162
|
+
logger.trace({ location: result.path, scope, fields }, '[DwJsonSource] Loaded config');
|
|
163
|
+
return { config, location: result.path, scope, instanceCatalog };
|
|
46
164
|
}
|
|
47
165
|
/**
|
|
48
166
|
* List all instances from dw.json.
|
|
49
167
|
*/
|
|
50
168
|
async listInstances(options) {
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
result = await loadFullDwJson({
|
|
54
|
-
path: options?.configPath,
|
|
55
|
-
projectDirectory: options?.projectDirectory ?? options?.workingDirectory,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
// A malformed dw.json (loadFullDwJson re-throws on JSON.parse failure)
|
|
60
|
-
// must not crash callers that only want to enumerate instances. Mirror
|
|
61
|
-
// the resolver's tolerance — log a warning and report no instances —
|
|
62
|
-
// so an unparseable file degrades gracefully (e.g. the VS Code status
|
|
63
|
-
// bar / instance switcher) instead of throwing.
|
|
64
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
65
|
-
getLogger().warn({ error: message }, '[DwJsonSource] Failed to read dw.json while listing instances');
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
68
|
-
if (!result) {
|
|
69
|
-
return [];
|
|
70
|
-
}
|
|
169
|
+
const configPaths = options ? selectConfigPaths(options) : [path.join(process.cwd(), 'dw.json')];
|
|
71
170
|
const instances = [];
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
active: config.active,
|
|
79
|
-
source: this.name,
|
|
80
|
-
location: dwJsonPath,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
// Add configs array entries
|
|
84
|
-
if (config.configs) {
|
|
85
|
-
for (const c of config.configs) {
|
|
86
|
-
if (c.name) {
|
|
87
|
-
instances.push({
|
|
88
|
-
name: c.name,
|
|
89
|
-
hostname: c.hostname,
|
|
90
|
-
active: c.active,
|
|
91
|
-
source: this.name,
|
|
92
|
-
location: dwJsonPath,
|
|
93
|
-
});
|
|
171
|
+
const names = new Set();
|
|
172
|
+
for (const configPath of configPaths) {
|
|
173
|
+
for (const instance of await listInstancesFromPath(this.name, configPath)) {
|
|
174
|
+
if (!names.has(instance.name)) {
|
|
175
|
+
names.add(instance.name);
|
|
176
|
+
instances.push(instance);
|
|
94
177
|
}
|
|
95
178
|
}
|
|
96
179
|
}
|
|
@@ -102,28 +185,65 @@ export class DwJsonSource {
|
|
|
102
185
|
async createInstance(options) {
|
|
103
186
|
const dwJsonConfig = mapNormalizedConfigToDwJson(options.config, options.name);
|
|
104
187
|
await addInstance(dwJsonConfig, {
|
|
105
|
-
path: options
|
|
188
|
+
path: selectConfigPath(options),
|
|
106
189
|
projectDirectory: options.projectDirectory ?? options.workingDirectory,
|
|
107
190
|
setActive: options.setActive,
|
|
108
191
|
});
|
|
192
|
+
if (options.setActive)
|
|
193
|
+
await this.setActiveInstance(options.name, options);
|
|
109
194
|
}
|
|
110
195
|
/**
|
|
111
196
|
* Remove an instance from dw.json.
|
|
112
197
|
*/
|
|
113
198
|
async removeInstance(name, options) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
199
|
+
if (!options)
|
|
200
|
+
return removeInstance(name);
|
|
201
|
+
for (const configPath of selectConfigPaths(options)) {
|
|
202
|
+
const instances = await listInstancesFromPath(this.name, configPath);
|
|
203
|
+
if (instances.some((instance) => instance.name === name)) {
|
|
204
|
+
return removeInstance(name, { path: configPath });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
throw new Error(`Instance "${name}" not found`);
|
|
118
208
|
}
|
|
119
209
|
/**
|
|
120
210
|
* Set an instance as active in dw.json.
|
|
121
211
|
*/
|
|
122
212
|
async setActiveInstance(name, options) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
213
|
+
if (!options)
|
|
214
|
+
return setActiveInstance(name);
|
|
215
|
+
const configPaths = selectConfigPaths(options);
|
|
216
|
+
let targetPath;
|
|
217
|
+
for (const configPath of configPaths) {
|
|
218
|
+
const instances = await listInstancesFromPath(this.name, configPath);
|
|
219
|
+
if (instances.some((instance) => instance.name === name)) {
|
|
220
|
+
targetPath = configPath;
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (!targetPath)
|
|
225
|
+
throw new Error(`Instance "${name}" not found`);
|
|
226
|
+
await setActiveInstance(name, { path: targetPath });
|
|
227
|
+
for (const configPath of configPaths) {
|
|
228
|
+
if (configPath === targetPath)
|
|
229
|
+
continue;
|
|
230
|
+
const result = await loadFullDwJson({ path: configPath });
|
|
231
|
+
if (!result)
|
|
232
|
+
continue;
|
|
233
|
+
let changed = false;
|
|
234
|
+
if (result.config.active === true) {
|
|
235
|
+
result.config.active = false;
|
|
236
|
+
changed = true;
|
|
237
|
+
}
|
|
238
|
+
for (const instance of result.config.configs ?? []) {
|
|
239
|
+
if (instance.active === true) {
|
|
240
|
+
instance.active = false;
|
|
241
|
+
changed = true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (changed)
|
|
245
|
+
await saveDwJson(result.config, configPath);
|
|
246
|
+
}
|
|
127
247
|
}
|
|
128
248
|
}
|
|
129
249
|
//# sourceMappingURL=dw-json-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dw-json-source.js","sourceRoot":"","sources":["../../../../src/config/sources/dw-json-source.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dw-json-source.js","sourceRoot":"","sources":["../../../../src/config/sources/dw-json-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ConfigSource, ConfigLoadResult, ResolveConfigOptions } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Configuration source that reads
|
|
3
|
+
* Configuration source that reads CLI configuration environment variables.
|
|
4
4
|
*
|
|
5
5
|
* Priority -10 (higher than dw.json at 0), matching CLI behavior where
|
|
6
6
|
* env vars override file-based config.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getPopulatedFields } from '../mapping.js';
|
|
2
2
|
import { getLogger } from '../../logging/logger.js';
|
|
3
3
|
/**
|
|
4
|
-
* Mapping of
|
|
4
|
+
* Mapping of CLI environment variable names and aliases to NormalizedConfig fields.
|
|
5
5
|
*/
|
|
6
6
|
const ENV_VAR_MAP = {
|
|
7
7
|
// sfcc-ci legacy aliases — listed first so canonical names below take precedence
|
|
@@ -22,6 +22,9 @@ const ENV_VAR_MAP = {
|
|
|
22
22
|
SFCC_SHORT_CODE: 'shortCode',
|
|
23
23
|
SFCC_SHORTCODE: 'shortCode',
|
|
24
24
|
SFCC_TENANT_ID: 'tenantId',
|
|
25
|
+
SFCC_SLAS_CLIENT_ID: 'slasClientId',
|
|
26
|
+
SFCC_SLAS_CLIENT_SECRET: 'slasClientSecret',
|
|
27
|
+
SFCC_SITE_ID: 'siteId',
|
|
25
28
|
SFCC_CARTRIDGES: 'cartridges',
|
|
26
29
|
SFCC_IMPORT_SET_EXCLUDE: 'importSetExclude',
|
|
27
30
|
SFCC_CATALOGS: 'catalogs',
|
|
@@ -31,19 +34,21 @@ const ENV_VAR_MAP = {
|
|
|
31
34
|
SFCC_AUTH_METHODS: 'authMethods',
|
|
32
35
|
SFCC_ACCOUNT_MANAGER_HOST: 'accountManagerHost',
|
|
33
36
|
SFCC_SANDBOX_API_HOST: 'sandboxApiHost',
|
|
37
|
+
SFCC_CIP_HOST: 'cipHost',
|
|
34
38
|
// JWT Bearer auth env vars
|
|
35
39
|
SFCC_JWT_CERT: 'jwtCertPath',
|
|
36
40
|
SFCC_JWT_KEY: 'jwtKeyPath',
|
|
37
41
|
SFCC_JWT_PASSPHRASE: 'jwtPassphrase',
|
|
38
|
-
// MRT
|
|
39
|
-
MRT_API_KEY: 'mrtApiKey',
|
|
42
|
+
// MRT aliases — listed from lowest to highest precedence to match MrtCommand flags
|
|
40
43
|
SFCC_MRT_API_KEY: 'mrtApiKey',
|
|
41
|
-
|
|
44
|
+
MRT_API_KEY: 'mrtApiKey',
|
|
42
45
|
SFCC_MRT_PROJECT: 'mrtProject',
|
|
43
|
-
|
|
46
|
+
MRT_PROJECT: 'mrtProject',
|
|
47
|
+
MRT_TARGET: 'mrtEnvironment',
|
|
44
48
|
SFCC_MRT_ENVIRONMENT: 'mrtEnvironment',
|
|
45
|
-
|
|
49
|
+
MRT_ENVIRONMENT: 'mrtEnvironment',
|
|
46
50
|
SFCC_MRT_CLOUD_ORIGIN: 'mrtOrigin',
|
|
51
|
+
MRT_CLOUD_ORIGIN: 'mrtOrigin',
|
|
47
52
|
};
|
|
48
53
|
/** Fields that should be parsed as comma-separated arrays. */
|
|
49
54
|
const ARRAY_FIELDS = new Set([
|
|
@@ -59,7 +64,7 @@ const ARRAY_FIELDS = new Set([
|
|
|
59
64
|
/** Fields that should be parsed as booleans. */
|
|
60
65
|
const BOOLEAN_FIELDS = new Set(['selfSigned']);
|
|
61
66
|
/**
|
|
62
|
-
* Configuration source that reads
|
|
67
|
+
* Configuration source that reads CLI configuration environment variables.
|
|
63
68
|
*
|
|
64
69
|
* Priority -10 (higher than dw.json at 0), matching CLI behavior where
|
|
65
70
|
* env vars override file-based config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-source.js","sourceRoot":"","sources":["../../../../src/config/sources/env-source.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,GAA2C;IAC1D,iFAAiF;IACjF,oBAAoB,EAAE,UAAU;IAChC,wBAAwB,EAAE,cAAc;IACxC,cAAc,EAAE,oBAAoB;IACpC,WAAW,EAAE,UAAU;IACvB,kBAAkB,EAAE,gBAAgB;IACpC,iBAAiB,EAAE,aAAa;IAChC,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,aAAa;IAC/B,2BAA2B,EAAE,uBAAuB;IACpD,eAAe,EAAE,YAAY;IAC7B,cAAc,EAAE,UAAU;IAC1B,kBAAkB,EAAE,cAAc;IAClC,iBAAiB,EAAE,QAAQ;IAC3B,eAAe,EAAE,WAAW;IAC5B,cAAc,EAAE,WAAW;IAC3B,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,YAAY;IAC7B,uBAAuB,EAAE,kBAAkB;IAC3C,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,YAAY;IAC9B,oBAAoB,EAAE,gBAAgB;IACtC,iBAAiB,EAAE,aAAa;IAChC,yBAAyB,EAAE,oBAAoB;IAC/C,qBAAqB,EAAE,gBAAgB;IACvC,2BAA2B;IAC3B,aAAa,EAAE,aAAa;IAC5B,YAAY,EAAE,YAAY;IAC1B,mBAAmB,EAAE,eAAe;IACpC,
|
|
1
|
+
{"version":3,"file":"env-source.js","sourceRoot":"","sources":["../../../../src/config/sources/env-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,12 @@ import { getPopulatedFields, normalizeConfigKeys } from '../mapping.js';
|
|
|
17
17
|
import { getLogger } from '../../logging/logger.js';
|
|
18
18
|
/**
|
|
19
19
|
* Fields allowed to be configured in package.json.
|
|
20
|
-
* These are non-sensitive,
|
|
20
|
+
* These are non-sensitive, project-level configuration defaults.
|
|
21
21
|
*/
|
|
22
22
|
const ALLOWED_FIELDS = [
|
|
23
23
|
'shortCode',
|
|
24
24
|
'clientId',
|
|
25
|
+
'siteId',
|
|
25
26
|
'contentLibrary',
|
|
26
27
|
'libraries',
|
|
27
28
|
'assetQuery',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json-source.js","sourceRoot":"","sources":["../../../../src/config/sources/package-json-source.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;GAOG;AACH,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAElD;;;GAGG;AACH,MAAM,cAAc,GAA+B;IACjD,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,OAAO;IACP,kBAAkB;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"package-json-source.js","sourceRoot":"","sources":["../../../../src/config/sources/package-json-source.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;GAOG;AACH,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAElD;;;GAGG;AACH,MAAM,cAAc,GAA+B;IACjD,WAAW;IACX,UAAU;IACV,QAAQ;IACR,gBAAgB;IAChB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,OAAO;IACP,kBAAkB;CACnB,CAAC;AAqBF;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,mBAAmB,CAAC;IAC3B,QAAQ,GAAG,IAAI,CAAC;IAEzB,KAAK,CAAC,IAAI,CAAC,OAA6B;QACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,qDAAqD;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACxF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE7D,MAAM,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAC,EAAE,+CAA+C,CAAC,CAAC;QAE3F,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiC,CAAC;YAExE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAC/D,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,sEAAsE;YACtE,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAA8B,CAAC,CAAC;YAClF,MAAM,MAAM,GAAqB,EAAE,CAAC;YAEpC,2BAA2B;YAC3B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAkC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBACrD,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAA6B,CAAC,CACjE,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CACT,EAAC,gBAAgB,EAAC,EAClB,4FAA4F,CAC7F,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;gBACpF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAC,EAAE,mCAAmC,CAAC,CAAC;YAEvF,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+DAA+D;YAC/D,iEAAiE;YACjE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAC,EAAE,kDAAkD,CAAC,CAAC;YAC9G,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -166,18 +166,31 @@ export interface ConfigWarning {
|
|
|
166
166
|
/** Additional details about the warning */
|
|
167
167
|
details?: Record<string, unknown>;
|
|
168
168
|
}
|
|
169
|
+
/** A dw.json file participating in the effective instance catalog. */
|
|
170
|
+
export interface ConfigCatalogFile {
|
|
171
|
+
/** File path. */
|
|
172
|
+
location: string;
|
|
173
|
+
/** Whether this is the primary project file or the shared global file. */
|
|
174
|
+
scope: 'global' | 'primary';
|
|
175
|
+
/** Whether this file supplied the selected instance. */
|
|
176
|
+
selected: boolean;
|
|
177
|
+
}
|
|
169
178
|
/**
|
|
170
|
-
* Information about a configuration source that
|
|
179
|
+
* Information about a configuration source that participated in resolution.
|
|
171
180
|
*/
|
|
172
181
|
export interface ConfigSourceInfo {
|
|
173
182
|
/** Human-readable name of the source */
|
|
174
183
|
name: string;
|
|
184
|
+
/** Logical scope of the source when it differs from the primary project configuration. */
|
|
185
|
+
scope?: 'global';
|
|
175
186
|
/** Location of the source (file path, keychain entry, URL, etc.) */
|
|
176
187
|
location?: string;
|
|
177
188
|
/** All fields that this source provided values for */
|
|
178
189
|
fields: (keyof NormalizedConfig)[];
|
|
179
190
|
/** Fields that were not used because a higher priority source already provided them */
|
|
180
191
|
fieldsIgnored?: (keyof NormalizedConfig)[];
|
|
192
|
+
/** dw.json files available to this source for named/default instance selection. */
|
|
193
|
+
instanceCatalog?: ConfigCatalogFile[];
|
|
181
194
|
}
|
|
182
195
|
/**
|
|
183
196
|
* Result of configuration resolution.
|
|
@@ -187,7 +200,7 @@ export interface ConfigResolutionResult {
|
|
|
187
200
|
config: NormalizedConfig;
|
|
188
201
|
/** Warnings generated during resolution */
|
|
189
202
|
warnings: ConfigWarning[];
|
|
190
|
-
/** Information about
|
|
203
|
+
/** Information about sources that contributed values or instance-catalog context */
|
|
191
204
|
sources: ConfigSourceInfo[];
|
|
192
205
|
}
|
|
193
206
|
/**
|
|
@@ -198,6 +211,8 @@ export interface ResolveConfigOptions {
|
|
|
198
211
|
instance?: string;
|
|
199
212
|
/** Explicit path to config file (defaults to auto-discover) */
|
|
200
213
|
configPath?: string;
|
|
214
|
+
/** Global instance-catalog fallback used after an explicit or project-local dw.json */
|
|
215
|
+
defaultConfigPath?: string;
|
|
201
216
|
/** Starting directory for config file search */
|
|
202
217
|
projectDirectory?: string;
|
|
203
218
|
/** @deprecated Use projectDirectory instead */
|
|
@@ -237,6 +252,10 @@ export interface ResolveConfigOptions {
|
|
|
237
252
|
export interface ConfigLoadResult {
|
|
238
253
|
/** The loaded configuration */
|
|
239
254
|
config: NormalizedConfig;
|
|
255
|
+
/** Logical scope of the source when it differs from the primary project configuration. */
|
|
256
|
+
scope?: 'global';
|
|
257
|
+
/** dw.json files available for named/default instance selection. */
|
|
258
|
+
instanceCatalog?: ConfigCatalogFile[];
|
|
240
259
|
/**
|
|
241
260
|
* Location of the source (for diagnostics).
|
|
242
261
|
* May be a file path, keychain entry, URL, or other identifier.
|
|
@@ -400,7 +419,7 @@ export interface ResolvedB2CConfig {
|
|
|
400
419
|
readonly values: NormalizedConfig;
|
|
401
420
|
/** Warnings generated during resolution */
|
|
402
421
|
readonly warnings: ConfigWarning[];
|
|
403
|
-
/** Information about
|
|
422
|
+
/** Information about sources that contributed values or instance-catalog context */
|
|
404
423
|
readonly sources: ConfigSourceInfo[];
|
|
405
424
|
/**
|
|
406
425
|
* Check if B2C instance configuration is available.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/b2c-tooling-sdk",
|
|
3
3
|
"description": "Core tooling library for Salesforce B2C Commerce CLI",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.24.0",
|
|
5
5
|
"author": "Charles Lavery",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": "SalesforceCommerceCloud/b2c-developer-tooling",
|
|
@@ -266,6 +266,7 @@
|
|
|
266
266
|
"generate:guides-index": "tsx scripts/generate-guides-index.ts",
|
|
267
267
|
"check:guides-links": "tsx scripts/check-guides-links.ts",
|
|
268
268
|
"generate:tooling-index": "tsx scripts/generate-tooling-index.ts",
|
|
269
|
+
"check:tooling-index": "tsx scripts/generate-tooling-index.ts --check",
|
|
269
270
|
"generate:help-corpus": "tsx scripts/generate-help-corpus.ts",
|
|
270
271
|
"enrich:docs": "tsx scripts/enrich-docs.ts"
|
|
271
272
|
}
|