@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
61 lines • 4.32 kB
JavaScript
;
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=