@lunora/queue 1.0.0-alpha.40 → 1.0.0-alpha.41

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.
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createQueueCaptureSink as t,shouldCaptureQueue as r}from"./packem_shared/createQueueCaptureSink-CSOPftvj.mjs";import{createQueueContext as a}from"./packem_shared/createQueueContext-B9PgIzBM.mjs";import{default as i}from"./packem_shared/createQueues-FpKDoLFX.mjs";import{defineQueue as p,isQueueDefinition as m,queueBindingName as x,queueDefaultName as Q}from"./packem_shared/defineQueue-TY4-i3nG.mjs";import{dispatchQueueBatch as s}from"./packem_shared/dispatchQueueBatch-CPCCaAKp.mjs";import{c as C}from"./packem_shared/run-context-Bz18TJFU.mjs";export{t as createQueueCaptureSink,a as createQueueContext,C as createQueueRunContext,i as createQueues,p as defineQueue,s as dispatchQueueBatch,m as isQueueDefinition,x as queueBindingName,Q as queueDefaultName,r as shouldCaptureQueue};
1
+ import{createQueueCaptureSink as t,shouldCaptureQueue as r}from"./packem_shared/createQueueCaptureSink-CSOPftvj.mjs";import{createQueueContext as a}from"./packem_shared/createQueueContext-B9PgIzBM.mjs";import{default as i}from"./packem_shared/createQueues-FpKDoLFX.mjs";import{defineQueue as p,isQueueDefinition as m,queueBindingName as x,queueDefaultName as Q}from"./packem_shared/defineQueue-TY4-i3nG.mjs";import{dispatchQueueBatch as s}from"./packem_shared/dispatchQueueBatch-x_PWzYXq.mjs";import{c as C}from"./packem_shared/run-context-Bz18TJFU.mjs";export{t as createQueueCaptureSink,a as createQueueContext,C as createQueueRunContext,i as createQueues,p as defineQueue,s as dispatchQueueBatch,m as isQueueDefinition,x as queueBindingName,Q as queueDefaultName,r as shouldCaptureQueue};
@@ -0,0 +1 @@
1
+ import{c as m,B as w,M as h}from"./run-context-Bz18TJFU.mjs";import{LunoraError as y,toErrorBody as v}from"@lunora/errors";const x=3,q=e=>{if(e instanceof Date)return e.getTime();const r=typeof e=="number"?e:Number(e);return Number.isFinite(r)?r:0},b=(e,r)=>{let t=0;return(n,o,i)=>(t+=1,e(n,o,{...i,dedupId:`${r}#${String(t)}`,messageId:r}))},k=(e,r,t)=>{const n=b(t,e.id);return new Proxy(e,{get:(o,i)=>i==="ack"?()=>{r.set(o,"ack"),o.ack()}:i==="retry"?c=>{r.set(o,"retry"),o.retry(c)}:i==="run"?n:Reflect.get(o,i,o)})},g=(e,r,t)=>new Proxy(e,{get:(n,o)=>o==="ackAll"?()=>{t("ack"),n.ackAll()}:o==="retryAll"?i=>{t("retry"),n.retryAll(i)}:o==="messages"?r:Reflect.get(n,o,n)}),N=(e,r)=>{const t=new Map,n=e.messages,o=n.map(a=>k(a,t,r)),c=g(e,o,a=>{for(const d of n)t.has(d)||t.set(d,a)});return{dispositions:t,originals:n,wrappedBatch:c}},$=e=>{if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e!==null&&typeof e=="object")try{return JSON.stringify(e)}catch{return"[unserializable thrown value]"}return String(e)},R=(e,r,t,n,o,i)=>{const c=n?$(o):void 0,a=typeof r.definition.maxRetries=="number"?r.definition.maxRetries:x,d=n?"error":"ack";return e.originals.map(s=>{const l=s===i,u=e.dispositions.get(s),f=l?"error":u??d,p=typeof s.attempts=="number"?s.attempts:1;return{attempts:p,body:s.body,deadLettered:!l&&f!=="ack"&&p>a,error:f==="error"?c:void 0,exportName:r.exportName,messageId:s.id,outcome:f,queue:t,timestamp:q(s.timestamp)}})},A=(e,r,t)=>{if(!r||!w(t))return;const n=h(t);if(n===void 0)return;const o=e.originals.find(i=>i.id===n);if(!(o===void 0||e.dispositions.has(o)))return o},M=(e,r)=>{r.ack();for(const t of e.originals)t!==r&&!e.dispositions.has(t)&&(e.dispositions.set(t,"retry"),t.retry())},I=async(e,r,t)=>{const n=Object.hasOwn(r,e.queue)?r[e.queue]:void 0;if(n===void 0){const u=Object.keys(r),f=u.length===0?"no push queues are declared":`known push queues: ${u.join(", ")}`;throw new y("INTERNAL",`@lunora/queue: received a batch for queue "${e.queue}" but no push handler is registered (${f})`)}const{handler:o}=n.definition;if(typeof o!="function")throw new TypeError(`@lunora/queue: queue "${e.queue}" (${n.exportName}) has no push handler — it is declared as a pull consumer`);const i=m({env:t.env,exportName:n.exportName,fetchImpl:t.fetchImpl}),c=N(e,i.run);let a=!1,d;try{await o(i,c.wrappedBatch)}catch(u){a=!0,d=u}const s=A(c,a,d);if(s!==void 0){M(c,s);const{body:u,status:f}=v(d,{redactedMessage:"internal error"});console.error(`@lunora/queue: dropped message ${s.id} on queue "${e.queue}" (${n.exportName}) — a dispatch it made failed with a deterministic ${String(f)} (${u.code}: ${u.message}), so it was acked, not retried. Its retries are NOT exhausted and it is not dead-lettered — it will never be redelivered.`)}const l=a&&s===void 0;if(t.capture!==void 0)try{await t.capture(R(c,n,e.queue,a,d,s))}catch(u){console.warn("@lunora/queue: capture sink failed (delivery unaffected):",u)}if(l)throw d};export{I as dispatchQueueBatch};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunora/queue",
3
- "version": "1.0.0-alpha.40",
3
+ "version": "1.0.0-alpha.41",
4
4
  "description": "Cloudflare Queues for Lunora: defineQueue producers + consumers, the ctx.queues surface, and the generated queue() worker handler",
