UNPKG

zephyr-agent

Version:
101 lines (100 loc) • 3.77 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.n = (module)=>{ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module; __webpack_require__.d(getter, { a: getter }); return getter; }; })(); (()=>{ __webpack_require__.d = (exports1, getters, values)=>{ var define = (defs, kind)=>{ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, [kind]: defs[key] }); }; define(getters, "get"); define(values, "value"); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { getStorageLockPath: ()=>getStorageLockPath, withStorageLock: ()=>withStorageLock }); const promises_namespaceObject = require("node:fs/promises"); const external_node_path_namespaceObject = require("node:path"); var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject); const proper_lockfile2_namespaceObject = require("@bybrave/proper-lockfile2"); const debug_js_namespaceObject = require("../logging/debug.js"); const external_storage_keys_js_namespaceObject = require("./storage-keys.js"); const external_storage_js_namespaceObject = require("./storage.js"); const STORAGE_LOCK_STALE_MS = 60000; const STORAGE_LOCK_RETRIES = { retries: 120, factor: 1.2, minTimeout: 25, maxTimeout: 500, randomize: true }; function getStorageLockPath(name) { return external_node_path_default().join(external_storage_keys_js_namespaceObject.ZE_LOCKS_PATH, name); } async function withStorageLock(name, action, options = {}) { const { staleMs = STORAGE_LOCK_STALE_MS, retries = STORAGE_LOCK_RETRIES, whenUnavailable = 'throw' } = options; let release; try { release = await acquireStorageLock(name, staleMs, retries); } catch (error) { if ('throw' === whenUnavailable) throw error; debug_js_namespaceObject.ze_log.misc(`Proceeding without the ${name} storage lock:`, error); } try { return await action(); } finally{ await release?.(); } } async function acquireStorageLock(name, staleMs, retries) { await external_storage_js_namespaceObject.storage; await (0, promises_namespaceObject.mkdir)(external_storage_keys_js_namespaceObject.ZE_LOCKS_PATH, { recursive: true, mode: 448 }); const lockPath = getStorageLockPath(name); await (await (0, promises_namespaceObject.open)(lockPath, 'a', 384)).close(); (0, external_storage_keys_js_namespaceObject.ensurePrivateFilePermissions)(lockPath); return (0, proper_lockfile2_namespaceObject.lock)(lockPath, { realpath: false, retries, stale: staleMs }); } exports.getStorageLockPath = __webpack_exports__.getStorageLockPath; exports.withStorageLock = __webpack_exports__.withStorageLock; for(var __rspack_i in __webpack_exports__)if (-1 === [ "getStorageLockPath", "withStorageLock" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true }); //# sourceMappingURL=storage-lock.js.map