@simplysf/simply-community-core
v0.2.8
Published
Community publish/deploy/domain-verification logic and site-file discovery — the library layer behind @simplysf/simply-community, published separately for direct consumption (e.g. editor tooling, CI scripts) without the CLI framework
Readme
@simplysf/simply-community-core
Community publish/deploy/domain-verification logic and site-file discovery. This is not a Salesforce CLI plugin — it's the library layer behind @simplysf/simply-community's publish/URL commands, published separately so it can be imported directly by anything that wants the same logic (an editor extension, a CI job, a script) without pulling in the CLI framework.
Install
npm install @simplysf/simply-community-coreRequires Node.js >=22 and either "type": "module" or a dynamic import() — this package ships ESM only.
API
Everything below is exported from the package root. Removing or renaming an export is a breaking change; see src/index.ts.
| Export | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| publishCommunity(options) | Triggers a community publish via the Connect REST API and polls until it completes. |
| checkPublishStatus(connection, jobId) | Builds the PollingClient-compatible poll function publishCommunity uses. |
| deployChangedFiles(options) | Deploys a specific file list and polls until the deploy reaches a terminal state. |
| retrieveCustomSite(connection, site, outputDirectory) | Retrieves a single CustomSite component by name. |
| resolveSearchRoots(directory?, projectDir?) | Resolves the root directories a site/network lookup should search under. |
| resolveRetrieveDestination(directory?, projectDir?) | Resolves the single directory a retrieve should write into. |
| resolveSiteFile(site, roots) | Finds the sites/<site>.site-meta.xml file for a CustomSite API name. |
| resolveNetworkFile(site, roots) | Finds the networks/*.network-meta.xml file whose <site> element names a CustomSite. |
| patchCustomSiteXml(xml, options) | Pure function: replaces a CustomSite metadata document's custom URLs with exactly one. |
| patchNetworkXml(xml, pathPrefix) | Pure function: patches a Network metadata document's urlPathPrefix. |
| readNetworkSiteName(xml) | Pure function: reads a Network metadata document's <site> element. |
| verifyDomain(connection, domain) | Checks whether a custom domain is registered in the target org, and what it's already bound to. |
| PublishCommunityOptions, DeployChangedFilesOptions, DeployChangedFilesResult, DeployComponentFailure, PatchCustomSiteXmlOptions, PatchCustomSiteXmlResult, DomainCheckStatus, DomainCheckResult | Option and result types for publishCommunity, deployChangedFiles, patchCustomSiteXml, and verifyDomain. |
import { publishCommunity } from '@simplysf/simply-community-core';
const result = await publishCommunity({ connection, networkId: '0DM000000000001', wait: 10 });import { resolveSearchRoots, resolveSiteFile } from '@simplysf/simply-community-core';
const roots = await resolveSearchRoots(undefined, process.cwd());
const siteFile = await resolveSiteFile('MySite', roots);import { patchCustomSiteXml } from '@simplysf/simply-community-core';
const currentXml = await fs.readFile(siteFile, 'utf-8');
const { xml, previousDomains } = patchCustomSiteXml(currentXml, { domain: 'my.example.com', primary: true });import { verifyDomain } from '@simplysf/simply-community-core';
const check = await verifyDomain(connection, 'my.example.com');Issues
Please report any issues at https://github.com/SimplySF/simply-plugins-core/issues
Contributing
This package is part of the @simplysf/simply monorepo. See CONTRIBUTING.md for what's specific to this package, and the repo's root CONTRIBUTING.md for repo structure, setup, commit conventions, and how to submit a pull request. Please also read our Code of Conduct.
License
Licensed under the Apache-2.0 license.
