---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../../modules.md) / [config](../index.md) / ConfigSource

# Interface: ConfigSource

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:401](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L401)

A configuration source that can contribute config values.

Implement this interface to create custom configuration sources.
Sources are called in order, and later sources can override earlier ones.

## Example

```typescript
import type { ConfigSource, ConfigLoadResult, ResolveConfigOptions } from '@salesforce/b2c-tooling-sdk/config';

class MyCustomSource implements ConfigSource {
  name = 'my-custom-source';

  async load(options: ResolveConfigOptions): Promise<ConfigLoadResult | undefined> {
    // Load config from your custom source (sync return values also work)
    return { config: { hostname: 'example.com' }, location: '/path/to/config' };
  }
}
```

## Properties

### credentialFields?

> `optional` **credentialFields**: keyof [`NormalizedConfig`](NormalizedConfig.md)[]

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:461](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L461)

Fields this source can securely store (e.g., ['password', 'clientSecret']).

***

### name

> **name**: `string`

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:403](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L403)

Human-readable name for diagnostics

***

### priority?

> `optional` **priority**: `number`

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:416](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L416)

Priority for source ordering. Lower numbers = higher priority.

Recommended ranges:
- < 0: Before built-in sources (override defaults)
- 0: Built-in sources (DwJsonSource, MobifySource)
- 1-999: After built-in sources (fill gaps)
- 1000: Lowest priority (PackageJsonSource)

#### Default

```ts
0
```

## Methods

### createInstance()?

> `optional` **createInstance**(`options`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:440](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L440)

Create a new instance in this source.

#### Parameters

##### options

[`CreateInstanceOptions`](CreateInstanceOptions.md) & [`ResolveConfigOptions`](ResolveConfigOptions.md)

Creation options including name and config

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

***

### listInstances()?

> `optional` **listInstances**(`options?`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<[`InstanceInfo`](InstanceInfo.md)[]\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:434](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L434)

List all instances from this source.

#### Parameters

##### options?

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<[`InstanceInfo`](InstanceInfo.md)[]\>

Array of instance info objects. May return synchronously or as a Promise.

***

### load()

> **load**(`options`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<[`ConfigLoadResult`](ConfigLoadResult.md) \| `undefined`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:425](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L425)

Load configuration from this source.

#### Parameters

##### options

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<[`ConfigLoadResult`](ConfigLoadResult.md) \| `undefined`\>

Config and location from this source, or undefined if source not available.
  May return synchronously or as a Promise.

***

### removeCredential()?

> `optional` **removeCredential**(`instanceName`, `field`, `options?`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:483](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L483)

Remove a credential for an instance.

#### Parameters

##### instanceName

`string`

Instance name

##### field

keyof [`NormalizedConfig`](NormalizedConfig.md)

Config field to remove

##### options?

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

***

### removeInstance()?

> `optional` **removeInstance**(`name`, `options?`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:447](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L447)

Remove an instance from this source.

#### Parameters

##### name

`string`

Instance name to remove

##### options?

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

***

### setActiveInstance()?

> `optional` **setActiveInstance**(`name`, `options?`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:454](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L454)

Set an instance as active.

#### Parameters

##### name

`string`

Instance name to set as active

##### options?

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

***

### storeCredential()?

> `optional` **storeCredential**(`instanceName`, `field`, `value`, `options?`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:470](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L470)

Store a credential value for an instance.

#### Parameters

##### instanceName

`string`

Instance name

##### field

keyof [`NormalizedConfig`](NormalizedConfig.md)

Config field to store

##### value

`string`

Value to store

##### options?

[`ResolveConfigOptions`](ResolveConfigOptions.md)

Resolution options

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<`void`\>

***

### updateConfig()?

> `optional` **updateConfig**(`patch`, `options`): [`MaybePromise`](../type-aliases/MaybePromise.md)\<[`ConfigUpdateResult`](ConfigUpdateResult.md)\>

Defined in: [packages/b2c-tooling-sdk/src/config/types.ts:508](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/b099fb909260c5c00c90ca9da612a7f50c1328d4/packages/b2c-tooling-sdk/src/config/types.ts#L508)

Persist field values to the exact entry [load](#load) returns for the same
options (for example the selected dw.json instance). An `undefined` value
removes the field. Implement only for sources the user owns and can edit;
throw when the target is ambiguous or a value can't be represented.

`b2c setup set` calls this on the source that supplies the field, or for a
field nothing sets, on the source that supplied the instance (its
`instanceName`, else `hostname`). Sources without this method are treated
as read-only, except credential stores, which receive
[storeCredential](#storecredential) / [removeCredential](#removecredential) for their
[credentialFields](#credentialfields).

#### Parameters

##### patch

`Partial`\<[`NormalizedConfig`](NormalizedConfig.md)\>

Fields to set, or `undefined` to remove

##### options

[`ResolveConfigOptions`](ResolveConfigOptions.md)

The options this source was loaded with

#### Returns

[`MaybePromise`](../type-aliases/MaybePromise.md)\<[`ConfigUpdateResult`](ConfigUpdateResult.md)\>

Where the values were written
