Package Exports
- @gatsby-cloud-pkg/merlin-synchronizer
- @gatsby-cloud-pkg/merlin-synchronizer/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@gatsby-cloud-pkg/merlin-synchronizer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Merlin Synchronizer
The synchronizer is responsible for pulling data from a Merlin ledger in GCS via the Gatsby Cloud Ledger API. It can sync all data in a ledger or just the data since the last time it synchronized.
It synchronizes Merlin ledger redux actions for a specific Gatsby Cloud site ID and a specific Gatsby site path local to the process calling synchronize. It handles its own caching via a provided cache function with get and set methods. It returns a promise that's resolved when all actions are synced or its determined that the synchronizer can be invoked in any follower when they need to sync data from Cloud.
Usage
import { synchronize } from "@gatsby-cloud-pkg/merlin-synchronizer"
const { ledgerExists } = await synchronize({
siteId, // should be a site ID for a Gatsby Cloud site
gatsbySitePath, // should be an absolute path to a Gatsby site on disk
cache, // needs cache.get and cache.set methods
// sourcingConfigurationId, <-- this is optional. a sourcingConfigurationId will be computed from the Gatsby site at the gatsbySitePath. But you can pass this directly too
handleAction: (action) => {
// do stuff with this action
// it's a Gatsby core redux action which was emitted in Merlin and stored in GCS
},
})import { computeSourcingConfigurationId } from "@gatsby-cloud-pkg/merlin-synchronizer"
// ...
const sourcingConfigurationId = await computeSourcingConfigurationId(
pathToGatsbySite
)Development
You must have previously written a ledger to disk. You can do this by running yarn:start:local in services/cloud-sourcerer in the mansion repo. You may need to set environment variables for the site you are using to generate the ledger.
- Run
dev-monolithwithyarn:start:localinservices/dev-monolith - Create an
envfile with theSITE_IDyou used to generate the ledger and the correct port for the API, e.g.GATSBY_CLOUD_DATALAYER=http://localhost:8201/get-ledger-entriesif not using8083 - Run
yarn run:localin themerlin-synchronizerdirectory.