sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
34 lines (25 loc) • 937 B
text/typescript
import {isMainThread, parentPort, workerData as _workerData} from 'node:worker_threads'
import {extractCreateWorkspaceManifest} from '../../manifest/extractWorkspaceManifest'
import {getStudioWorkspaces} from '../util/getStudioWorkspaces'
import {mockBrowserEnvironment} from '../util/mockBrowserEnvironment'
/** @internal */
export interface ExtractManifestWorkerData {
workDir: string
}
async function main() {
if (isMainThread || !parentPort) {
throw new Error('This module must be run as a worker thread')
}
const opts = _workerData as ExtractManifestWorkerData
const cleanup = mockBrowserEnvironment(opts.workDir)
try {
const workspaces = await getStudioWorkspaces({basePath: opts.workDir})
for (const workspace of workspaces) {
parentPort?.postMessage(extractCreateWorkspaceManifest(workspace))
}
} finally {
parentPort?.close()
cleanup()
}
}
main().then(() => process.exit())