@lowerdeck/queue 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,14 @@
1
1
 
2
2
  $ microbundle
3
+ No name was provided for external module '@lowerdeck/delay' in output.globals – guessing 'delay'
4
+ No name was provided for external module '@lowerdeck/memo' in output.globals – guessing 'memo'
3
5
  No name was provided for external module '@lowerdeck/redis' in output.globals – guessing 'redis'
4
6
  Build "@lowerdeck/queue" to dist:
5
- 5.35 kB: index.cjs.gz
6
- 4.84 kB: index.cjs.br
7
- 4.91 kB: index.module.js.gz
8
- 4.44 kB: index.module.js.br
9
- 5.39 kB: index.module.js.gz
10
- 4.88 kB: index.module.js.br
11
- 5.42 kB: index.umd.js.gz
12
- 4.92 kB: index.umd.js.br
7
+ 1.78 kB: index.cjs.gz
8
+ 1.59 kB: index.cjs.br
9
+ 1240 B: index.module.js.gz
10
+ 1090 B: index.module.js.br
11
+ 1.77 kB: index.module.js.gz
12
+ 1.59 kB: index.module.js.br
13
+ 1.88 kB: index.umd.js.gz
14
+ 1.67 kB: index.umd.js.br
package/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # @lowerdeck/queue
2
+
3
+ ## 1.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix default entry point
8
+ - Updated dependencies
9
+ - @lowerdeck/delay@1.0.3
10
+ - @lowerdeck/redis@1.0.2
11
+ - @lowerdeck/memo@1.0.3
12
+
13
+ ## 1.0.1
14
+
15
+ ### Patch Changes
16
+
17
+ - update versions
18
+ - Updated dependencies
19
+ - @lowerdeck/delay@1.0.2
20
+ - @lowerdeck/redis@1.0.1
21
+ - @lowerdeck/memo@1.0.2
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("@lowerdeck/redis"),t=require("bullmq");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},r.apply(null,arguments)}function n(e){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}function o(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(o=function(){return!!e})()}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function i(e){var t="function"==typeof Map?new Map:void 0;return i=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return function(e,t,r){if(o())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,t);var i=new(e.bind.apply(e,n));return r&&s(i,r.prototype),i}(e,arguments,n(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s(r,e)},i(e)}var a=/*#__PURE__*/function(e){function t(){return e.call(this,"RETRY")||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,s(r,n),t}(/*#__PURE__*/i(Error));class u{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class c{constructor(e){this.generateIdentifier=e,this.kv=new u}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}}class l extends c{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){"object"==typeof t?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}}function f(e,t){Object.entries(e).forEach(([e,r])=>t(r,e))}function p(e,t){return-1!==e.indexOf(t)}function d(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class y{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return function(e,t){const r=function(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}(e);if("find"in r)return r.find(t);const n=r;for(let e=0;e<n.length;e++){const r=n[e];if(t(r))return r}}(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}}const m=e=>void 0===e,h=e=>"object"==typeof e&&null!==e&&e!==Object.prototype&&(null===Object.getPrototypeOf(e)||Object.getPrototypeOf(e)===Object.prototype),g=e=>h(e)&&0===Object.keys(e).length,b=e=>Array.isArray(e),v=e=>e instanceof Map,w=e=>e instanceof Set,O=e=>"Symbol"===(e=>Object.prototype.toString.call(e).slice(8,-1))(e),P=e=>e instanceof Error,j=e=>"number"==typeof e&&isNaN(e),E=e=>e.replace(/\\/g,"\\\\").replace(/\./g,"\\."),I=e=>e.map(String).map(E).join("."),k=(e,t)=>{const r=[];let n="";for(let o=0;o<e.length;o++){let s=e.charAt(o);if(!t&&"\\"===s){const t=e.charAt(o+1);if("\\"===t){n+="\\",o++;continue}if("."!==t)throw Error("invalid path")}"\\"!==s||"."!==e.charAt(o+1)?"."===s?(r.push(n),n=""):n+=s:(n+=".",o++)}return r.push(n),r};function R(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const A=[R(m,"undefined",()=>null,()=>{}),R(e=>"bigint"==typeof e,"bigint",e=>e.toString(),e=>"undefined"!=typeof BigInt?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),R(e=>e instanceof Date&&!isNaN(e.valueOf()),"Date",e=>e.toISOString(),e=>new Date(e)),R(P,"Error",(e,t)=>{const r={name:e.name,message:e.message};return"cause"in e&&(r.cause=e.cause),t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r},(e,t)=>{const r=new Error(e.message,{cause:e.cause});return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r}),R(e=>e instanceof RegExp,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),R(w,"set",e=>[...e.values()],e=>new Set(e)),R(v,"map",e=>[...e.entries()],e=>new Map(e)),R(e=>{return j(e)||Infinity===(t=e)||-Infinity===t;var t},"number",e=>j(e)?"NaN":e>0?"Infinity":"-Infinity",Number),R(e=>0===e&&1/e===-Infinity,"number",()=>"-0",Number),R(e=>e instanceof URL,"URL",e=>e.toString(),e=>new URL(e))];function T(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const _=T((e,t)=>!!O(e)&&!!t.symbolRegistry.getIdentifier(e),(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),S=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),z=T(e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=S[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function U(e,t){return!!e?.constructor&&!!t.classRegistry.getIdentifier(e.constructor)}const V=T(U,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return{...e};const n={};return r.forEach(t=>{n[t]=e[t]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),x=T((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),N=[V,_,x,z],B=(e,t)=>{const r=d(N,r=>r.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=d(A,r=>r.isApplicable(e,t));return n?{value:n.transform(e,t),type:n.annotation}:void 0},q={};A.forEach(e=>{q[e.annotation]=e});const M=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function Q(e){if(p(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(p(e,"prototype"))throw new Error("prototype is not allowed as a property");if(p(e,"constructor"))throw new Error("constructor is not allowed as a property")}const C=(e,t,r)=>{if(Q(t),0===t.length)return r(e);let n=e;for(let e=0;e<t.length-1;e++){const r=t[e];if(b(n))n=n[+r];else if(h(n))n=n[r];else if(w(n))n=M(n,+r);else if(v(n)){if(e===t.length-2)break;const o=0===+t[++e]?"key":"value",s=M(n,+r);switch(o){case"key":n=s;break;case"value":n=n.get(s)}}}const o=t[t.length-1];if(b(n)?n[+o]=r(n[+o]):h(n)&&(n[o]=r(n[o])),w(n)){const e=M(n,+o),t=r(e);e!==t&&(n.delete(e),n.add(t))}if(v(n)){const e=M(n,+t[t.length-2]);switch(0===+o?"key":"value"){case"key":{const t=r(e);n.set(t,n.get(e)),t!==e&&n.delete(e);break}case"value":n.set(e,r(n.get(e)))}}return e},F=e=>e<1;function K(e,t,r,n=[]){if(!e)return;const o=F(r);if(!b(e))return void f(e,(e,s)=>K(e,t,r,[...n,...k(s,o)]));const[s,i]=e;i&&f(i,(e,s)=>{K(e,t,r,[...n,...k(s,o)])}),t(s,n)}function D(e,t,r,n){return K(t,(t,r)=>{e=C(e,r,e=>((e,t,r)=>{if(!b(t)){const n=q[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}switch(t[0]){case"symbol":return _.untransform(e,t,r);case"class":return V.untransform(e,t,r);case"custom":return x.untransform(e,t,r);case"typed-array":return z.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}})(e,t,n))},r),e}const L=(e,t,r,n,o=[],s=[],i=new Map)=>{const a=(e=>"boolean"==typeof e)(u=e)||(e=>null===e)(u)||m(u)||(e=>"number"==typeof e&&!isNaN(e))(u)||(e=>"string"==typeof e)(u)||O(u);var u;if(!a){!function(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}(e,o,t);const r=i.get(e);if(r)return n?{transformedValue:null}:r}if(!((e,t)=>h(e)||b(e)||v(e)||w(e)||P(e)||U(e,t))(e,r)){const t=B(e,r),n=t?{transformedValue:t.value,annotations:[t.type]}:{transformedValue:e};return a||i.set(e,n),n}if(p(s,e))return{transformedValue:null};const c=B(e,r),l=c?.value??e,d=b(l)?[]:{},y={};f(l,(a,u)=>{if("__proto__"===u||"constructor"===u||"prototype"===u)throw new Error(`Detected property ${u}. This is a prototype pollution risk, please remove it from your object.`);const c=L(a,t,r,n,[...o,u],[...s,e],i);d[u]=c.transformedValue,b(c.annotations)?y[E(u)]=c.annotations:h(c.annotations)&&f(c.annotations,(e,t)=>{y[E(u)+"."+t]=e})});const j=g(y)?{transformedValue:d,annotations:c?[c.type]:void 0}:{transformedValue:d,annotations:c?[c.type,y]:y};return a||i.set(e,j),j};function G(e){return Object.prototype.toString.call(e).slice(8,-1)}function J(e){return"Array"===G(e)}function W(e,t={}){return J(e)?e.map(e=>W(e,t)):function(e){if("Object"!==G(e))return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}(e)?[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].reduce((r,n)=>("__proto__"===n||J(t.props)&&!t.props.includes(n)||function(e,t,r,n,o){const s={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";"enumerable"===s&&(e[t]=r),o&&"nonenumerable"===s&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}(r,n,W(e[n],t),e,t.nonenumerable),r),{}):e}class ${constructor({dedupe:e=!1}={}){this.classRegistry=new l,this.symbolRegistry=new c(e=>e.description??""),this.customTransformerRegistry=new y,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,r=L(e,t,this,this.dedupe),n={json:r.transformedValue};r.annotations&&(n.meta={...n.meta,values:r.annotations});const o=function(e,t){const r={};let n;return e.forEach(e=>{if(e.length<=1)return;t||(e=e.map(e=>e.map(String)).sort((e,t)=>e.length-t.length));const[o,...s]=e;0===o.length?n=s.map(I):r[I(o)]=s.map(I)}),n?g(r)?[n]:[n,r]:g(r)?void 0:r}(t,this.dedupe);return o&&(n.meta={...n.meta,referentialEqualities:o}),n.meta&&(n.meta.v=1),n}deserialize(e,t){const{json:r,meta:n}=e;let o=t?.inPlace?r:W(r);return n?.values&&(o=D(o,n.values,n.v??0,this)),n?.referentialEqualities&&(o=function(e,t,r){const n=F(r);function o(t,r){const o=((e,t)=>{Q(t);for(let r=0;r<t.length;r++){const n=t[r];if(w(e))e=M(e,+n);else if(v(e)){const o=0===+t[++r]?"key":"value",s=M(e,+n);switch(o){case"key":e=s;break;case"value":e=e.get(s)}}else e=e[n]}return e})(e,k(r,n));t.map(e=>k(e,n)).forEach(t=>{e=C(e,t,()=>o)})}if(b(t)){const[r,s]=t;r.forEach(t=>{e=C(e,k(t,n),()=>e)}),s&&f(s,o)}else f(t,o);return e}(o,n.referentialEqualities,n.v??0)),o}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e),{inPlace:!0})}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}}$.defaultInstance=new $,$.serialize=$.defaultInstance.serialize.bind($.defaultInstance),$.deserialize=$.defaultInstance.deserialize.bind($.defaultInstance),$.stringify=$.defaultInstance.stringify.bind($.defaultInstance),$.parse=$.defaultInstance.parse.bind($.defaultInstance),$.registerClass=$.defaultInstance.registerClass.bind($.defaultInstance),$.registerSymbol=$.defaultInstance.registerSymbol.bind($.defaultInstance),$.registerCustom=$.defaultInstance.registerCustom.bind($.defaultInstance),$.allowErrorProps=$.defaultInstance.allowErrorProps.bind($.defaultInstance);var Y=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},H={started:!1},X=new Set,Z=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}};exports.QueueRetryError=a,exports.combineQueueProcessors=Z,exports.createQueue=function(n){if(n.driver||(n.driver="bullmq"),X.has(n.name))throw new Error("Queue with name "+n.name+" already exists");if(X.add(n.name),"bullmq"===n.driver)return function(n){var o,s,i=e.parseRedisUrl(n.redisUrl),u=new t.Queue(n.name,r({},n.queueOpts,{connection:i,defaultJobOptions:r({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},n.jobOpts)})),c=(o=function(){return new t.QueueEvents(n.name,{connection:i})},s=[],function(){var e=[].slice.call(arguments),t=s.find(function(t){return t.args.every(function(t,r){return t===e[r]})});if(t)return t.result;var r=o.apply(void 0,e);return s.push({args:e,result:r}),r});return{name:n.name,add:function(e,t){try{return Promise.resolve(u.add("j",{payload:$.serialize(e)},{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication})).then(function(e){return{waitUntilFinished:function(t){try{var r=c();return Promise.resolve(e.waitUntilFinished(r,null==t?void 0:t.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,t){try{return Promise.resolve(u.addBulk(e.map(function(e){return{name:"j",data:{payload:$.serialize(e)},opts:{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(u.addBulk(e.map(function(e){var t,r,n;return{name:"j",data:{payload:$.serialize(e.data)},opts:{delay:null==(t=e.opts)?void 0:t.delay,jobId:null==(r=e.opts)?void 0:r.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(e){var o={started:!1};return setTimeout(function(){H.started&&!o.started&&Y("Queue "+n.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{Y("Starting queue "+n.name+" using bullmq"),o.started=!0,H.started=!0;var s=new t.Worker(n.name,function(t){try{return Promise.resolve(function(r,n){try{var o=function(){var r,n=t.data;try{r=$.deserialize(n.payload)}catch(e){r=n.payload}return Promise.resolve(e(r,t)).then(function(){})}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){if(e instanceof a)return Promise.resolve(new Promise(function(e){return setTimeout(e,1e3)})).then(function(){throw e});throw console.error("[QUEUE ERROR - "+n.name+"]",e),e}))}catch(e){return Promise.reject(e)}},r({concurrency:50},n.workerOpts,{connection:i}));return Promise.resolve({close:function(){return s.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:n.name,jobOpts:n.jobOpts,queueOpts:n.queueOpts,workerOpts:n.workerOpts,redisUrl:n.redisUrl});throw new Error("Unknown queue driver: "+n.driver)},exports.runQueueProcessors=function(e){try{var t=Z(e);return Promise.resolve(t.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}};
1
+ var e=require("@lowerdeck/delay"),r=require("@lowerdeck/memo"),t=require("@lowerdeck/redis"),n=require("bullmq");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=/*#__PURE__*/o(require("superjson"));function i(){return i=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},i.apply(null,arguments)}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function a(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(a=function(){return!!e})()}function l(e,r){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e},l(e,r)}function s(e){var r="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(r){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return function(e,r,t){if(a())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var o=new(e.bind.apply(e,n));return t&&l(o,t.prototype),o}(e,arguments,c(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),l(t,e)},s(e)}var d=/*#__PURE__*/function(e){function r(){return e.call(this,"RETRY")||this}var t,n;return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n),r}(/*#__PURE__*/s(Error)),f=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},p={started:!1},m=new Set,v=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}};exports.QueueRetryError=d,exports.combineQueueProcessors=v,exports.createQueue=function(o){if(o.driver||(o.driver="bullmq"),m.has(o.name))throw new Error("Queue with name "+o.name+" already exists");if(m.add(o.name),"bullmq"===o.driver)return function(o){var c=t.parseRedisUrl(o.redisUrl),a=new n.Queue(o.name,i({},o.queueOpts,{connection:c,defaultJobOptions:i({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},o.jobOpts)})),l=r.memo(function(){return new n.QueueEvents(o.name,{connection:c})});return{name:o.name,add:function(e,r){try{return Promise.resolve(a.add("j",{payload:u.default.serialize(e)},{delay:null==r?void 0:r.delay,jobId:null==r?void 0:r.id,deduplication:null==r?void 0:r.deduplication})).then(function(e){return{waitUntilFinished:function(r){try{var t=l();return Promise.resolve(e.waitUntilFinished(t,null==r?void 0:r.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,r){try{return Promise.resolve(a.addBulk(e.map(function(e){return{name:"j",data:{payload:u.default.serialize(e)},opts:{delay:null==r?void 0:r.delay,jobId:null==r?void 0:r.id,deduplication:null==r?void 0:r.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(a.addBulk(e.map(function(e){var r,t,n;return{name:"j",data:{payload:u.default.serialize(e.data)},opts:{delay:null==(r=e.opts)?void 0:r.delay,jobId:null==(t=e.opts)?void 0:t.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(r){var t={started:!1};return setTimeout(function(){p.started&&!t.started&&f("Queue "+o.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{f("Starting queue "+o.name+" using bullmq"),t.started=!0,p.started=!0;var a=new n.Worker(o.name,function(t){try{return Promise.resolve(function(e,n){try{var o=function(){var e,n=t.data;try{e=u.default.deserialize(n.payload)}catch(r){e=n.payload}return Promise.resolve(r(e,t)).then(function(){})}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(r){if(r instanceof d)return Promise.resolve(e.delay(1e3)).then(function(){throw r});throw console.error("[QUEUE ERROR - "+o.name+"]",r),r}))}catch(e){return Promise.reject(e)}},i({concurrency:50},o.workerOpts,{connection:c}));return Promise.resolve({close:function(){return a.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:o.name,jobOpts:o.jobOpts,queueOpts:o.queueOpts,workerOpts:o.workerOpts,redisUrl:o.redisUrl});throw new Error("Unknown queue driver: "+o.driver)},exports.runQueueProcessors=function(e){try{var r=v(e);return Promise.resolve(r.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}};
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../delay/dist/index.module.js","../src/lib/queueRetryError.ts","../../../node_modules/superjson/dist/double-indexed-kv.js","../../../node_modules/superjson/dist/registry.js","../../../node_modules/superjson/dist/class-registry.js","../../../node_modules/superjson/dist/util.js","../../../node_modules/superjson/dist/custom-transformer-registry.js","../../../node_modules/superjson/dist/is.js","../../../node_modules/superjson/dist/pathstringifier.js","../../../node_modules/superjson/dist/transformer.js","../../../node_modules/superjson/dist/accessDeep.js","../../../node_modules/superjson/dist/plainer.js","../../../node_modules/is-what/dist/getType.js","../../../node_modules/is-what/dist/isArray.js","../../../node_modules/copy-anything/dist/index.js","../../../node_modules/is-what/dist/isPlainObject.js","../../../node_modules/superjson/dist/index.js","../src/drivers/bullmq.ts","../src/index.ts","../../memo/dist/index.module.js"],"sourcesContent":["var e=function(e){return new Promise(function(n){return setTimeout(n,e)})};export{e as delay};\n//# sourceMappingURL=index.module.js.map\n","export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string, legacyPaths) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n if (!legacyPaths && char === '\\\\') {\n const escaped = string.charAt(i + 1);\n if (escaped === '\\\\') {\n segment += '\\\\';\n i++;\n continue;\n }\n else if (escaped !== '.') {\n throw Error('invalid path');\n }\n }\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n if ('cause' in v) {\n baseError.cause = v.cause;\n }\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message, { cause: v.cause });\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isError, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nconst enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker, version, origin = []) {\n if (!tree) {\n return;\n }\n const legacyPaths = enableLegacyPaths(version);\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, version, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n }, version);\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations, version) {\n const legacyPaths = enableLegacyPaths(version);\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path, legacyPaths));\n identicalPaths\n .map(path => parsePath(path, legacyPaths))\n .forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isError(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is an array */\nexport function isArray(payload) {\n return getType(payload) === 'Array';\n}\n","import { isArray, isPlainObject } from 'is-what';\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (includeNonenumerable && propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\n/**\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the\n * original object. Arrays are also cloned, however objects inside arrays are still linked.\n *\n * @param target Target can be anything\n * @param [options={}] See type {@link Options} for more details.\n *\n * - `{ props: ['key1'] }` will only copy the `key1` property. When using this you will need to cast\n * the return type manually (in order to keep the TS implementation in here simple I didn't\n * built a complex auto resolved type for those few cases people want to use this option)\n * - `{ nonenumerable: true }` will copy all non-enumerable properties. Default is `{}`\n *\n * @returns The target with replaced values\n */\nexport function copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n // Skip __proto__ properties to prevent prototype pollution\n if (key === '__proto__')\n return carry;\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nclass SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n if (res.meta)\n res.meta.v = 1;\n return res;\n }\n deserialize(payload, options) {\n const { json, meta } = payload;\n let result = options?.inPlace ? json : copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string), { inPlace: true });\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport default SuperJSON;\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n","var r=function(r){var n=[];return function(){var t=[].slice.call(arguments),u=n.find(function(r){return r.args.every(function(r,n){return r===t[n]})});if(u)return u.result;var e=r.apply(void 0,t);return n.push({args:t,result:e}),e}};export{r as memo};\n//# sourceMappingURL=index.module.js.map\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","DoubleIndexedKV","constructor","keyToValue","Map","valueToKey","set","key","value","getByKey","get","getByValue","clear","Registry","generateIdentifier","kv","register","identifier","getIdentifier","getValue","ClassRegistry","super","c","name","classToAllowedProps","options","allowProps","getAllowedProps","forEach","record","run","Object","entries","includes","arr","indexOf","findArr","predicate","i","length","CustomTransformerRegistry","transfomers","transformer","findApplicable","v","values","hasOwnProperty","push","valuesOfObj","find","valuesNotNever","isApplicable","findByName","isUndefined","payload","isPlainObject","prototype","getPrototypeOf","isEmptyObject","keys","isArray","Array","isMap","isSet","Set","isSymbol","toString","slice","getType","isError","isNaNValue","isNaN","escapeKey","replace","stringifyPath","path","map","String","join","parsePath","string","legacyPaths","result","segment","char","charAt","escaped","simpleTransformation","annotation","transform","untransform","simpleRules","BigInt","console","error","Date","valueOf","toISOString","superJson","baseError","message","cause","allowedErrorProps","prop","e","stack","RegExp","regex","body","lastIndexOf","flags","Infinity","Number","URL","compositeTransformation","symbolRule","s","symbolRegistry","description","_","a","constructorToName","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Uint8ClampedArray","reduce","obj","ctor","typedArrayRule","ArrayBuffer","isView","DataView","isInstanceOfRegisteredClass","potentialClass","classRegistry","classRule","clazz","allowedProps","assign","create","customRule","customTransformerRegistry","serialize","deserialize","compositeRules","transformValue","applicableCompositeRule","rule","type","applicableSimpleRule","simpleRulesByAnnotation","getNthKey","n","size","next","validatePath","setDeep","object","mapper","parent","keyOfRow","lastKey","oldValue","newValue","delete","add","keyToRow","newKey","enableLegacyPaths","version","traverse","tree","walker","origin","subtree","nodeValue","children","child","applyValueAnnotations","plain","annotations","json","transformation","untransformValue","identities","dedupe","objectsInThisPath","seenObjects","primitive","isBoolean","isNull","isNumber","isString","existingSet","addIdentity","seen","transformedValue","isDeep","transformed","transformationResult","innerAnnotations","index","recursiveResult","undefined","copy","target","item","getOwnPropertyNames","getOwnPropertySymbols","carry","props","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","defineProperty","enumerable","writable","configurable","assignProp","nonenumerable","SuperJSON","output","res","meta","equalityAnnotations","identitites","rootEqualityPaths","paths","sort","b","representativePath","identicalPaths","generateReferentialEqualityAnnotations","referentialEqualities","inPlace","apply","getDeep","identicalObjectPath","root","other","identicalPath","applyReferentialEqualityAnnotations","stringify","JSON","parse","registerClass","registerSymbol","registerCustom","allowErrorProps","defaultInstance","bind","log","_console","concat","arguments","anyQueueStartedRef","started","seenNames","combineQueueProcessors","opts","start","Promise","resolve","all","x","then","processors","close","reject","driver","has","r","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","QueueEvents","t","u","args","every","SuperJson","delay","jobId","id","deduplication","job","waitUntilFinished","events","timeout","addMany","payloads","addBulk","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","worker","Worker","_catch","concurrency","workerOpts","createBullMqQueue","processor","combined","on"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/lib/queueRetryError.ts","../src/drivers/bullmq.ts","../src/index.ts"],"sourcesContent":["export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","log","_console","console","apply","concat","slice","arguments","anyQueueStartedRef","started","seenNames","Set","combineQueueProcessors","opts","start","Promise","resolve","all","map","x","then","processors","close","e","reject","driver","has","name","add","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","memo","QueueEvents","payload","SuperJson","serialize","delay","jobId","id","deduplication","job","waitUntilFinished","events","timeout","addMany","payloads","addBulk","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","worker","Worker","deserialize","_catch","error","concurrency","workerOpts","createBullMqQueue","processor","combined","res","on"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{parseRedisUrl as e}from"@lowerdeck/redis";import{Queue as t,Worker as r,QueueEvents as n}from"bullmq";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(null,arguments)}function s(e){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},s(e)}function i(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(i=function(){return!!e})()}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}function u(e){var t="function"==typeof Map?new Map:void 0;return u=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return function(e,t,r){if(i())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,t);var o=new(e.bind.apply(e,n));return r&&a(o,r.prototype),o}(e,arguments,s(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),a(r,e)},u(e)}var c=/*#__PURE__*/function(e){function t(){return e.call(this,"RETRY")||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,a(r,n),t}(/*#__PURE__*/u(Error));class l{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class f{constructor(e){this.generateIdentifier=e,this.kv=new l}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}}class p extends f{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){"object"==typeof t?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}}function d(e,t){Object.entries(e).forEach(([e,r])=>t(r,e))}function y(e,t){return-1!==e.indexOf(t)}function m(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class h{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return function(e,t){const r=function(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}(e);if("find"in r)return r.find(t);const n=r;for(let e=0;e<n.length;e++){const r=n[e];if(t(r))return r}}(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}}const g=e=>void 0===e,b=e=>"object"==typeof e&&null!==e&&e!==Object.prototype&&(null===Object.getPrototypeOf(e)||Object.getPrototypeOf(e)===Object.prototype),v=e=>b(e)&&0===Object.keys(e).length,w=e=>Array.isArray(e),O=e=>e instanceof Map,P=e=>e instanceof Set,j=e=>"Symbol"===(e=>Object.prototype.toString.call(e).slice(8,-1))(e),E=e=>e instanceof Error,I=e=>"number"==typeof e&&isNaN(e),k=e=>e.replace(/\\/g,"\\\\").replace(/\./g,"\\."),A=e=>e.map(String).map(k).join("."),R=(e,t)=>{const r=[];let n="";for(let o=0;o<e.length;o++){let s=e.charAt(o);if(!t&&"\\"===s){const t=e.charAt(o+1);if("\\"===t){n+="\\",o++;continue}if("."!==t)throw Error("invalid path")}"\\"!==s||"."!==e.charAt(o+1)?"."===s?(r.push(n),n=""):n+=s:(n+=".",o++)}return r.push(n),r};function T(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const _=[T(g,"undefined",()=>null,()=>{}),T(e=>"bigint"==typeof e,"bigint",e=>e.toString(),e=>"undefined"!=typeof BigInt?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),T(e=>e instanceof Date&&!isNaN(e.valueOf()),"Date",e=>e.toISOString(),e=>new Date(e)),T(E,"Error",(e,t)=>{const r={name:e.name,message:e.message};return"cause"in e&&(r.cause=e.cause),t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r},(e,t)=>{const r=new Error(e.message,{cause:e.cause});return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r}),T(e=>e instanceof RegExp,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),T(P,"set",e=>[...e.values()],e=>new Set(e)),T(O,"map",e=>[...e.entries()],e=>new Map(e)),T(e=>{return I(e)||Infinity===(t=e)||-Infinity===t;var t},"number",e=>I(e)?"NaN":e>0?"Infinity":"-Infinity",Number),T(e=>0===e&&1/e===-Infinity,"number",()=>"-0",Number),T(e=>e instanceof URL,"URL",e=>e.toString(),e=>new URL(e))];function S(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const z=S((e,t)=>!!j(e)&&!!t.symbolRegistry.getIdentifier(e),(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),V=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),U=S(e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=V[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function N(e,t){return!!e?.constructor&&!!t.classRegistry.getIdentifier(e.constructor)}const B=S(N,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return{...e};const n={};return r.forEach(t=>{n[t]=e[t]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),x=S((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),M=[B,z,x,U],q=(e,t)=>{const r=m(M,r=>r.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=m(_,r=>r.isApplicable(e,t));return n?{value:n.transform(e,t),type:n.annotation}:void 0},C={};_.forEach(e=>{C[e.annotation]=e});const F=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function K(e){if(y(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(y(e,"prototype"))throw new Error("prototype is not allowed as a property");if(y(e,"constructor"))throw new Error("constructor is not allowed as a property")}const D=(e,t,r)=>{if(K(t),0===t.length)return r(e);let n=e;for(let e=0;e<t.length-1;e++){const r=t[e];if(w(n))n=n[+r];else if(b(n))n=n[r];else if(P(n))n=F(n,+r);else if(O(n)){if(e===t.length-2)break;const o=0===+t[++e]?"key":"value",s=F(n,+r);switch(o){case"key":n=s;break;case"value":n=n.get(s)}}}const o=t[t.length-1];if(w(n)?n[+o]=r(n[+o]):b(n)&&(n[o]=r(n[o])),P(n)){const e=F(n,+o),t=r(e);e!==t&&(n.delete(e),n.add(t))}if(O(n)){const e=F(n,+t[t.length-2]);switch(0===+o?"key":"value"){case"key":{const t=r(e);n.set(t,n.get(e)),t!==e&&n.delete(e);break}case"value":n.set(e,r(n.get(e)))}}return e},L=e=>e<1;function Q(e,t,r,n=[]){if(!e)return;const o=L(r);if(!w(e))return void d(e,(e,s)=>Q(e,t,r,[...n,...R(s,o)]));const[s,i]=e;i&&d(i,(e,s)=>{Q(e,t,r,[...n,...R(s,o)])}),t(s,n)}function G(e,t,r,n){return Q(t,(t,r)=>{e=D(e,r,e=>((e,t,r)=>{if(!w(t)){const n=C[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}switch(t[0]){case"symbol":return z.untransform(e,t,r);case"class":return B.untransform(e,t,r);case"custom":return x.untransform(e,t,r);case"typed-array":return U.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}})(e,t,n))},r),e}const J=(e,t,r,n,o=[],s=[],i=new Map)=>{const a=(e=>"boolean"==typeof e)(u=e)||(e=>null===e)(u)||g(u)||(e=>"number"==typeof e&&!isNaN(e))(u)||(e=>"string"==typeof e)(u)||j(u);var u;if(!a){!function(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}(e,o,t);const r=i.get(e);if(r)return n?{transformedValue:null}:r}if(!((e,t)=>b(e)||w(e)||O(e)||P(e)||E(e)||N(e,t))(e,r)){const t=q(e,r),n=t?{transformedValue:t.value,annotations:[t.type]}:{transformedValue:e};return a||i.set(e,n),n}if(y(s,e))return{transformedValue:null};const c=q(e,r),l=c?.value??e,f=w(l)?[]:{},p={};d(l,(a,u)=>{if("__proto__"===u||"constructor"===u||"prototype"===u)throw new Error(`Detected property ${u}. This is a prototype pollution risk, please remove it from your object.`);const c=J(a,t,r,n,[...o,u],[...s,e],i);f[u]=c.transformedValue,w(c.annotations)?p[k(u)]=c.annotations:b(c.annotations)&&d(c.annotations,(e,t)=>{p[k(u)+"."+t]=e})});const m=v(p)?{transformedValue:f,annotations:c?[c.type]:void 0}:{transformedValue:f,annotations:c?[c.type,p]:p};return a||i.set(e,m),m};function $(e){return Object.prototype.toString.call(e).slice(8,-1)}function W(e){return"Array"===$(e)}function Y(e,t={}){return W(e)?e.map(e=>Y(e,t)):function(e){if("Object"!==$(e))return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}(e)?[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].reduce((r,n)=>("__proto__"===n||W(t.props)&&!t.props.includes(n)||function(e,t,r,n,o){const s={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";"enumerable"===s&&(e[t]=r),o&&"nonenumerable"===s&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}(r,n,Y(e[n],t),e,t.nonenumerable),r),{}):e}class H{constructor({dedupe:e=!1}={}){this.classRegistry=new p,this.symbolRegistry=new f(e=>e.description??""),this.customTransformerRegistry=new h,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,r=J(e,t,this,this.dedupe),n={json:r.transformedValue};r.annotations&&(n.meta={...n.meta,values:r.annotations});const o=function(e,t){const r={};let n;return e.forEach(e=>{if(e.length<=1)return;t||(e=e.map(e=>e.map(String)).sort((e,t)=>e.length-t.length));const[o,...s]=e;0===o.length?n=s.map(A):r[A(o)]=s.map(A)}),n?v(r)?[n]:[n,r]:v(r)?void 0:r}(t,this.dedupe);return o&&(n.meta={...n.meta,referentialEqualities:o}),n.meta&&(n.meta.v=1),n}deserialize(e,t){const{json:r,meta:n}=e;let o=t?.inPlace?r:Y(r);return n?.values&&(o=G(o,n.values,n.v??0,this)),n?.referentialEqualities&&(o=function(e,t,r){const n=L(r);function o(t,r){const o=((e,t)=>{K(t);for(let r=0;r<t.length;r++){const n=t[r];if(P(e))e=F(e,+n);else if(O(e)){const o=0===+t[++r]?"key":"value",s=F(e,+n);switch(o){case"key":e=s;break;case"value":e=e.get(s)}}else e=e[n]}return e})(e,R(r,n));t.map(e=>R(e,n)).forEach(t=>{e=D(e,t,()=>o)})}if(w(t)){const[r,s]=t;r.forEach(t=>{e=D(e,R(t,n),()=>e)}),s&&d(s,o)}else d(t,o);return e}(o,n.referentialEqualities,n.v??0)),o}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e),{inPlace:!0})}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}}H.defaultInstance=new H,H.serialize=H.defaultInstance.serialize.bind(H.defaultInstance),H.deserialize=H.defaultInstance.deserialize.bind(H.defaultInstance),H.stringify=H.defaultInstance.stringify.bind(H.defaultInstance),H.parse=H.defaultInstance.parse.bind(H.defaultInstance),H.registerClass=H.defaultInstance.registerClass.bind(H.defaultInstance),H.registerSymbol=H.defaultInstance.registerSymbol.bind(H.defaultInstance),H.registerCustom=H.defaultInstance.registerCustom.bind(H.defaultInstance),H.allowErrorProps=H.defaultInstance.allowErrorProps.bind(H.defaultInstance);var X=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},Z={started:!1},ee=new Set,te=function(s){if(s.driver||(s.driver="bullmq"),ee.has(s.name))throw new Error("Queue with name "+s.name+" already exists");if(ee.add(s.name),"bullmq"===s.driver)return function(s){var i,a,u=e(s.redisUrl),l=new t(s.name,o({},s.queueOpts,{connection:u,defaultJobOptions:o({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},s.jobOpts)})),f=(i=function(){return new n(s.name,{connection:u})},a=[],function(){var e=[].slice.call(arguments),t=a.find(function(t){return t.args.every(function(t,r){return t===e[r]})});if(t)return t.result;var r=i.apply(void 0,e);return a.push({args:e,result:r}),r});return{name:s.name,add:function(e,t){try{return Promise.resolve(l.add("j",{payload:H.serialize(e)},{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication})).then(function(e){return{waitUntilFinished:function(t){try{var r=f();return Promise.resolve(e.waitUntilFinished(r,null==t?void 0:t.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,t){try{return Promise.resolve(l.addBulk(e.map(function(e){return{name:"j",data:{payload:H.serialize(e)},opts:{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(l.addBulk(e.map(function(e){var t,r,n;return{name:"j",data:{payload:H.serialize(e.data)},opts:{delay:null==(t=e.opts)?void 0:t.delay,jobId:null==(r=e.opts)?void 0:r.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(e){var t={started:!1};return setTimeout(function(){Z.started&&!t.started&&X("Queue "+s.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{X("Starting queue "+s.name+" using bullmq"),t.started=!0,Z.started=!0;var n=new r(s.name,function(t){try{return Promise.resolve(function(r,n){try{var o=function(){var r,n=t.data;try{r=H.deserialize(n.payload)}catch(e){r=n.payload}return Promise.resolve(e(r,t)).then(function(){})}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){if(e instanceof c)return Promise.resolve(new Promise(function(e){return setTimeout(e,1e3)})).then(function(){throw e});throw console.error("[QUEUE ERROR - "+s.name+"]",e),e}))}catch(e){return Promise.reject(e)}},o({concurrency:50},s.workerOpts,{connection:u}));return Promise.resolve({close:function(){return n.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:s.name,jobOpts:s.jobOpts,queueOpts:s.queueOpts,workerOpts:s.workerOpts,redisUrl:s.redisUrl});throw new Error("Unknown queue driver: "+s.driver)},re=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}},ne=function(e){try{var t=re(e);return Promise.resolve(t.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}};export{c as QueueRetryError,re as combineQueueProcessors,te as createQueue,ne as runQueueProcessors};
1
+ import{delay as e}from"@lowerdeck/delay";import{memo as t}from"@lowerdeck/memo";import{parseRedisUrl as r}from"@lowerdeck/redis";import{Queue as n,QueueEvents as o,Worker as i}from"bullmq";import u from"superjson";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c.apply(null,arguments)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(l=function(){return!!e})()}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function d(e){var t="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return function(e,t,r){if(l())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,t);var o=new(e.bind.apply(e,n));return r&&s(o,r.prototype),o}(e,arguments,a(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s(r,e)},d(e)}var f=/*#__PURE__*/function(e){function t(){return e.call(this,"RETRY")||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,s(r,n),t}(/*#__PURE__*/d(Error)),p=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},m={started:!1},v=new Set,y=function(a){if(a.driver||(a.driver="bullmq"),v.has(a.name))throw new Error("Queue with name "+a.name+" already exists");if(v.add(a.name),"bullmq"===a.driver)return function(a){var l=r(a.redisUrl),s=new n(a.name,c({},a.queueOpts,{connection:l,defaultJobOptions:c({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},a.jobOpts)})),d=t(function(){return new o(a.name,{connection:l})});return{name:a.name,add:function(e,t){try{return Promise.resolve(s.add("j",{payload:u.serialize(e)},{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication})).then(function(e){return{waitUntilFinished:function(t){try{var r=d();return Promise.resolve(e.waitUntilFinished(r,null==t?void 0:t.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,t){try{return Promise.resolve(s.addBulk(e.map(function(e){return{name:"j",data:{payload:u.serialize(e)},opts:{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(s.addBulk(e.map(function(e){var t,r,n;return{name:"j",data:{payload:u.serialize(e.data)},opts:{delay:null==(t=e.opts)?void 0:t.delay,jobId:null==(r=e.opts)?void 0:r.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(t){var r={started:!1};return setTimeout(function(){m.started&&!r.started&&p("Queue "+a.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{p("Starting queue "+a.name+" using bullmq"),r.started=!0,m.started=!0;var n=new i(a.name,function(r){try{return Promise.resolve(function(e,n){try{var o=function(){var e,n=r.data;try{e=u.deserialize(n.payload)}catch(t){e=n.payload}return Promise.resolve(t(e,r)).then(function(){})}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(t){if(t instanceof f)return Promise.resolve(e(1e3)).then(function(){throw t});throw console.error("[QUEUE ERROR - "+a.name+"]",t),t}))}catch(e){return Promise.reject(e)}},c({concurrency:50},a.workerOpts,{connection:l}));return Promise.resolve({close:function(){return n.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:a.name,jobOpts:a.jobOpts,queueOpts:a.queueOpts,workerOpts:a.workerOpts,redisUrl:a.redisUrl});throw new Error("Unknown queue driver: "+a.driver)},h=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}},P=function(e){try{var t=h(e);return Promise.resolve(t.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}};export{f as QueueRetryError,h as combineQueueProcessors,y as createQueue,P as runQueueProcessors};
2
2
  //# sourceMappingURL=index.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.js","sources":["../../delay/dist/index.module.js","../src/lib/queueRetryError.ts","../../../node_modules/superjson/dist/double-indexed-kv.js","../../../node_modules/superjson/dist/registry.js","../../../node_modules/superjson/dist/class-registry.js","../../../node_modules/superjson/dist/util.js","../../../node_modules/superjson/dist/custom-transformer-registry.js","../../../node_modules/superjson/dist/is.js","../../../node_modules/superjson/dist/pathstringifier.js","../../../node_modules/superjson/dist/transformer.js","../../../node_modules/superjson/dist/accessDeep.js","../../../node_modules/superjson/dist/plainer.js","../../../node_modules/is-what/dist/getType.js","../../../node_modules/is-what/dist/isArray.js","../../../node_modules/copy-anything/dist/index.js","../../../node_modules/is-what/dist/isPlainObject.js","../../../node_modules/superjson/dist/index.js","../src/drivers/bullmq.ts","../src/index.ts","../../memo/dist/index.module.js"],"sourcesContent":["var e=function(e){return new Promise(function(n){return setTimeout(n,e)})};export{e as delay};\n//# sourceMappingURL=index.module.js.map\n","export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string, legacyPaths) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n if (!legacyPaths && char === '\\\\') {\n const escaped = string.charAt(i + 1);\n if (escaped === '\\\\') {\n segment += '\\\\';\n i++;\n continue;\n }\n else if (escaped !== '.') {\n throw Error('invalid path');\n }\n }\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n if ('cause' in v) {\n baseError.cause = v.cause;\n }\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message, { cause: v.cause });\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isError, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nconst enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker, version, origin = []) {\n if (!tree) {\n return;\n }\n const legacyPaths = enableLegacyPaths(version);\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, version, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n }, version);\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations, version) {\n const legacyPaths = enableLegacyPaths(version);\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path, legacyPaths));\n identicalPaths\n .map(path => parsePath(path, legacyPaths))\n .forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isError(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is an array */\nexport function isArray(payload) {\n return getType(payload) === 'Array';\n}\n","import { isArray, isPlainObject } from 'is-what';\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (includeNonenumerable && propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\n/**\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the\n * original object. Arrays are also cloned, however objects inside arrays are still linked.\n *\n * @param target Target can be anything\n * @param [options={}] See type {@link Options} for more details.\n *\n * - `{ props: ['key1'] }` will only copy the `key1` property. When using this you will need to cast\n * the return type manually (in order to keep the TS implementation in here simple I didn't\n * built a complex auto resolved type for those few cases people want to use this option)\n * - `{ nonenumerable: true }` will copy all non-enumerable properties. Default is `{}`\n *\n * @returns The target with replaced values\n */\nexport function copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n // Skip __proto__ properties to prevent prototype pollution\n if (key === '__proto__')\n return carry;\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nclass SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n if (res.meta)\n res.meta.v = 1;\n return res;\n }\n deserialize(payload, options) {\n const { json, meta } = payload;\n let result = options?.inPlace ? json : copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string), { inPlace: true });\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport default SuperJSON;\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n","var r=function(r){var n=[];return function(){var t=[].slice.call(arguments),u=n.find(function(r){return r.args.every(function(r,n){return r===t[n]})});if(u)return u.result;var e=r.apply(void 0,t);return n.push({args:t,result:e}),e}};export{r as memo};\n//# sourceMappingURL=index.module.js.map\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","DoubleIndexedKV","constructor","keyToValue","Map","valueToKey","set","key","value","getByKey","get","getByValue","clear","Registry","generateIdentifier","kv","register","identifier","getIdentifier","getValue","ClassRegistry","super","c","name","classToAllowedProps","options","allowProps","getAllowedProps","forEach","record","run","Object","entries","includes","arr","indexOf","findArr","predicate","i","length","CustomTransformerRegistry","transfomers","transformer","findApplicable","v","values","hasOwnProperty","push","valuesOfObj","find","valuesNotNever","isApplicable","findByName","isUndefined","payload","isPlainObject","prototype","getPrototypeOf","isEmptyObject","keys","isArray","Array","isMap","isSet","Set","isSymbol","toString","slice","getType","isError","isNaNValue","isNaN","escapeKey","replace","stringifyPath","path","map","String","join","parsePath","string","legacyPaths","result","segment","char","charAt","escaped","simpleTransformation","annotation","transform","untransform","simpleRules","BigInt","console","error","Date","valueOf","toISOString","superJson","baseError","message","cause","allowedErrorProps","prop","e","stack","RegExp","regex","body","lastIndexOf","flags","Infinity","Number","URL","compositeTransformation","symbolRule","s","symbolRegistry","description","_","a","constructorToName","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Uint8ClampedArray","reduce","obj","ctor","typedArrayRule","ArrayBuffer","isView","DataView","isInstanceOfRegisteredClass","potentialClass","classRegistry","classRule","clazz","allowedProps","assign","create","customRule","customTransformerRegistry","serialize","deserialize","compositeRules","transformValue","applicableCompositeRule","rule","type","applicableSimpleRule","simpleRulesByAnnotation","getNthKey","n","size","next","validatePath","setDeep","object","mapper","parent","keyOfRow","lastKey","oldValue","newValue","delete","add","keyToRow","newKey","enableLegacyPaths","version","traverse","tree","walker","origin","subtree","nodeValue","children","child","applyValueAnnotations","plain","annotations","json","transformation","untransformValue","identities","dedupe","objectsInThisPath","seenObjects","primitive","isBoolean","isNull","isNumber","isString","existingSet","addIdentity","seen","transformedValue","isDeep","transformed","transformationResult","innerAnnotations","index","recursiveResult","undefined","copy","target","item","getOwnPropertyNames","getOwnPropertySymbols","carry","props","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","defineProperty","enumerable","writable","configurable","assignProp","nonenumerable","SuperJSON","output","res","meta","equalityAnnotations","identitites","rootEqualityPaths","paths","sort","b","representativePath","identicalPaths","generateReferentialEqualityAnnotations","referentialEqualities","inPlace","apply","getDeep","identicalObjectPath","root","other","identicalPath","applyReferentialEqualityAnnotations","stringify","JSON","parse","registerClass","registerSymbol","registerCustom","allowErrorProps","defaultInstance","bind","log","_console","concat","arguments","anyQueueStartedRef","started","seenNames","createQueue","opts","driver","has","r","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","QueueEvents","t","u","args","every","Promise","resolve","SuperJson","delay","jobId","id","deduplication","then","job","waitUntilFinished","events","timeout","reject","addMany","payloads","addBulk","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","start","worker","Worker","_catch","concurrency","workerOpts","close","createBullMqQueue","combineQueueProcessors","all","x","processors","runQueueProcessors","processor","combined","on"],"mappings":"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"}
1
+ {"version":3,"file":"index.module.js","sources":["../src/lib/queueRetryError.ts","../src/drivers/bullmq.ts","../src/index.ts"],"sourcesContent":["export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","log","_console","console","apply","concat","slice","arguments","anyQueueStartedRef","started","seenNames","Set","createQueue","opts","driver","has","name","add","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","memo","QueueEvents","payload","Promise","resolve","SuperJson","serialize","delay","jobId","id","deduplication","then","job","waitUntilFinished","events","timeout","e","reject","addMany","payloads","addBulk","map","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","start","worker","Worker","deserialize","_catch","error","concurrency","workerOpts","close","createBullMqQueue","combineQueueProcessors","all","x","processors","runQueueProcessors","processor","combined","res","on"],"mappings":"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"}
package/dist/index.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@lowerdeck/redis"),require("bullmq")):"function"==typeof define&&define.amd?define(["exports","@lowerdeck/redis","bullmq"],t):t((e||self).queue={},e.redis,e.bullmq)}(this,function(e,t,r){function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},n.apply(null,arguments)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(s=function(){return!!e})()}function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}function a(e){var t="function"==typeof Map?new Map:void 0;return a=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return function(e,t,r){if(s())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,t);var o=new(e.bind.apply(e,n));return r&&i(o,r.prototype),o}(e,arguments,o(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i(r,e)},a(e)}var u=/*#__PURE__*/function(e){function t(){return e.call(this,"RETRY")||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,i(r,n),t}(/*#__PURE__*/a(Error));class c{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class l{constructor(e){this.generateIdentifier=e,this.kv=new c}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}}class f extends l{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){"object"==typeof t?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}}function p(e,t){Object.entries(e).forEach(([e,r])=>t(r,e))}function d(e,t){return-1!==e.indexOf(t)}function y(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class m{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return function(e,t){const r=function(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}(e);if("find"in r)return r.find(t);const n=r;for(let e=0;e<n.length;e++){const r=n[e];if(t(r))return r}}(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}}const h=e=>void 0===e,g=e=>"object"==typeof e&&null!==e&&e!==Object.prototype&&(null===Object.getPrototypeOf(e)||Object.getPrototypeOf(e)===Object.prototype),b=e=>g(e)&&0===Object.keys(e).length,v=e=>Array.isArray(e),w=e=>e instanceof Map,O=e=>e instanceof Set,P=e=>"Symbol"===(e=>Object.prototype.toString.call(e).slice(8,-1))(e),j=e=>e instanceof Error,E=e=>"number"==typeof e&&isNaN(e),I=e=>e.replace(/\\/g,"\\\\").replace(/\./g,"\\."),k=e=>e.map(String).map(I).join("."),R=(e,t)=>{const r=[];let n="";for(let o=0;o<e.length;o++){let s=e.charAt(o);if(!t&&"\\"===s){const t=e.charAt(o+1);if("\\"===t){n+="\\",o++;continue}if("."!==t)throw Error("invalid path")}"\\"!==s||"."!==e.charAt(o+1)?"."===s?(r.push(n),n=""):n+=s:(n+=".",o++)}return r.push(n),r};function A(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const T=[A(h,"undefined",()=>null,()=>{}),A(e=>"bigint"==typeof e,"bigint",e=>e.toString(),e=>"undefined"!=typeof BigInt?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),A(e=>e instanceof Date&&!isNaN(e.valueOf()),"Date",e=>e.toISOString(),e=>new Date(e)),A(j,"Error",(e,t)=>{const r={name:e.name,message:e.message};return"cause"in e&&(r.cause=e.cause),t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r},(e,t)=>{const r=new Error(e.message,{cause:e.cause});return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(t=>{r[t]=e[t]}),r}),A(e=>e instanceof RegExp,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),A(O,"set",e=>[...e.values()],e=>new Set(e)),A(w,"map",e=>[...e.entries()],e=>new Map(e)),A(e=>{return E(e)||Infinity===(t=e)||-Infinity===t;var t},"number",e=>E(e)?"NaN":e>0?"Infinity":"-Infinity",Number),A(e=>0===e&&1/e===-Infinity,"number",()=>"-0",Number),A(e=>e instanceof URL,"URL",e=>e.toString(),e=>new URL(e))];function _(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const S=_((e,t)=>!!P(e)&&!!t.symbolRegistry.getIdentifier(e),(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),z=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),U=_(e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=z[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function V(e,t){return!!e?.constructor&&!!t.classRegistry.getIdentifier(e.constructor)}const q=_(V,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return{...e};const n={};return r.forEach(t=>{n[t]=e[t]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),N=_((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),x=[q,S,N,U],B=(e,t)=>{const r=y(x,r=>r.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=y(T,r=>r.isApplicable(e,t));return n?{value:n.transform(e,t),type:n.annotation}:void 0},M={};T.forEach(e=>{M[e.annotation]=e});const Q=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function C(e){if(d(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(d(e,"prototype"))throw new Error("prototype is not allowed as a property");if(d(e,"constructor"))throw new Error("constructor is not allowed as a property")}const F=(e,t,r)=>{if(C(t),0===t.length)return r(e);let n=e;for(let e=0;e<t.length-1;e++){const r=t[e];if(v(n))n=n[+r];else if(g(n))n=n[r];else if(O(n))n=Q(n,+r);else if(w(n)){if(e===t.length-2)break;const o=0===+t[++e]?"key":"value",s=Q(n,+r);switch(o){case"key":n=s;break;case"value":n=n.get(s)}}}const o=t[t.length-1];if(v(n)?n[+o]=r(n[+o]):g(n)&&(n[o]=r(n[o])),O(n)){const e=Q(n,+o),t=r(e);e!==t&&(n.delete(e),n.add(t))}if(w(n)){const e=Q(n,+t[t.length-2]);switch(0===+o?"key":"value"){case"key":{const t=r(e);n.set(t,n.get(e)),t!==e&&n.delete(e);break}case"value":n.set(e,r(n.get(e)))}}return e},K=e=>e<1;function D(e,t,r,n=[]){if(!e)return;const o=K(r);if(!v(e))return void p(e,(e,s)=>D(e,t,r,[...n,...R(s,o)]));const[s,i]=e;i&&p(i,(e,s)=>{D(e,t,r,[...n,...R(s,o)])}),t(s,n)}function L(e,t,r,n){return D(t,(t,r)=>{e=F(e,r,e=>((e,t,r)=>{if(!v(t)){const n=M[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}switch(t[0]){case"symbol":return S.untransform(e,t,r);case"class":return q.untransform(e,t,r);case"custom":return N.untransform(e,t,r);case"typed-array":return U.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}})(e,t,n))},r),e}const G=(e,t,r,n,o=[],s=[],i=new Map)=>{const a=(e=>"boolean"==typeof e)(u=e)||(e=>null===e)(u)||h(u)||(e=>"number"==typeof e&&!isNaN(e))(u)||(e=>"string"==typeof e)(u)||P(u);var u;if(!a){!function(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}(e,o,t);const r=i.get(e);if(r)return n?{transformedValue:null}:r}if(!((e,t)=>g(e)||v(e)||w(e)||O(e)||j(e)||V(e,t))(e,r)){const t=B(e,r),n=t?{transformedValue:t.value,annotations:[t.type]}:{transformedValue:e};return a||i.set(e,n),n}if(d(s,e))return{transformedValue:null};const c=B(e,r),l=c?.value??e,f=v(l)?[]:{},y={};p(l,(a,u)=>{if("__proto__"===u||"constructor"===u||"prototype"===u)throw new Error(`Detected property ${u}. This is a prototype pollution risk, please remove it from your object.`);const c=G(a,t,r,n,[...o,u],[...s,e],i);f[u]=c.transformedValue,v(c.annotations)?y[I(u)]=c.annotations:g(c.annotations)&&p(c.annotations,(e,t)=>{y[I(u)+"."+t]=e})});const m=b(y)?{transformedValue:f,annotations:c?[c.type]:void 0}:{transformedValue:f,annotations:c?[c.type,y]:y};return a||i.set(e,m),m};function J(e){return Object.prototype.toString.call(e).slice(8,-1)}function W(e){return"Array"===J(e)}function $(e,t={}){return W(e)?e.map(e=>$(e,t)):function(e){if("Object"!==J(e))return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}(e)?[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].reduce((r,n)=>("__proto__"===n||W(t.props)&&!t.props.includes(n)||function(e,t,r,n,o){const s={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";"enumerable"===s&&(e[t]=r),o&&"nonenumerable"===s&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}(r,n,$(e[n],t),e,t.nonenumerable),r),{}):e}class Y{constructor({dedupe:e=!1}={}){this.classRegistry=new f,this.symbolRegistry=new l(e=>e.description??""),this.customTransformerRegistry=new m,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,r=G(e,t,this,this.dedupe),n={json:r.transformedValue};r.annotations&&(n.meta={...n.meta,values:r.annotations});const o=function(e,t){const r={};let n;return e.forEach(e=>{if(e.length<=1)return;t||(e=e.map(e=>e.map(String)).sort((e,t)=>e.length-t.length));const[o,...s]=e;0===o.length?n=s.map(k):r[k(o)]=s.map(k)}),n?b(r)?[n]:[n,r]:b(r)?void 0:r}(t,this.dedupe);return o&&(n.meta={...n.meta,referentialEqualities:o}),n.meta&&(n.meta.v=1),n}deserialize(e,t){const{json:r,meta:n}=e;let o=t?.inPlace?r:$(r);return n?.values&&(o=L(o,n.values,n.v??0,this)),n?.referentialEqualities&&(o=function(e,t,r){const n=K(r);function o(t,r){const o=((e,t)=>{C(t);for(let r=0;r<t.length;r++){const n=t[r];if(O(e))e=Q(e,+n);else if(w(e)){const o=0===+t[++r]?"key":"value",s=Q(e,+n);switch(o){case"key":e=s;break;case"value":e=e.get(s)}}else e=e[n]}return e})(e,R(r,n));t.map(e=>R(e,n)).forEach(t=>{e=F(e,t,()=>o)})}if(v(t)){const[r,s]=t;r.forEach(t=>{e=F(e,R(t,n),()=>e)}),s&&p(s,o)}else p(t,o);return e}(o,n.referentialEqualities,n.v??0)),o}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e),{inPlace:!0})}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}}Y.defaultInstance=new Y,Y.serialize=Y.defaultInstance.serialize.bind(Y.defaultInstance),Y.deserialize=Y.defaultInstance.deserialize.bind(Y.defaultInstance),Y.stringify=Y.defaultInstance.stringify.bind(Y.defaultInstance),Y.parse=Y.defaultInstance.parse.bind(Y.defaultInstance),Y.registerClass=Y.defaultInstance.registerClass.bind(Y.defaultInstance),Y.registerSymbol=Y.defaultInstance.registerSymbol.bind(Y.defaultInstance),Y.registerCustom=Y.defaultInstance.registerCustom.bind(Y.defaultInstance),Y.allowErrorProps=Y.defaultInstance.allowErrorProps.bind(Y.defaultInstance);var H=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},X={started:!1},Z=new Set,ee=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}};e.QueueRetryError=u,e.combineQueueProcessors=ee,e.createQueue=function(e){if(e.driver||(e.driver="bullmq"),Z.has(e.name))throw new Error("Queue with name "+e.name+" already exists");if(Z.add(e.name),"bullmq"===e.driver)return function(e){var o,s,i=t.parseRedisUrl(e.redisUrl),a=new r.Queue(e.name,n({},e.queueOpts,{connection:i,defaultJobOptions:n({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},e.jobOpts)})),c=(o=function(){return new r.QueueEvents(e.name,{connection:i})},s=[],function(){var e=[].slice.call(arguments),t=s.find(function(t){return t.args.every(function(t,r){return t===e[r]})});if(t)return t.result;var r=o.apply(void 0,e);return s.push({args:e,result:r}),r});return{name:e.name,add:function(e,t){try{return Promise.resolve(a.add("j",{payload:Y.serialize(e)},{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication})).then(function(e){return{waitUntilFinished:function(t){try{var r=c();return Promise.resolve(e.waitUntilFinished(r,null==t?void 0:t.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,t){try{return Promise.resolve(a.addBulk(e.map(function(e){return{name:"j",data:{payload:Y.serialize(e)},opts:{delay:null==t?void 0:t.delay,jobId:null==t?void 0:t.id,deduplication:null==t?void 0:t.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(a.addBulk(e.map(function(e){var t,r,n;return{name:"j",data:{payload:Y.serialize(e.data)},opts:{delay:null==(t=e.opts)?void 0:t.delay,jobId:null==(r=e.opts)?void 0:r.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(t){var o={started:!1};return setTimeout(function(){X.started&&!o.started&&H("Queue "+e.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{H("Starting queue "+e.name+" using bullmq"),o.started=!0,X.started=!0;var s=new r.Worker(e.name,function(r){try{return Promise.resolve(function(e,n){try{var o=function(){var e,n=r.data;try{e=Y.deserialize(n.payload)}catch(t){e=n.payload}return Promise.resolve(t(e,r)).then(function(){})}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(t){if(t instanceof u)return Promise.resolve(new Promise(function(e){return setTimeout(e,1e3)})).then(function(){throw t});throw console.error("[QUEUE ERROR - "+e.name+"]",t),t}))}catch(e){return Promise.reject(e)}},n({concurrency:50},e.workerOpts,{connection:i}));return Promise.resolve({close:function(){return s.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:e.name,jobOpts:e.jobOpts,queueOpts:e.queueOpts,workerOpts:e.workerOpts,redisUrl:e.redisUrl});throw new Error("Unknown queue driver: "+e.driver)},e.runQueueProcessors=function(e){try{var t=ee(e);return Promise.resolve(t.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}}});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@lowerdeck/delay"),require("@lowerdeck/memo"),require("@lowerdeck/redis"),require("bullmq"),require("superjson")):"function"==typeof define&&define.amd?define(["exports","@lowerdeck/delay","@lowerdeck/memo","@lowerdeck/redis","bullmq","superjson"],r):r((e||self).queue={},e.delay,e.memo,e.redis,e.bullmq,e.superjson)}(this,function(e,r,t,n,o,u){function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=/*#__PURE__*/i(u);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},a.apply(null,arguments)}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(s=function(){return!!e})()}function d(e,r){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e},d(e,r)}function f(e){var r="function"==typeof Map?new Map:void 0;return f=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(r){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return function(e,r,t){if(s())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var o=new(e.bind.apply(e,n));return t&&d(o,t.prototype),o}(e,arguments,l(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),d(t,e)},f(e)}var p=/*#__PURE__*/function(e){function r(){return e.call(this,"RETRY")||this}var t,n;return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,d(t,n),r}(/*#__PURE__*/f(Error)),m=function(){var e;return(e=console).log.apply(e,["[QUEUE MANAGER]:"].concat([].slice.call(arguments)))},y={started:!1},v=new Set,h=function(e){return{start:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return e.start()}))).then(function(e){return{close:function(){try{return Promise.resolve(Promise.all(e.map(function(e){return null==e||null==e.close?void 0:e.close()}))).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}}}};e.QueueRetryError=p,e.combineQueueProcessors=h,e.createQueue=function(e){if(e.driver||(e.driver="bullmq"),v.has(e.name))throw new Error("Queue with name "+e.name+" already exists");if(v.add(e.name),"bullmq"===e.driver)return function(e){var u=n.parseRedisUrl(e.redisUrl),i=new o.Queue(e.name,a({},e.queueOpts,{connection:u,defaultJobOptions:a({removeOnComplete:!0,removeOnFail:!0,attempts:10,keepLogs:10},e.jobOpts)})),l=t.memo(function(){return new o.QueueEvents(e.name,{connection:u})});return{name:e.name,add:function(e,r){try{return Promise.resolve(i.add("j",{payload:c.default.serialize(e)},{delay:null==r?void 0:r.delay,jobId:null==r?void 0:r.id,deduplication:null==r?void 0:r.deduplication})).then(function(e){return{waitUntilFinished:function(r){try{var t=l();return Promise.resolve(e.waitUntilFinished(t,null==r?void 0:r.timeout)).then(function(){})}catch(e){return Promise.reject(e)}}}})}catch(e){return Promise.reject(e)}},addMany:function(e,r){try{return Promise.resolve(i.addBulk(e.map(function(e){return{name:"j",data:{payload:c.default.serialize(e)},opts:{delay:null==r?void 0:r.delay,jobId:null==r?void 0:r.id,deduplication:null==r?void 0:r.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},addManyWithOps:function(e){try{return Promise.resolve(i.addBulk(e.map(function(e){var r,t,n;return{name:"j",data:{payload:c.default.serialize(e.data)},opts:{delay:null==(r=e.opts)?void 0:r.delay,jobId:null==(t=e.opts)?void 0:t.id,deduplication:null==(n=e.opts)?void 0:n.deduplication}}}))).then(function(){})}catch(e){return Promise.reject(e)}},process:function(t){var n={started:!1};return setTimeout(function(){y.started&&!n.started&&m("Queue "+e.name+" was not started within 10 seconds, this is likely a bug")},1e4),{start:function(){try{m("Starting queue "+e.name+" using bullmq"),n.started=!0,y.started=!0;var i=new o.Worker(e.name,function(n){try{return Promise.resolve(function(e,r){try{var o=function(){var e,r=n.data;try{e=c.default.deserialize(r.payload)}catch(t){e=r.payload}return Promise.resolve(t(e,n)).then(function(){})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(t){if(t instanceof p)return Promise.resolve(r.delay(1e3)).then(function(){throw t});throw console.error("[QUEUE ERROR - "+e.name+"]",t),t}))}catch(e){return Promise.reject(e)}},a({concurrency:50},e.workerOpts,{connection:u}));return Promise.resolve({close:function(){return i.close()}})}catch(e){return Promise.reject(e)}}}}}}({name:e.name,jobOpts:e.jobOpts,queueOpts:e.queueOpts,workerOpts:e.workerOpts,redisUrl:e.redisUrl});throw new Error("Unknown queue driver: "+e.driver)},e.runQueueProcessors=function(e){try{var r=h(e);return Promise.resolve(r.start()).then(function(e){return process.on("SIGINT",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),process.on("SIGTERM",function(){try{return Promise.resolve(null==e?void 0:e.close()).then(function(){})}catch(e){return Promise.reject(e)}}),e})}catch(e){return Promise.reject(e)}}});
2
2
  //# sourceMappingURL=index.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../delay/dist/index.module.js","../src/lib/queueRetryError.ts","../../../node_modules/superjson/dist/double-indexed-kv.js","../../../node_modules/superjson/dist/registry.js","../../../node_modules/superjson/dist/class-registry.js","../../../node_modules/superjson/dist/util.js","../../../node_modules/superjson/dist/custom-transformer-registry.js","../../../node_modules/superjson/dist/is.js","../../../node_modules/superjson/dist/pathstringifier.js","../../../node_modules/superjson/dist/transformer.js","../../../node_modules/superjson/dist/accessDeep.js","../../../node_modules/superjson/dist/plainer.js","../../../node_modules/is-what/dist/getType.js","../../../node_modules/is-what/dist/isArray.js","../../../node_modules/copy-anything/dist/index.js","../../../node_modules/is-what/dist/isPlainObject.js","../../../node_modules/superjson/dist/index.js","../src/drivers/bullmq.ts","../src/index.ts","../../memo/dist/index.module.js"],"sourcesContent":["var e=function(e){return new Promise(function(n){return setTimeout(n,e)})};export{e as delay};\n//# sourceMappingURL=index.module.js.map\n","export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string, legacyPaths) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n if (!legacyPaths && char === '\\\\') {\n const escaped = string.charAt(i + 1);\n if (escaped === '\\\\') {\n segment += '\\\\';\n i++;\n continue;\n }\n else if (escaped !== '.') {\n throw Error('invalid path');\n }\n }\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n if ('cause' in v) {\n baseError.cause = v.cause;\n }\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message, { cause: v.cause });\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isError, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nconst enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker, version, origin = []) {\n if (!tree) {\n return;\n }\n const legacyPaths = enableLegacyPaths(version);\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, version, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n }, version);\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations, version) {\n const legacyPaths = enableLegacyPaths(version);\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path, legacyPaths));\n identicalPaths\n .map(path => parsePath(path, legacyPaths))\n .forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isError(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is an array */\nexport function isArray(payload) {\n return getType(payload) === 'Array';\n}\n","import { isArray, isPlainObject } from 'is-what';\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (includeNonenumerable && propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\n/**\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the\n * original object. Arrays are also cloned, however objects inside arrays are still linked.\n *\n * @param target Target can be anything\n * @param [options={}] See type {@link Options} for more details.\n *\n * - `{ props: ['key1'] }` will only copy the `key1` property. When using this you will need to cast\n * the return type manually (in order to keep the TS implementation in here simple I didn't\n * built a complex auto resolved type for those few cases people want to use this option)\n * - `{ nonenumerable: true }` will copy all non-enumerable properties. Default is `{}`\n *\n * @returns The target with replaced values\n */\nexport function copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n // Skip __proto__ properties to prevent prototype pollution\n if (key === '__proto__')\n return carry;\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nclass SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n if (res.meta)\n res.meta.v = 1;\n return res;\n }\n deserialize(payload, options) {\n const { json, meta } = payload;\n let result = options?.inPlace ? json : copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string), { inPlace: true });\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport default SuperJSON;\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n","var r=function(r){var n=[];return function(){var t=[].slice.call(arguments),u=n.find(function(r){return r.args.every(function(r,n){return r===t[n]})});if(u)return u.result;var e=r.apply(void 0,t);return n.push({args:t,result:e}),e}};export{r as memo};\n//# sourceMappingURL=index.module.js.map\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","DoubleIndexedKV","constructor","keyToValue","Map","valueToKey","set","key","value","getByKey","get","getByValue","clear","Registry","generateIdentifier","kv","register","identifier","getIdentifier","getValue","ClassRegistry","super","c","name","classToAllowedProps","options","allowProps","getAllowedProps","forEach","record","run","Object","entries","includes","arr","indexOf","findArr","predicate","i","length","CustomTransformerRegistry","transfomers","transformer","findApplicable","v","values","hasOwnProperty","push","valuesOfObj","find","valuesNotNever","isApplicable","findByName","isUndefined","payload","isPlainObject","prototype","getPrototypeOf","isEmptyObject","keys","isArray","Array","isMap","isSet","Set","isSymbol","toString","slice","getType","isError","isNaNValue","isNaN","escapeKey","replace","stringifyPath","path","map","String","join","parsePath","string","legacyPaths","result","segment","char","charAt","escaped","simpleTransformation","annotation","transform","untransform","simpleRules","BigInt","console","error","Date","valueOf","toISOString","superJson","baseError","message","cause","allowedErrorProps","prop","e","stack","RegExp","regex","body","lastIndexOf","flags","Infinity","Number","URL","compositeTransformation","symbolRule","s","symbolRegistry","description","_","a","constructorToName","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Uint8ClampedArray","reduce","obj","ctor","typedArrayRule","ArrayBuffer","isView","DataView","isInstanceOfRegisteredClass","potentialClass","classRegistry","classRule","clazz","allowedProps","assign","create","customRule","customTransformerRegistry","serialize","deserialize","compositeRules","transformValue","applicableCompositeRule","rule","type","applicableSimpleRule","simpleRulesByAnnotation","getNthKey","n","size","next","validatePath","setDeep","object","mapper","parent","keyOfRow","lastKey","oldValue","newValue","delete","add","keyToRow","newKey","enableLegacyPaths","version","traverse","tree","walker","origin","subtree","nodeValue","children","child","applyValueAnnotations","plain","annotations","json","transformation","untransformValue","identities","dedupe","objectsInThisPath","seenObjects","primitive","isBoolean","isNull","isNumber","isString","existingSet","addIdentity","seen","transformedValue","isDeep","transformed","transformationResult","innerAnnotations","index","recursiveResult","undefined","copy","target","item","getOwnPropertyNames","getOwnPropertySymbols","carry","props","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","defineProperty","enumerable","writable","configurable","assignProp","nonenumerable","SuperJSON","output","res","meta","equalityAnnotations","identitites","rootEqualityPaths","paths","sort","b","representativePath","identicalPaths","generateReferentialEqualityAnnotations","referentialEqualities","inPlace","apply","getDeep","identicalObjectPath","root","other","identicalPath","applyReferentialEqualityAnnotations","stringify","JSON","parse","registerClass","registerSymbol","registerCustom","allowErrorProps","defaultInstance","bind","log","_console","concat","arguments","anyQueueStartedRef","started","seenNames","combineQueueProcessors","opts","start","Promise","resolve","all","x","then","processors","close","reject","driver","has","r","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","QueueEvents","t","u","args","every","SuperJson","delay","jobId","id","deduplication","job","waitUntilFinished","events","timeout","addMany","payloads","addBulk","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","worker","Worker","_catch","concurrency","workerOpts","createBullMqQueue","processor","combined","on"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/lib/queueRetryError.ts","../src/drivers/bullmq.ts","../src/index.ts"],"sourcesContent":["export class QueueRetryError extends Error {\n constructor() {\n super('RETRY');\n }\n}\n","import { delay } from '@lowerdeck/delay';\nimport { memo } from '@lowerdeck/memo';\nimport { parseRedisUrl } from '@lowerdeck/redis';\nimport {\n DeduplicationOptions,\n JobsOptions,\n Queue,\n QueueEvents,\n QueueOptions,\n Worker,\n WorkerOptions\n} from 'bullmq';\nimport { QueueRetryError } from '../lib/queueRetryError';\nimport { IQueue } from '../types';\n\n// @ts-ignore\nimport SuperJson from 'superjson';\n\nlet log = (...any: any[]) => console.log('[QUEUE MANAGER]:', ...any);\n\nlet anyQueueStartedRef = { started: false };\n\nexport interface BullMqQueueOptions {\n delay?: number;\n id?: string;\n deduplication?: DeduplicationOptions;\n}\n\nexport interface BullMqCreateOptions {\n name: string;\n jobOpts?: JobsOptions;\n queueOpts?: Omit<QueueOptions, 'connection'>;\n workerOpts?: Omit<WorkerOptions, 'connection'>;\n redisUrl: string;\n}\n\nexport let createBullMqQueue = <JobData>(\n opts: BullMqCreateOptions\n): IQueue<JobData, BullMqQueueOptions> => {\n let redisOpts = parseRedisUrl(opts.redisUrl);\n\n let queue = new Queue<JobData>(opts.name, {\n ...opts.queueOpts,\n connection: redisOpts,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n attempts: 10,\n keepLogs: 10,\n ...opts.jobOpts\n }\n });\n\n let useQueueEvents = memo(() => new QueueEvents(opts.name, { connection: redisOpts }));\n\n return {\n name: opts.name,\n\n add: async (payload, opts) => {\n let job = await queue.add(\n 'j' as any,\n {\n payload: SuperJson.serialize(payload)\n } as any,\n {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n );\n\n return {\n async waitUntilFinished(opts?: { timeout?: number }) {\n let events = useQueueEvents();\n await job.waitUntilFinished(events, opts?.timeout);\n }\n };\n },\n\n addMany: async (payloads, opts) => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload)\n },\n opts: {\n delay: opts?.delay,\n jobId: opts?.id,\n deduplication: opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n addManyWithOps: async payloads => {\n await queue.addBulk(\n payloads.map(\n payload =>\n ({\n name: 'j',\n data: {\n payload: SuperJson.serialize(payload.data)\n },\n opts: {\n delay: payload.opts?.delay,\n jobId: payload.opts?.id,\n deduplication: payload.opts?.deduplication\n }\n }) as any\n )\n );\n },\n\n process: cb => {\n let staredRef = { started: false };\n\n setTimeout(() => {\n if (anyQueueStartedRef.started && !staredRef.started) {\n log(`Queue ${opts.name} was not started within 10 seconds, this is likely a bug`);\n }\n }, 10000);\n\n return {\n start: async () => {\n log(`Starting queue ${opts.name} using bullmq`);\n staredRef.started = true;\n anyQueueStartedRef.started = true;\n\n let worker = new Worker<JobData>(\n opts.name,\n async job => {\n try {\n let data = job.data as any;\n\n let payload: any;\n\n try {\n payload = SuperJson.deserialize(data.payload);\n } catch (e: any) {\n payload = data.payload;\n }\n\n await cb(payload as any, job);\n } catch (e: any) {\n if (e instanceof QueueRetryError) {\n await delay(1000);\n throw e;\n } else {\n console.error(`[QUEUE ERROR - ${opts.name}]`, e);\n throw e;\n }\n }\n },\n {\n concurrency: 50,\n ...opts.workerOpts,\n connection: redisOpts\n }\n );\n\n return {\n close: () => worker.close()\n };\n }\n };\n }\n };\n};\n","import { BullMqCreateOptions, createBullMqQueue } from './drivers/bullmq';\nimport { IQueueProcessor } from './types';\n\nexport * from './lib/queueRetryError';\nexport * from './types';\n\nlet seenNames = new Set<string>();\n\nexport let createQueue = <JobData>(opts: { driver?: 'bullmq' } & BullMqCreateOptions) => {\n if (!opts.driver) opts.driver = 'bullmq';\n\n if (seenNames.has(opts.name)) {\n throw new Error(`Queue with name ${opts.name} already exists`);\n }\n seenNames.add(opts.name);\n\n if (opts.driver === 'bullmq') {\n return createBullMqQueue<JobData>({\n name: opts.name,\n jobOpts: opts.jobOpts,\n queueOpts: opts.queueOpts,\n workerOpts: opts.workerOpts,\n redisUrl: opts.redisUrl\n });\n }\n\n throw new Error(`Unknown queue driver: ${opts.driver}`);\n};\n\nexport let combineQueueProcessors = (opts: IQueueProcessor[]): IQueueProcessor => {\n return {\n start: async () => {\n let processors = await Promise.all(opts.map(x => x.start()));\n\n return {\n close: async () => {\n await Promise.all(processors.map(x => x?.close?.()));\n }\n };\n }\n };\n};\n\nexport let runQueueProcessors = async (processor: IQueueProcessor[]) => {\n let combined = combineQueueProcessors(processor);\n\n let res = await combined.start();\n\n process.on('SIGINT', async () => {\n await res?.close();\n });\n\n process.on('SIGTERM', async () => {\n await res?.close();\n });\n\n return res;\n};\n"],"names":["QueueRetryError","_Error","call","this","_wrapNativeSuper","Error","log","_console","console","apply","concat","slice","arguments","anyQueueStartedRef","started","seenNames","Set","combineQueueProcessors","opts","start","Promise","resolve","all","map","x","then","processors","close","e","reject","driver","has","name","add","redisOpts","parseRedisUrl","redisUrl","queue","Queue","_extends","queueOpts","connection","defaultJobOptions","removeOnComplete","removeOnFail","attempts","keepLogs","jobOpts","useQueueEvents","memo","QueueEvents","payload","SuperJson","serialize","delay","jobId","id","deduplication","job","waitUntilFinished","events","timeout","addMany","payloads","addBulk","data","addManyWithOps","_payload$opts","_payload$opts2","_payload$opts3","process","cb","staredRef","setTimeout","worker","Worker","deserialize","_catch","error","concurrency","workerOpts","createBullMqQueue","processor","combined","res","on"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowerdeck/queue",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -12,7 +12,7 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "require": "./dist/index.cjs",
14
14
  "import": "./dist/index.module.js",
15
- "default": "./dist/index.modern.js"
15
+ "default": "./dist/index.module.js"
16
16
  },
17
17
  "main": "./dist/index.cjs",
18
18
  "module": "./dist/index.module.js",
@@ -24,9 +24,9 @@
24
24
  "build": "microbundle"
25
25
  },
26
26
  "dependencies": {
27
- "@lowerdeck/delay": "^1.0.0",
28
- "@lowerdeck/memo": "^1.0.0",
29
- "@lowerdeck/redis": "^1.0.0",
27
+ "@lowerdeck/delay": "^1.0.3",
28
+ "@lowerdeck/memo": "^1.0.3",
29
+ "@lowerdeck/redis": "^1.0.2",
30
30
  "bullmq": "^5.66.0",
31
31
  "superjson": "^2.2.6"
32
32
  },