@salesforce/b2c-tooling-sdk / config
config
Configuration loading utilities.
This module provides utilities for loading B2C Commerce configuration. The preferred high-level API is resolveConfig, which returns a rich configuration object with factory methods.
Quick Start
import { resolveConfig } from '@salesforce/b2c-tooling-sdk/config';
const config = resolveConfig({
hostname: process.env.SFCC_SERVER,
clientId: process.env.SFCC_CLIENT_ID,
mrtApiKey: process.env.MRT_API_KEY,
});
// Check what's available and create objects
if (config.hasB2CInstanceConfig()) {
const instance = config.createB2CInstance();
await instance.webdav.propfind('Cartridges');
}
if (config.hasMrtConfig()) {
const mrtClient = config.createMrtClient({ project: 'my-project' });
}Resolution Priority
Configuration is resolved with the following precedence (highest to lowest):
- Explicit overrides - Values passed to
resolve(),createInstance(), etc. - Configuration sources - dw.json, ~/.mobify (in order)
Later sources only fill in missing values—they do not override values from higher-priority sources.
Hostname Mismatch Protection
The configuration system includes safety protection against accidentally using credentials from one instance with a different hostname. When you explicitly specify a hostname that differs from the dw.json hostname:
- The entire base configuration from dw.json is ignored
- Only your explicit overrides are used
- A warning is included in the resolution result
This prevents credential leakage between different B2C instances.
Default Configuration Sources
The default sources loaded by createConfigResolver are:
- dw.json - Project configuration file, searched upward from cwd
- ~/.mobify - Home directory file for MRT API key
Custom Configuration Sources
Implement the ConfigSource interface to create custom sources:
import { ConfigResolver, type ConfigSource } from '@salesforce/b2c-tooling-sdk/config';
class MySource implements ConfigSource {
name = 'my-source';
load(options) { return { hostname: 'custom.example.com' }; }
}
const resolver = new ConfigResolver([new MySource()]);Lower-Level APIs
For advanced use cases, you can use the lower-level dw.json loading functions:
import { loadDwJson, findDwJson } from '@salesforce/b2c-tooling-sdk/config';
const dwJsonPath = findDwJson();
const config = loadDwJson({ path: dwJsonPath, instance: 'staging' });Classes
Interfaces
- ConfigResolutionResult
- ConfigSource
- ConfigSourceInfo
- ConfigWarning
- CreateMrtClientOptions
- CreateOAuthOptions
- DwJsonConfig
- DwJsonMultiConfig
- LoadDwJsonOptions
- MergeConfigOptions
- MergeConfigResult
- NormalizedConfig
- ResolveConfigOptions
- ResolvedB2CConfig
Type Aliases
Functions
- buildAuthConfigFromNormalized
- createConfigResolver
- createInstanceFromConfig
- getPopulatedFields
- loadDwJson
- mapDwJsonToNormalizedConfig
- mergeConfigsWithProtection
- resolveConfig
References
findDwJson
Re-exports findDwJson