5
5
  "keywords": [
6
6
  "background-jobs",
@@ -44,7 +44,7 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@lunora/errors": "1.0.0-alpha.27",
47
+ "@lunora/errors": "1.0.0-alpha.28",
48
48
  "@lunora/platform": "1.0.0-alpha.23"
49
49
  },
50
50
  "engines": {
@@ -1 +0,0 @@
1
- import{c as m,B as w,M as h}from"./run-context-Bz18TJFU.mjs";import{LunoraError as y}from"@lunora/errors";const v=3,x=e=>{if(e instanceof Date)return e.getTime();const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?n:0},b=(e,n)=>{let t=0;return(r,o,i)=>(t+=1,e(r,o,{...i,dedupId:`${n}#${String(t)}`,messageId:n}))},k=(e,n,t)=>{const r=b(t,e.id);return new Proxy(e,{get:(o,i)=>i==="ack"?()=>{n.set(o,"ack"),o.ack()}:i==="retry"?u=>{n.set(o,"retry"),o.retry(u)}:i==="run"?r:Reflect.get(o,i,o)})},q=(e,n,t)=>new Proxy(e,{get:(r,o)=>o==="ackAll"?()=>{t("ack"),r.ackAll()}:o==="retryAll"?i=>{t("retry"),r.retryAll(i)}:o==="messages"?n:Reflect.get(r,o,r)}),R=(e,n)=>{const t=new Map,r=e.messages,o=r.map(c=>k(c,t,n)),u=q(e,o,c=>{for(const a of r)t.has(a)||t.set(a,c)});return{dispositions:t,originals:r,wrappedBatch:u}},N=e=>{if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e!==null&&typeof e=="object")try{return JSON.stringify(e)}catch{return"[unserializable thrown value]"}return String(e)},A=(e,n,t,r,o,i)=>{const u=r?N(o):void 0,c=typeof n.definition.maxRetries=="number"?n.definition.maxRetries:v,a=r?"error":"ack";return e.originals.map(s=>{const p=s===i,d=e.dispositions.get(s),f=p?"error":d??a,l=typeof s.attempts=="number"?s.attempts:1;return{attempts:l,body:s.body,deadLettered:!p&&f!=="ack"&&l>c,error:f==="error"?u:void 0,exportName:n.exportName,messageId:s.id,outcome:f,queue:t,timestamp:x(s.timestamp)}})},g=(e,n,t)=>{if(!n||!w(t))return;const r=h(t);if(r===void 0)return;const o=e.originals.find(i=>i.id===r);if(!(o===void 0||e.dispositions.has(o)))return o},M=(e,n)=>{n.ack();for(const t of e.originals)t!==n&&!e.dispositions.has(t)&&(e.dispositions.set(t,"retry"),t.retry())},$=async(e,n,t)=>{const r=Object.hasOwn(n,e.queue)?n[e.queue]:void 0;if(r===void 0){const d=Object.keys(n),f=d.length===0?"no push queues are declared":`known push queues: ${d.join(", ")}`;throw new y("INTERNAL",`@lunora/queue: received a batch for queue "${e.queue}" but no push handler is registered (${f})`)}const{handler:o}=r.definition;if(typeof o!="function")throw new TypeError(`@lunora/queue: queue "${e.queue}" (${r.exportName}) has no push handler — it is declared as a pull consumer`);const i=m({env:t.env,exportName:r.exportName,fetchImpl:t.fetchImpl}),u=R(e,i.run);let c=!1,a;try{await o(i,u.wrappedBatch)}catch(d){c=!0,a=d}const s=g(u,c,a);s!==void 0&&M(u,s);const p=c&&s===void 0;if(t.capture!==void 0)try{await t.capture(A(u,r,e.queue,c,a,s))}catch(d){console.warn("@lunora/queue: capture sink failed (delivery unaffected):",d)}if(p)throw a};export{$ as dispatchQueueBatch};