@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.
@@ -8,9 +8,107 @@
8
8
  *
9
9
  * @internal This module is internal to the SDK. Use ConfigResolver instead.
10
10
  */
11
- import { loadDwJson, loadFullDwJson, addInstance, removeInstance, setActiveInstance } from '../dw-json.js';
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 result = await loadDwJson({
35
- instance: options.instance,
36
- path: options.configPath,
37
- projectDirectory: options.projectDirectory ?? options.workingDirectory,
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
- logger.trace({ location: result.path, fields }, '[DwJsonSource] Loaded config');
45
- return { config, location: result.path };
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
- let result;
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 { config, path: dwJsonPath } = result;
73
- // Add root config if it has a name
74
- if (config.name) {
75
- instances.push({
76
- name: config.name,
77
- hostname: config.hostname,
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.configPath,
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
- await removeInstance(name, {
115
- path: options?.configPath,
116
- projectDirectory: options?.projectDirectory ?? options?.workingDirectory,
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
- await setActiveInstance(name, {
124
- path: options?.configPath,
125
- projectDirectory: options?.projectDirectory ?? options?.workingDirectory,
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":"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"}
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 SFCC_* environment variables.
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 SFCC_* environment variable names to NormalizedConfig field names.
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 env vars — MRT_* listed first as fallback, SFCC_MRT_* listed second to take precedence
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
- MRT_PROJECT: 'mrtProject',
44
+ MRT_API_KEY: 'mrtApiKey',
42
45
  SFCC_MRT_PROJECT: 'mrtProject',
43
- MRT_ENVIRONMENT: 'mrtEnvironment',
46
+ MRT_PROJECT: 'mrtProject',
47
+ MRT_TARGET: 'mrtEnvironment',
44
48
  SFCC_MRT_ENVIRONMENT: 'mrtEnvironment',
45
- MRT_CLOUD_ORIGIN: 'mrtOrigin',
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 SFCC_* environment variables.
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":"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"}
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, non-instance-specific configuration.
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":"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"}
1
+ {"version":3,"file":"package-json-source.js","sourceRoot":"","sources":["../../../../src/config/sources/package-json-source.ts"],"names":[],"mappings":"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"}
@@ -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 contributed to resolution.
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 which sources contributed to the config */
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 which sources contributed to the config */
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.22.0",
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
  }