@ez4/local-queue 0.43.0 → 0.44.0
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/client/local.d.ts +1 -1
- package/dist/client/mock.d.ts +1 -1
- package/dist/client/remote.d.ts +1 -1
- package/dist/main.cjs +31 -30
- package/dist/main.mjs +35 -33
- package/dist/service/tester.d.ts +2 -0
- package/dist/test.cjs +9 -7
- package/dist/test.mjs +7 -5
- package/package.json +8 -8
package/dist/client/local.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export type LocalClientOptions = ServeOptions & {
|
|
|
6
6
|
handler: (message: AnyObject) => Promise<void>;
|
|
7
7
|
delay: number;
|
|
8
8
|
};
|
|
9
|
-
export declare const createLocalClient: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(
|
|
9
|
+
export declare const createLocalClient: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(resourceName: string, messageSchema: MessageSchema, clientOptions: LocalClientOptions) => Client<T, U>;
|
package/dist/client/mock.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Client, Queue } from '@ez4/queue';
|
|
2
|
-
export declare const createClientMock: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(
|
|
2
|
+
export declare const createClientMock: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(resourceName: string) => Client<T, U>;
|
package/dist/client/remote.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ import type { MessageSchema } from '@ez4/queue/utils';
|
|
|
4
4
|
export type RemoteClientOptions = CommonOptions & {
|
|
5
5
|
serviceHost: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const createRemoteClient: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(
|
|
7
|
+
export declare const createRemoteClient: <T extends Queue.Message = any, U extends Queue.FifoMode<T> | undefined = any>(resourceName: string, messageSchema: MessageSchema, clientOptions: RemoteClientOptions) => Client<T, U>;
|
package/dist/main.cjs
CHANGED
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
"use strict";var y=Object.defineProperty;var
|
|
2
|
-
typeof t=="object"||typeof t=="function")for(let n of
|
|
3
|
-
y(e,n,{get:()=>t[n],enumerable:!(o
|
|
4
|
-
return new class{async sendMessage(a,i){
|
|
5
|
-
|
|
1
|
+
"use strict";var y=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var s=(e,t)=>y(e,"name",{value:t,configurable:!0});var V=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},k=(e,t,r,o)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let n of P(t))!J.call(e,n)&&n!==r&&
|
|
3
|
+
y(e,n,{get:()=>t[n],enumerable:!(o=N(t,n))||o.enumerable});return e};var F=e=>k(y({},"__esModule",{value:!0}),e);var K={};V(K,{registerTriggers:()=>G});module.exports=F(K);var c=require("@ez4/queue/library"),$=require("@ez4/project/library");var f=require("@ez4/project/library");var b=require("@ez4/project/library"),E=require("@ez4/queue/utils"),w=require("@ez4/logger");var O=s((e,t,r)=>{let o=(0,b.getServiceName)(e,r),n=`http://${r.serviceHost}/${o}`;
|
|
4
|
+
return new class{async sendMessage(a,i){w.Logger.log(`\u2709\uFE0F Sending message to que\
|
|
5
|
+
ue [${e}] at ${n}.`);let m=await(0,E.getJsonStringMessage)(a,t);setImmediate(()=>D(
|
|
6
6
|
e,n,m))}receiveMessage(){throw new Error("Receive message isn't supported yet.")}}},
|
|
7
|
-
"createRemoteClient"),
|
|
7
|
+
"createRemoteClient"),D=s(async(e,t,r)=>{try{let o=await fetch(t,{method:"POST",
|
|
8
8
|
body:r,headers:{"content-type":"application/json"}});if(!o.ok){let{message:n}=await o.
|
|
9
|
-
json();throw new Error(n)}}catch{
|
|
10
|
-
t available.`)}},"forwardQueueMessage");var
|
|
9
|
+
json();throw new Error(n)}}catch{w.Logger.warn(`Remote queue [${e}] at ${t} isn'\
|
|
10
|
+
t available.`)}},"forwardQueueMessage");var q=s((e,t)=>{let{name:r,reference:o,schema:n,project:a}=e,{imports:i}=t;if(!i||
|
|
11
11
|
!i[a])throw new f.MissingImportedProjectError(a);let m={...i[a]};return{type:"Qu\
|
|
12
|
-
eue",name:r,identifier:(0,f.getServiceName)(r,t),exportHandler:s(()=>
|
|
13
|
-
xportHandler"),requestHandler:s(p=>
|
|
14
|
-
ervices"),
|
|
15
|
-
JSON.parse(r.body.toString()))},"handleQueueForward");var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
eue",name:r,identifier:(0,f.getServiceName)(r,t),exportHandler:s(()=>O(o,n,m),"e\
|
|
13
|
+
xportHandler"),requestHandler:s(p=>B(e,m,p),"requestHandler")}},"registerRemoteS\
|
|
14
|
+
ervices"),B=s((e,t,r)=>{let{reference:o,schema:n}=e;return O(o,n,t).sendMessage(
|
|
15
|
+
JSON.parse(r.body.toString()))},"handleQueueForward");var h=require("@ez4/local-common"),j=require("@ez4/queue/utils"),I=require("@ez4/project/library"),
|
|
16
|
+
T=require("@ez4/utils");var u=require("@ez4/local-common"),S=require("@ez4/queue/utils"),Q=require("@ez4/utils"),
|
|
17
|
+
C=require("@ez4/common");var M=s(async(e,t,r,o,n)=>{let{services:a}=e,i=await r.makeClients(a),m=(0,Q.getRandomUUID)();
|
|
18
|
+
C.Runtime.setScope({traceId:m});let p=await(0,u.createModule)({listener:o.listener,
|
|
19
19
|
handler:o.handler,version:t.version,variables:{...t.variables,...e.variables,...o.
|
|
20
|
-
variables}}),l,g={requestId:(0,
|
|
21
|
-
d,i,
|
|
20
|
+
variables}}),l,g={requestId:(0,Q.getRandomUUID)(),traceId:m},A=s((d,H)=>(0,S.resolveValidation)(
|
|
21
|
+
d,i,H.type),"onCustomValidation");try{await(0,u.onBegin)(p,i,g),l={...g,message:await(0,S.getJsonMessage)(
|
|
22
22
|
n,e.schema,A)},await(0,u.onReady)(p,i,l),await p.handler(l,i),await(0,u.onDone)(
|
|
23
23
|
p,i,l)}catch(d){throw await(0,u.onError)(p,i,l??g,d),d}finally{await(0,u.onEnd)(
|
|
24
|
-
p,i,g)}},"processLambdaMessage");var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
p,i,g)}},"processLambdaMessage");var x=require("node:timers/promises"),R=require("@ez4/queue/utils"),v=require("@ez4/logger");var z=s((e,t,r)=>new class{async sendMessage(o,n){v.Logger.log(`\u2709\uFE0F Sending mess\
|
|
25
|
+
age to queue [${e}]`);let a=await(0,R.getJsonMessage)(o,t),i=n?.delay??r.delay;setImmediate(
|
|
26
|
+
async()=>{try{await(0,x.setTimeout)(i*1e3),await r.handler(a)}catch(m){v.Logger.
|
|
27
|
+
error(`Local queue [${e}] finished with errors.`),v.Logger.error(` ${m}`)}})}receiveMessage(){
|
|
28
|
+
throw new Error("Receive message isn't supported yet.")}},"createLocalClient");var L=s((e,t,r)=>{let{name:o,schema:n}=e,a={...t,delay:e.delay??0,handler:s(i=>U(
|
|
29
|
+
e,t,r,i),"handler")};return{type:"Queue",name:o,identifier:(0,I.getServiceName)(
|
|
30
|
+
o,t),exportHandler:s(()=>z(o,n,a),"exportHandler"),requestHandler:s(i=>_(e,t,r,i),
|
|
31
|
+
"requestHandler")}},"registerLocalServices"),_=s(async(e,t,r,o)=>{let{method:n,path:a,
|
|
31
32
|
body:i}=o;if(n!=="POST"||a!=="/"||!i)throw new Error("Unsupported queue request.");
|
|
32
|
-
try{let m=JSON.parse(i.toString());return await
|
|
33
|
-
201)}catch(m){if(!(m instanceof
|
|
34
|
-
400,{message:m.message,context:m.context})}},"handleQueueRequest"),
|
|
35
|
-
let n=(0,
|
|
36
|
-
await
|
|
33
|
+
try{let m=JSON.parse(i.toString());return await U(e,t,r,m),(0,h.getSuccessResponse)(
|
|
34
|
+
201)}catch(m){if(!(m instanceof j.MalformedMessageError))throw m;return(0,h.getErrorResponse)(
|
|
35
|
+
400,{message:m.message,context:m.context})}},"handleQueueRequest"),U=s(async(e,t,r,o)=>{
|
|
36
|
+
let n=(0,T.getRandomInteger)(0,e.subscriptions.length-1),a=e.subscriptions[n];a&&
|
|
37
|
+
await M(e,t,r,a,o)},"handleQueueMessage");var G=s(()=>{(0,c.registerTriggers)(),(0,$.tryCreateTrigger)("@ez4/local-queue",
|
|
37
38
|
{"emulator:getServices":s(({service:e,options:t,context:r})=>(0,c.isQueueService)(
|
|
38
|
-
e)?
|
|
39
|
+
e)?L(e,t,r):(0,c.isQueueImport)(e)?q(e,t):null,"emulator:getServices")})},"regis\
|
|
39
40
|
terTriggers");0&&(module.exports={registerTriggers});
|
|
40
41
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
var
|
|
2
|
-
import{tryCreateTrigger as
|
|
3
|
-
import{Logger as
|
|
4
|
-
|
|
5
|
-
t);setImmediate(()=>
|
|
6
|
-
isn't supported yet.")}}},"createRemoteClient"),
|
|
1
|
+
var E=Object.defineProperty;var o=(e,t)=>E(e,"name",{value:t,configurable:!0});import{isQueueImport as G,isQueueService as K,registerTriggers as W}from"@ez4/queue/library";
|
|
2
|
+
import{tryCreateTrigger as X}from"@ez4/project/library";import{getServiceName as x,MissingImportedProjectError as R}from"@ez4/project/library";import{getServiceName as q}from"@ez4/project/library";import{getJsonStringMessage as C}from"@ez4/queue/utils";
|
|
3
|
+
import{Logger as y}from"@ez4/logger";var g=o((e,t,r)=>{let n=q(e,r),i=`http://${r.serviceHost}/${n}`;return new class{async sendMessage(a,s){
|
|
4
|
+
y.log(`\u2709\uFE0F Sending message to queue [${e}] at ${i}.`);let m=await C(a,
|
|
5
|
+
t);setImmediate(()=>M(e,i,m))}receiveMessage(){throw new Error("Receive message \
|
|
6
|
+
isn't supported yet.")}}},"createRemoteClient"),M=o(async(e,t,r)=>{try{let n=await fetch(
|
|
7
7
|
t,{method:"POST",body:r,headers:{"content-type":"application/json"}});if(!n.ok){
|
|
8
|
-
let{message:i}=await n.json();throw new Error(i)}}catch{
|
|
9
|
-
] at ${t} isn't available.`)}},"forwardQueueMessage");var
|
|
10
|
-
!s[a])throw new
|
|
11
|
-
exportHandler:o(()=>g(n,i,m),"exportHandler"),requestHandler:o(u=>
|
|
12
|
-
estHandler")}},"registerRemoteServices"),
|
|
13
|
-
return g(n,i,t).sendMessage(JSON.parse(r.body.toString()))},"handleQueueForward");import{getErrorResponse as
|
|
14
|
-
MalformedMessageError as
|
|
15
|
-
import{getRandomInteger as
|
|
16
|
-
import{getJsonMessage as A,resolveValidation as
|
|
17
|
-
getRandomUUID as
|
|
18
|
-
{traceId:m});let u=await
|
|
19
|
-
variables:{...t.variables,...e.variables,...n.variables}}),p,c={requestId:
|
|
20
|
-
|
|
21
|
-
i,e.schema,
|
|
22
|
-
u,s,p??c,l),l}finally{await
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
let{message:i}=await n.json();throw new Error(i)}}catch{y.warn(`Remote queue [${e}\
|
|
9
|
+
] at ${t} isn't available.`)}},"forwardQueueMessage");var f=o((e,t)=>{let{name:r,reference:n,schema:i,project:a}=e,{imports:s}=t;if(!s||
|
|
10
|
+
!s[a])throw new R(a);let m={...s[a]};return{type:"Queue",name:r,identifier:x(r,t),
|
|
11
|
+
exportHandler:o(()=>g(n,i,m),"exportHandler"),requestHandler:o(u=>z(e,m,u),"requ\
|
|
12
|
+
estHandler")}},"registerRemoteServices"),z=o((e,t,r)=>{let{reference:n,schema:i}=e;
|
|
13
|
+
return g(n,i,t).sendMessage(JSON.parse(r.body.toString()))},"handleQueueForward");import{getErrorResponse as V,getSuccessResponse as k}from"@ez4/local-common";import{
|
|
14
|
+
MalformedMessageError as F}from"@ez4/queue/utils";import{getServiceName as D}from"@ez4/project/library";
|
|
15
|
+
import{getRandomInteger as B}from"@ez4/utils";import{createModule as j,onBegin as I,onReady as T,onDone as L,onError as U,onEnd as $}from"@ez4/local-common";
|
|
16
|
+
import{getJsonMessage as A,resolveValidation as H}from"@ez4/queue/utils";import{
|
|
17
|
+
getRandomUUID as S}from"@ez4/utils";import{Runtime as N}from"@ez4/common";var v=o(async(e,t,r,n,i)=>{let{services:a}=e,s=await r.makeClients(a),m=S();N.setScope(
|
|
18
|
+
{traceId:m});let u=await j({listener:n.listener,handler:n.handler,version:t.version,
|
|
19
|
+
variables:{...t.variables,...e.variables,...n.variables}}),p,c={requestId:S(),traceId:m},
|
|
20
|
+
Q=o((l,b)=>H(l,s,b.type),"onCustomValidation");try{await I(u,s,c),p={...c,message:await A(
|
|
21
|
+
i,e.schema,Q)},await T(u,s,p),await u.handler(p,s),await L(u,s,p)}catch(l){throw await U(
|
|
22
|
+
u,s,p??c,l),l}finally{await $(u,s,c)}},"processLambdaMessage");import{setTimeout as P}from"node:timers/promises";import{getJsonMessage as J}from"@ez4/queue/utils";
|
|
23
|
+
import{Logger as d}from"@ez4/logger";var h=o((e,t,r)=>new class{async sendMessage(n,i){d.log(`\u2709\uFE0F Sending message to \
|
|
24
|
+
queue [${e}]`);let a=await J(n,t),s=i?.delay??r.delay;setImmediate(async()=>{try{
|
|
25
|
+
await P(s*1e3),await r.handler(a)}catch(m){d.error(`Local queue [${e}] finished \
|
|
26
|
+
with errors.`),d.error(` ${m}`)}})}receiveMessage(){throw new Error("Receive \
|
|
27
|
+
message isn't supported yet.")}},"createLocalClient");var w=o((e,t,r)=>{let{name:n,schema:i}=e,a={...t,delay:e.delay??0,handler:o(s=>O(
|
|
28
|
+
e,t,r,s),"handler")};return{type:"Queue",name:n,identifier:D(n,t),exportHandler:o(
|
|
29
|
+
()=>h(n,i,a),"exportHandler"),requestHandler:o(s=>_(e,t,r,s),"requestHandler")}},
|
|
30
|
+
"registerLocalServices"),_=o(async(e,t,r,n)=>{let{method:i,path:a,body:s}=n;if(i!==
|
|
29
31
|
"POST"||a!=="/"||!s)throw new Error("Unsupported queue request.");try{let m=JSON.
|
|
30
|
-
parse(s.toString());return await
|
|
31
|
-
throw m;return
|
|
32
|
-
t"),
|
|
33
|
-
a&&await
|
|
34
|
-
context:r})=>
|
|
35
|
-
Triggers");export{
|
|
32
|
+
parse(s.toString());return await O(e,t,r,m),k(201)}catch(m){if(!(m instanceof F))
|
|
33
|
+
throw m;return V(400,{message:m.message,context:m.context})}},"handleQueueReques\
|
|
34
|
+
t"),O=o(async(e,t,r,n)=>{let i=B(0,e.subscriptions.length-1),a=e.subscriptions[i];
|
|
35
|
+
a&&await v(e,t,r,a,n)},"handleQueueMessage");var Te=o(()=>{W(),X("@ez4/local-queue",{"emulator:getServices":o(({service:e,options:t,
|
|
36
|
+
context:r})=>K(e)?w(e,t,r):G(e)?f(e,t):null,"emulator:getServices")})},"register\
|
|
37
|
+
Triggers");export{Te as registerTriggers};
|
|
36
38
|
//# sourceMappingURL=main.mjs.map
|
package/dist/service/tester.d.ts
CHANGED
|
@@ -7,4 +7,6 @@ export declare namespace QueueTester {
|
|
|
7
7
|
};
|
|
8
8
|
const getClient: <T extends Queue.Service<any, any>>(resourceName: string) => Client<T["schema"], T["fifoMode"]>;
|
|
9
9
|
const getClientMock: <T extends Queue.Service<any, any>>(resourceName: string) => ClientMock<T["schema"], T["fifoMode"]>;
|
|
10
|
+
const setClientMock: <T extends Queue.Service<any, any>>(resourceName: string) => void;
|
|
11
|
+
const restoreClient: (resourceName: string) => void;
|
|
10
12
|
}
|
package/dist/test.cjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
"use strict";var i=Object.defineProperty;var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let
|
|
3
|
-
i(t,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
essage"),
|
|
1
|
+
"use strict";var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var s=(t,e)=>i(t,"name",{value:e,configurable:!0});var f=(t,e)=>{for(var r in e)i(t,r,{get:e[r],enumerable:!0})},x=(t,e,r,a)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let n of u(e))!C.call(t,n)&&n!==r&&
|
|
3
|
+
i(t,n,{get:()=>e[n],enumerable:!(a=l(e,n))||a.enumerable});return t};var T=t=>x(i({},"__esModule",{value:!0}),t);var y={};f(y,{QueueTester:()=>M});module.exports=T(y);var c=require("@ez4/project/library"),g=require("node:test");var p=require("@ez4/logger");var d=s(t=>new class{sendMessage(e,r){return p.Logger.log(`\u2709\uFE0F Sending message t\
|
|
4
|
+
o queue [${t}]`),Promise.resolve()}receiveMessage(){throw new Error("Receive mes\
|
|
5
|
+
sage isn't supported yet.")}},"createClientMock");var M;(n=>(n.getClient=s(o=>c.Tester.getServiceClient(o),"getClient"),n.getClientMock=
|
|
6
|
+
s(o=>{let m=d(o);return g.mock.method(m,"sendMessage"),g.mock.method(m,"receiveM\
|
|
7
|
+
essage"),m},"getClientMock"),n.setClientMock=s(o=>{c.Tester.mockServiceClient(o,
|
|
8
|
+
(0,n.getClientMock)(o))},"setClientMock"),n.restoreClient=s(o=>{c.Tester.restoreServiceClient(
|
|
9
|
+
o)},"restoreClient")))(M||={});0&&(module.exports={QueueTester});
|
|
8
10
|
//# sourceMappingURL=test.cjs.map
|
package/dist/test.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"getClientMock")
|
|
1
|
+
var g=Object.defineProperty;var t=(o,s)=>g(o,"name",{value:s,configurable:!0});import{Tester as i}from"@ez4/project/library";import{mock as a}from"node:test";import{Logger as p}from"@ez4/logger";var c=t(o=>new class{sendMessage(s,m){return p.log(`\u2709\uFE0F Sending message to queue\
|
|
2
|
+
[${o}]`),Promise.resolve()}receiveMessage(){throw new Error("Receive message is\
|
|
3
|
+
n't supported yet.")}},"createClientMock");var d;(n=>(n.getClient=t(e=>i.getServiceClient(e),"getClient"),n.getClientMock=t(
|
|
4
|
+
e=>{let r=c(e);return a.method(r,"sendMessage"),a.method(r,"receiveMessage"),r},
|
|
5
|
+
"getClientMock"),n.setClientMock=t(e=>{i.mockServiceClient(e,(0,n.getClientMock)(
|
|
6
|
+
e))},"setClientMock"),n.restoreClient=t(e=>{i.restoreServiceClient(e)},"restoreC\
|
|
7
|
+
lient")))(d||={});export{d as QueueTester};
|
|
6
8
|
//# sourceMappingURL=test.mjs.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/local-queue",
|
|
3
3
|
"description": "EZ4: Local queue emulator",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.44.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"live:publish": "npm run build && npm publish --access public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@ez4/common": "^0.
|
|
47
|
-
"@ez4/logger": "^0.
|
|
48
|
-
"@ez4/local-common": "^0.
|
|
49
|
-
"@ez4/project": "^0.
|
|
50
|
-
"@ez4/queue": "^0.
|
|
51
|
-
"@ez4/utils": "^0.
|
|
52
|
-
"@ez4/validator": "^0.
|
|
46
|
+
"@ez4/common": "^0.44.0",
|
|
47
|
+
"@ez4/logger": "^0.44.0",
|
|
48
|
+
"@ez4/local-common": "^0.44.0",
|
|
49
|
+
"@ez4/project": "^0.44.0",
|
|
50
|
+
"@ez4/queue": "^0.44.0",
|
|
51
|
+
"@ez4/utils": "^0.44.0",
|
|
52
|
+
"@ez4/validator": "^0.44.0"
|
|
53
53
|
}
|
|
54
54
|
}
|