Developer Preview — This project is in active development. APIs may change. Provide feedback
Skip to content

@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

typescript
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):

  1. Explicit overrides - Values passed to resolve(), createInstance(), etc.
  2. 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:

typescript
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:

typescript
import { loadDwJson, findDwJson } from '@salesforce/b2c-tooling-sdk/config';

const dwJsonPath = findDwJson();
const config = loadDwJson({ path: dwJsonPath, instance: 'staging' });

Classes

Interfaces

Type Aliases

Functions

References

findDwJson

Re-exports findDwJson

All rights reserved.