UNPKG

@temporalio/common

Version:

Common library for code that's used across the Client, Worker, and/or Workflow

64 lines 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extstoreStoreOptions = extstoreStoreOptions; exports.extstoreInboundOptions = extstoreInboundOptions; const errors_1 = require("../errors"); const external_storage_runner_1 = require("./external-storage-runner"); const extstore_helpers_1 = require("./extstore-helpers"); /** * @internal * @experimental */ function extstoreStoreOptions(externalStorage, { initialTarget, deriveContext, limit, abortSignal } = {}) { const runner = new external_storage_runner_1.ExternalStorageRunner(externalStorage); return { transformPayloads: (payloads, target, signal) => runner.store(payloads, { target, abortSignal: signal }), transformPayload: (payload, target, signal) => runner.store([payload], { target, abortSignal: signal }).then((stored) => stored[0]), deriveContext, initialContext: initialTarget, // Search attributes must keep their literal values so the server can index/search on them. skipSearchAttributes: true, limit, abortSignal, }; } function extstoreRetrieveOptions(externalStorage, { limit, abortSignal } = {}) { const runner = new external_storage_runner_1.ExternalStorageRunner(externalStorage); return { transformPayloads: (payloads, _context, signal) => runner.retrieve(payloads, { abortSignal: signal }), transformPayload: (payload, _context, signal) => runner.retrieve([payload], { abortSignal: signal }).then((retrieved) => retrieved[0]), skipSearchAttributes: true, limit, abortSignal, }; } /** * Detection-only inbound walk used when no {@link ExternalStorage} is configured: leaves every * payload untouched but throws {@link ExternalStorageNotConfiguredError} on the first reference * payload. */ function extstoreDetectReferencesOptions() { const assertNoReference = (payloads) => { if (payloads.some(extstore_helpers_1.isReferencePayload)) { throw new errors_1.ExternalStorageNotConfiguredError(); } return payloads; }; return { transformPayloads: (payloads) => Promise.resolve(assertNoReference(payloads)), transformPayload: (payload) => Promise.resolve(assertNoReference([payload])[0]), skipSearchAttributes: true, }; } /** * The inbound External Storage pass for a worker/client boundary: resolve reference payloads when * {@link ExternalStorage} is configured, otherwise fail loudly (via {@link extstoreDetectReferencesOptions}) * because nothing can resolve them. * * @internal * @experimental */ function extstoreInboundOptions(externalStorage) { return externalStorage ? extstoreRetrieveOptions(externalStorage) : extstoreDetectReferencesOptions(); } //# sourceMappingURL=external-storage-visitor.js.map