Salesforce metadata download library. Pulls metadata from an org in a format that can be used with apex-ls based tools to perform off-line semantics analysis of Apex code.
To start a download use update() from Gulp:
async update(
workspacePath: string,
logger: Logger,
connection: JSConnection | null,
namespaces: string[],
partialLoad: boolean
): Promise<void>
The workspacePath must be the directory where your sfdx-project.json file is located. The metadata is downloaded into a '.apexlink/gulp' directory relative to this.
If you have an open jsforce connection you can pass that, if you pass null a new connection will be created.
Metadata is download independently for each passed namespace. For orgs without a namespace you can use the pseudo namespace unmanaged. If partialLoad is false, existing downloaded metadata for namespaces not passed to update() will be removed automatically.
The library also supplies some helper functions that you may find useful.
To obtain the org's default namespace:
async getOrgNamespace(
workspacePath: string,
connection: JSConnection | null
): Promise<string | null | undefined>
This will return string | null on success or undefined if the Organization table can not be queried.
To obtain the namespace & package description for packages with namespaces on the org:
async getOrgPackageNamespaces(
workspacePath: string,
connection: JSConnection | null
): Promise<NamespaceInfo[]>
This project uses the pnpm
package manager.
pnpm install
pnpm build
To run unit tests:
pnpm test
To test bundling using webpack:
pnpm test:pack
node test-bundle/bundle.js
This should execute without error.
Execute manual test script with ts-node
using the run script:
# Run gulp on a project with an existing default org
pnpm run:script -- ./src/scripts/main.ts <workspaceDir> <namespace | unmanaged>
All the source code included uses a 3-clause BSD license, see LICENSE for details.