Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Salesforce ServicesNew to Visual Studio Code? Get it now.
Salesforce Services

Salesforce Services

Salesforce

salesforce.com
|
153,893 installs
| (0) | Free
a shared services extension for other extensions to use
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Salesforce Services Extension

This extension provides core services for Salesforce development in VS Code.

Features

  • Service provider functionality
  • Core utilities for Salesforce development
  • Integration with Salesforce CLI

Requirements

  • VS Code 1.90.0 or higher
  • Salesforce CLI

Installation

This extension is part of the Salesforce Extensions for VS Code package.

Usage

This extension provides services used by other Salesforce extensions and is not directly user-facing.

Usage Example: Consuming Services from Other Extensions

Important: Do not directly import from salesforcedx-vscode-services. Instead, access services through the extension API.

Step 1: Create an Extension Provider

Create a file src/services/extensionProvider.ts in your extension:

import * as Context from 'effect/Context';
import * as Data from 'effect/Data';
import * as Effect from 'effect/Effect';
import * as Layer from 'effect/Layer';
import type { SalesforceVSCodeServicesApi } from 'salesforcedx-vscode-services';
import * as vscode from 'vscode';

export class ServicesExtensionNotFoundError extends Data.TaggedError('ServicesExtensionNotFoundError') {}
export class InvalidServicesApiError extends Data.TaggedError('InvalidServicesApiError')<{ cause?: Error }> {}

export type ExtensionProviderService = {
  readonly getServicesApi: Effect.Effect<
    SalesforceVSCodeServicesApi,
    ServicesExtensionNotFoundError | InvalidServicesApiError,
    never
  >;
};

export const ExtensionProviderService = Context.GenericTag<ExtensionProviderService>('ExtensionProviderService');

const getServicesApi = Effect.sync(() =>
  vscode.extensions.getExtension<SalesforceVSCodeServicesApi>('salesforce.salesforcedx-vscode-services')
).pipe(
  Effect.flatMap(ext => (ext ? Effect.succeed(ext) : Effect.fail(new ServicesExtensionNotFoundError()))),
  Effect.flatMap(ext =>
    ext.isActive
      ? Effect.sync(() => ext.exports)
      : Effect.tryPromise({
          try: () => ext.activate(),
          catch: e => new InvalidServicesApiError(e instanceof Error ? { cause: e } : { cause: new Error(String(e)) })
        })
  )
);

const ExtensionProviderServiceLive = Layer.effect(
  ExtensionProviderService,
  Effect.sync(() => ({
    getServicesApi
  }))
);

export const AllServicesLayer = Layer.unwrapEffect(
  Effect.gen(function* () {
    const extensionProvider = yield* ExtensionProviderService;
    const api = yield* extensionProvider.getServicesApi;
    return Layer.mergeAll(
      ExtensionProviderServiceLive,
      api.services.ConfigService.Default,
      api.services.WorkspaceService.Default // Required dependency of ConfigService
      // Add other services and their dependencies as needed
    );
  }).pipe(Effect.provide(ExtensionProviderServiceLive))
);

Step 2: Use Services in Your Effect Programs

import * as Effect from 'effect/Effect';
import { AllServicesLayer, ExtensionProviderService } from './services/extensionProvider';

const myProgram = Effect.gen(function* () {
  const api = yield* (yield* ExtensionProviderService).getServicesApi;
  const configService = yield* api.services.ConfigService;
  const configAggregator = yield* configService.getConfigAggregator;
  return configAggregator;
});

Effect.runPromise(myProgram.pipe(Effect.provide(AllServicesLayer)));

See packages/salesforcedx-vscode-metadata/src/services/extensionProvider.ts for a complete example.

Contributing

Please see the contributing guide for details on how to contribute to this project.

License

BSD 3-Clause License

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft