UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

61 lines 4.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.acquireLockStep = exports.acquireLockStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const promises_1 = require("timers/promises"); exports.acquireLockStepId = "acquire-lock-step"; /** * This step acquires a lock for a given key. * * @example * const data = acquireLockStep({ * "key": "my-lock-key", * "ttl": 60 * }) */ exports.acquireLockStep = (0, workflows_sdk_1.createStep)(exports.acquireLockStepId, async (data, { container }) => { const keys = Array.isArray(data.key) ? data.key : (0, utils_1.isDefined)(data.key) ? [data.key] : []; if (!keys.length) { return new workflows_sdk_1.StepResponse(void 0); } const locking = container.resolve(utils_1.Modules.LOCKING); const retryInterval = data.retryInterval ?? 0.3; const tryUntil = Date.now() + (data.timeout ?? 0) * 1000; while (true) { try { await locking.acquire(data.key, { expire: data.ttl, ownerId: data.ownerId, provider: data.provider, }); break; } catch (e) { if (Date.now() >= tryUntil) { throw e; } } await (0, promises_1.setTimeout)(retryInterval * 1000); } return new workflows_sdk_1.StepResponse(void 0, { keys, ownerId: data.ownerId, provider: data.provider, }); }, async (data, { container }) => { if (!data?.keys?.length) { return; } const locking = container.resolve(utils_1.Modules.LOCKING); await locking.release(data.keys, { ownerId: data.ownerId, provider: data.provider, }); return new workflows_sdk_1.StepResponse(); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNxdWlyZS1sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9sb2NraW5nL2FjcXVpcmUtbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0Q7QUFDL0QscUVBQTZFO0FBQzdFLDhDQUE2QztBQWNoQyxRQUFBLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDO0FBQ3JEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsSUFBQSwwQkFBVSxFQUN2Qyx5QkFBaUIsRUFDakIsS0FBSyxFQUFFLElBQTBCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2xELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUc7UUFDVixDQUFDLENBQUMsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFVCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDO0lBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRXpELE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFDLENBQUM7WUFDSCxNQUFNO1FBQ1IsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBQSxxQkFBVSxFQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsSUFBSTtRQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxFQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkQsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtLQUN4QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksRUFBRSxDQUFDO0FBQzVCLENBQUMsQ0FDRixDQUFDIn0=