"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pause = void 0; const content = `--[[ Pauses or resumes a queue globably. Input: KEYS[1] 'wait' or 'paused'' KEYS[2] 'paused' or 'wait' KEYS[3] 'meta' KEYS[4] 'prioritized' KEYS[5] events stream key KEYS[6] 'delayed' KEYS|7] 'marker' ARGV[1] 'paused' or 'resumed' Event: publish paused or resumed event. ]] local rcall = redis.call -- Includes --[[ Add delay marker if needed. ]] -- Includes --[[ Function to return the next delayed job timestamp. ]] local function getNextDelayedTimestamp(delayedKey) local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES") if #result then local nextTimestamp = tonumber(result[2]) if nextTimestamp ~= nil then return nextTimestamp / 0x1000 end end end local function addDelayMarkerIfNeeded(markerKey, delayedKey) local nextTimestamp = getNextDelayedTimestamp(delayedKey) if nextTimestamp ~= nil then -- Replace the score of the marker with the newest known -- next timestamp. rcall("ZADD", markerKey, nextTimestamp, "1") end end local markerKey = KEYS[7] local hasJobs = rcall("EXISTS", KEYS[1]) == 1 --TODO: check this logic to be reused when changing a delay if hasJobs then rcall("RENAME", KEYS[1], KEYS[2]) end if ARGV[1] == "paused" then rcall("HSET", KEYS[3], "paused", 1) rcall("DEL", markerKey) else rcall("HDEL", KEYS[3], "paused") if hasJobs or rcall("ZCARD", KEYS[4]) > 0 then -- Add marker if there are waiting or priority jobs rcall("ZADD", markerKey, 0, "0") else addDelayMarkerIfNeeded(markerKey, KEYS[6]) end end rcall("XADD", KEYS[5], "*", "event", ARGV[1]); `; exports.pause = { name: 'pause', content, keys: 7, }; //# sourceMappingURL=pause-7.js.map