@ez4/local-queue 0.30.0 → 0.32.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/import.d.ts +3 -3
- package/dist/client/local.d.ts +9 -0
- package/dist/client/mock.d.ts +1 -1
- package/dist/client/remote.d.ts +7 -0
- package/dist/main.cjs +36 -32
- package/dist/main.mjs +32 -28
- package/dist/provider/emulator.d.ts +8 -1
- package/dist/provider/local.d.ts +15 -0
- package/dist/provider/remote.d.ts +9 -0
- package/dist/test.cjs +1 -1
- package/dist/test.mjs +1 -1
- package/package.json +6 -6
package/dist/client/import.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Client, Queue } from '@ez4/queue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { CommonOptions } from '@ez4/project/library';
|
|
3
3
|
import type { MessageSchema } from '@ez4/queue/utils';
|
|
4
|
-
export type ImportedClientOptions =
|
|
5
|
-
|
|
4
|
+
export type ImportedClientOptions = CommonOptions & {
|
|
5
|
+
serviceHost: string;
|
|
6
6
|
};
|
|
7
7
|
export declare const createImportedClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: ImportedClientOptions) => Client<T>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Client, Queue } from '@ez4/queue';
|
|
2
|
+
import type { ServeOptions } from '@ez4/project/library';
|
|
3
|
+
import type { MessageSchema } from '@ez4/queue/utils';
|
|
4
|
+
import type { AnyObject } from '@ez4/utils';
|
|
5
|
+
export type LocalClientOptions = ServeOptions & {
|
|
6
|
+
handler: (message: AnyObject) => Promise<void>;
|
|
7
|
+
delay: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const createLocalClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: LocalClientOptions) => Client<T>;
|
package/dist/client/mock.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Client, Queue } from '@ez4/queue';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const createMockClient: <T extends Queue.Service<any>>(serviceName: string) => Client<T>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Client, Queue } from '@ez4/queue';
|
|
2
|
+
import type { CommonOptions } from '@ez4/project/library';
|
|
3
|
+
import type { MessageSchema } from '@ez4/queue/utils';
|
|
4
|
+
export type RemoteClientOptions = CommonOptions & {
|
|
5
|
+
serviceHost: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const createRemoteClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: RemoteClientOptions) => Client<T>;
|
package/dist/main.cjs
CHANGED
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var
|
|
2
|
-
typeof
|
|
3
|
-
g(e,s,{get:()=>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
0
|
|
21
|
-
|
|
22
|
-
e
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
"use strict";var g=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var i=(e,t)=>g(e,"name",{value:t,configurable:!0});var A=(e,t)=>{for(var r in t)g(e,r,{get:t[r],enumerable:!0})},N=(e,t,r,o)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let s of I(t))!L.call(e,s)&&s!==r&&
|
|
3
|
+
g(e,s,{get:()=>t[s],enumerable:!(o=T(t,s))||o.enumerable});return e};var $=e=>N(g({},"__esModule",{value:!0}),e);var k={};A(k,{registerTriggers:()=>U});module.exports=$(k);var p=require("@ez4/queue/library"),z=require("@ez4/project/library");var d=require("@ez4/project/library");var l=require("@ez4/project/library"),v=require("@ez4/queue/utils");var f=i((e,t,r)=>{let o=(0,l.getServiceName)(e,r),s=`http://${r.serviceHost}/${o}`;
|
|
4
|
+
return new class{async sendMessage(n,a){l.Logger.debug(`\u2709\uFE0F Sending message to q\
|
|
5
|
+
ueue [${e}] at ${s}`);let m=await(0,v.getJsonStringMessage)(n,t);setImmediate(()=>H(
|
|
6
|
+
e,s,m))}receiveMessage(){throw new Error("Receive message isn't supported yet.")}}},
|
|
7
|
+
"createRemoteClient"),H=i(async(e,t,r)=>{try{let o=await fetch(t,{method:"POST",
|
|
8
|
+
body:r,headers:{"content-type":"application/json"}});if(!o.ok){let{message:s}=await o.
|
|
9
|
+
json();throw new Error(s)}}catch{l.Logger.warn(`Remote queue [${e}] at ${t} isn'\
|
|
10
|
+
t available.`)}},"forwardQueueMessage");var h=i((e,t)=>{let{name:r,reference:o,schema:s,project:n}=e,{imports:a}=t;if(!a||
|
|
11
|
+
!a[n])throw new d.MissingImportedProjectError(n);let m={...a[n]};return{type:"Qu\
|
|
12
|
+
eue",name:r,identifier:(0,d.getServiceName)(r,t),clientHandler:i(()=>f(o,s,m),"c\
|
|
13
|
+
lientHandler"),requestHandler:i(c=>P(e,m,c),"requestHandler")}},"registerRemoteS\
|
|
14
|
+
ervices"),P=i(async(e,t,r)=>{let{reference:o,schema:s}=e;return f(o,s,t).sendMessage(
|
|
15
|
+
JSON.parse(r.body.toString()))},"handleQueueForward");var y=require("@ez4/local-common"),S=require("@ez4/queue/utils"),E=require("@ez4/project/library"),
|
|
16
|
+
R=require("@ez4/utils");var u=require("@ez4/local-common"),b=require("@ez4/utils");var O=i(async(e,t,r,o,s)=>{let n=await(0,u.createModule)({listener:o.listener,handler:o.
|
|
17
|
+
handler,version:t.version,variables:{...t.variables,...e.variables,...o.variables}}),
|
|
18
|
+
a=e.services&&r.makeClients(e.services),m,c={requestId:(0,b.getRandomUUID)()};try{
|
|
19
|
+
await(0,u.onBegin)(n,a,c),m={...c,message:s},await(0,u.onReady)(n,a,m),await n.handler(
|
|
20
|
+
m,a),await(0,u.onDone)(n,a,m)}catch(x){await(0,u.onError)(n,a,m??c,x)}finally{await(0,u.onEnd)(
|
|
21
|
+
n,a,c)}},"processLambdaMessage");var Q=require("@ez4/queue/utils"),w=require("@ez4/project/library");var q=i((e,t,r)=>new class{async sendMessage(o,s){w.Logger.debug(`\u2709\uFE0F Sending me\
|
|
22
|
+
ssage to queue [${e}]`);let n=await(0,Q.getJsonMessage)(o,t),a=s?.delay??r.delay;
|
|
23
|
+
setTimeout(()=>r.handler(n),a*1e3)}receiveMessage(){throw new Error("Receive mes\
|
|
24
|
+
sage isn't supported yet.")}},"createLocalClient");var C=i((e,t,r)=>{let{name:o,schema:s}=e,n={...t,delay:e.delay??0,handler:i(a=>M(
|
|
25
|
+
e,t,r,a),"handler")};return{type:"Queue",name:o,identifier:(0,E.getServiceName)(
|
|
26
|
+
o,t),clientHandler:i(()=>q(o,s,n),"clientHandler"),requestHandler:i(a=>J(e,t,r,a),
|
|
27
|
+
"requestHandler")}},"registerLocalServices"),J=i(async(e,t,r,o)=>{let{method:s,path:n,
|
|
28
|
+
body:a}=o;if(s!=="POST"||n!=="/"||!a)throw new Error("Unsupported queue request.");
|
|
29
|
+
try{let m=JSON.parse(a.toString()),c=await(0,S.getJsonMessage)(m,e.schema);return await M(
|
|
30
|
+
e,t,r,c),(0,y.getResponseSuccess)(201)}catch(m){if(!(m instanceof S.MalformedMessageError))
|
|
31
|
+
throw m;return(0,y.getResponseError)(400,{message:m.message,details:m.details})}},
|
|
32
|
+
"handleQueueRequest"),M=i(async(e,t,r,o)=>{let s=(0,R.getRandomInteger)(0,e.subscriptions.
|
|
33
|
+
length-1),n=e.subscriptions[s];n&&await O(e,t,r,n,o)},"handleQueueMessage");var j=!1,U=i(()=>{j||((0,p.registerTriggers)(),(0,z.createTrigger)("@ez4/local-q\
|
|
34
|
+
ueue",{"emulator:getServices":i(({service:e,options:t,context:r})=>(0,p.isQueueService)(
|
|
35
|
+
e)?C(e,t,r):(0,p.isQueueImport)(e)?h(e,t):null,"emulator:getServices")}),j=!0)},
|
|
36
|
+
"registerTriggers");0&&(module.exports={registerTriggers});
|
|
33
37
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
var
|
|
2
|
-
import{createTrigger as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
i
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
var h=Object.defineProperty;var n=(e,t)=>h(e,"name",{value:t,configurable:!0});import{isQueueImport as k,isQueueService as D,registerTriggers as B}from"@ez4/queue/library";
|
|
2
|
+
import{createTrigger as F}from"@ez4/project/library";import{getServiceName as w,MissingImportedProjectError as q}from"@ez4/project/library";import{getServiceName as b,Logger as p}from"@ez4/project/library";import{getJsonStringMessage as O}from"@ez4/queue/utils";var c=n((e,t,r)=>{let o=b(e,r),a=`http://${r.serviceHost}/${o}`;return new class{async sendMessage(s,i){
|
|
3
|
+
p.debug(`\u2709\uFE0F Sending message to queue [${e}] at ${a}`);let m=await O(s,
|
|
4
|
+
t);setImmediate(()=>Q(e,a,m))}receiveMessage(){throw new Error("Receive message \
|
|
5
|
+
isn't supported yet.")}}},"createRemoteClient"),Q=n(async(e,t,r)=>{try{let o=await fetch(
|
|
6
|
+
t,{method:"POST",body:r,headers:{"content-type":"application/json"}});if(!o.ok){
|
|
7
|
+
let{message:a}=await o.json();throw new Error(a)}}catch{p.warn(`Remote queue [${e}\
|
|
8
|
+
] at ${t} isn't available.`)}},"forwardQueueMessage");var l=n((e,t)=>{let{name:r,reference:o,schema:a,project:s}=e,{imports:i}=t;if(!i||
|
|
9
|
+
!i[s])throw new q(s);let m={...i[s]};return{type:"Queue",name:r,identifier:w(r,t),
|
|
10
|
+
clientHandler:n(()=>c(o,a,m),"clientHandler"),requestHandler:n(u=>E(e,m,u),"requ\
|
|
11
|
+
estHandler")}},"registerRemoteServices"),E=n(async(e,t,r)=>{let{reference:o,schema:a}=e;
|
|
12
|
+
return c(o,a,t).sendMessage(JSON.parse(r.body.toString()))},"handleQueueForward");import{getResponseError as A,getResponseSuccess as N}from"@ez4/local-common";import{
|
|
13
|
+
getJsonMessage as $,MalformedMessageError as H}from"@ez4/queue/utils";import{getServiceName as P}from"@ez4/project/library";
|
|
14
|
+
import{getRandomInteger as J}from"@ez4/utils";import{createModule as R,onBegin as C,onReady as M,onDone as j,onError as z,onEnd as x}from"@ez4/local-common";
|
|
15
|
+
import{getRandomUUID as T}from"@ez4/utils";var g=n(async(e,t,r,o,a)=>{let s=await R({listener:o.listener,handler:o.handler,
|
|
16
|
+
version:t.version,variables:{...t.variables,...e.variables,...o.variables}}),i=e.
|
|
17
|
+
services&&r.makeClients(e.services),m,u={requestId:T()};try{await C(s,i,u),m={...u,
|
|
18
|
+
message:a},await M(s,i,m),await s.handler(m,i),await j(s,i,m)}catch(v){await z(s,
|
|
19
|
+
i,m??u,v)}finally{await x(s,i,u)}},"processLambdaMessage");import{getJsonMessage as I}from"@ez4/queue/utils";import{Logger as L}from"@ez4/project/library";var d=n((e,t,r)=>new class{async sendMessage(o,a){L.debug(`\u2709\uFE0F Sending message t\
|
|
20
|
+
o queue [${e}]`);let s=await I(o,t),i=a?.delay??r.delay;setTimeout(()=>r.handler(
|
|
21
|
+
s),i*1e3)}receiveMessage(){throw new Error("Receive message isn't supported yet.")}},
|
|
22
|
+
"createLocalClient");var y=n((e,t,r)=>{let{name:o,schema:a}=e,s={...t,delay:e.delay??0,handler:n(i=>S(
|
|
23
|
+
e,t,r,i),"handler")};return{type:"Queue",name:o,identifier:P(o,t),clientHandler:n(
|
|
24
|
+
()=>d(o,a,s),"clientHandler"),requestHandler:n(i=>U(e,t,r,i),"requestHandler")}},
|
|
25
|
+
"registerLocalServices"),U=n(async(e,t,r,o)=>{let{method:a,path:s,body:i}=o;if(a!==
|
|
26
|
+
"POST"||s!=="/"||!i)throw new Error("Unsupported queue request.");try{let m=JSON.
|
|
27
|
+
parse(i.toString()),u=await $(m,e.schema);return await S(e,t,r,u),N(201)}catch(m){
|
|
28
|
+
if(!(m instanceof H))throw m;return A(400,{message:m.message,details:m.details})}},
|
|
29
|
+
"handleQueueRequest"),S=n(async(e,t,r,o)=>{let a=J(0,e.subscriptions.length-1),s=e.
|
|
30
|
+
subscriptions[a];s&&await g(e,t,r,s,o)},"handleQueueMessage");var f=!1,we=n(()=>{f||(B(),F("@ez4/local-queue",{"emulator:getServices":n(({service:e,
|
|
31
|
+
options:t,context:r})=>D(e)?y(e,t,r):k(e)?l(e,t):null,"emulator:getServices")}),
|
|
32
|
+
f=!0)},"registerTriggers");export{we as registerTriggers};
|
|
29
33
|
//# sourceMappingURL=main.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EmulateServiceContext, EmulatorServiceRequest, ServeOptions } from '@ez4/project/library';
|
|
2
2
|
import type { QueueImport, QueueService } from '@ez4/queue/library';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const registerLocalServices: (service: QueueService, options: ServeOptions, context: EmulateServiceContext) => {
|
|
4
4
|
type: string;
|
|
5
5
|
name: string;
|
|
6
6
|
identifier: string;
|
|
@@ -13,3 +13,10 @@ export declare const registerQueueServices: (service: QueueService | QueueImport
|
|
|
13
13
|
};
|
|
14
14
|
}>;
|
|
15
15
|
};
|
|
16
|
+
export declare const registerRemoteServices: (service: QueueImport, options: ServeOptions) => {
|
|
17
|
+
type: string;
|
|
18
|
+
name: string;
|
|
19
|
+
identifier: string;
|
|
20
|
+
clientHandler: () => import("@ez4/queue").Client<import("@ez4/queue").Queue.Service<any>>;
|
|
21
|
+
requestHandler: (request: EmulatorServiceRequest) => Promise<void>;
|
|
22
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EmulateServiceContext, EmulatorServiceRequest, ServeOptions } from '@ez4/project/library';
|
|
2
|
+
import type { QueueService } from '@ez4/queue/library';
|
|
3
|
+
export declare const registerLocalServices: (service: QueueService, options: ServeOptions, context: EmulateServiceContext) => {
|
|
4
|
+
type: string;
|
|
5
|
+
name: string;
|
|
6
|
+
identifier: string;
|
|
7
|
+
clientHandler: () => import("@ez4/queue").Client<import("@ez4/queue").Queue.Service<any>>;
|
|
8
|
+
requestHandler: (request: EmulatorServiceRequest) => Promise<{
|
|
9
|
+
body?: string | undefined;
|
|
10
|
+
status: number;
|
|
11
|
+
headers: {
|
|
12
|
+
"content-type"?: string | undefined;
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EmulatorServiceRequest, ServeOptions } from '@ez4/project/library';
|
|
2
|
+
import type { QueueImport } from '@ez4/queue/library';
|
|
3
|
+
export declare const registerRemoteServices: (service: QueueImport, options: ServeOptions) => {
|
|
4
|
+
type: string;
|
|
5
|
+
name: string;
|
|
6
|
+
identifier: string;
|
|
7
|
+
clientHandler: () => import("@ez4/queue").Client<import("@ez4/queue").Queue.Service<any>>;
|
|
8
|
+
requestHandler: (request: EmulatorServiceRequest) => Promise<void>;
|
|
9
|
+
};
|
package/dist/test.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
typeof e=="object"||typeof e=="function")for(let r of M(e))!l.call(t,r)&&r!==s&&
|
|
3
3
|
i(t,r,{get:()=>e[r],enumerable:!(o=g(e,r))||o.enumerable});return t};var v=t=>C(i({},"__esModule",{value:!0}),t);var k={};d(k,{QueueTester:()=>p});module.exports=v(k);var a=require("@ez4/project/library"),c=require("node:test");var m=require("@ez4/project/library");var u=n(t=>new class{sendMessage(e,s){return m.Logger.debug(`\u2709\uFE0F Sending message\
|
|
4
4
|
to queue [${t}]`),Promise.resolve()}receiveMessage(){throw new Error("Receive m\
|
|
5
|
-
essage isn't supported yet.")}},"
|
|
5
|
+
essage isn't supported yet.")}},"createMockClient");var p;(s=>(s.getClient=n(o=>a.Tester.getServiceClient(o),"getClient"),s.getClientMock=
|
|
6
6
|
n(o=>{let r=u(o??"QueueMock");return c.mock.method(r,"sendMessage"),c.mock.method(
|
|
7
7
|
r,"receiveMessage"),r},"getClientMock")))(p||={});0&&(module.exports={QueueTester});
|
|
8
8
|
//# sourceMappingURL=test.cjs.map
|
package/dist/test.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var m=Object.defineProperty;var e=(t,r)=>m(t,"name",{value:r,configurable:!0});import{Tester as a}from"@ez4/project/library";import{mock as c}from"node:test";import{Logger as u}from"@ez4/project/library";var i=e(t=>new class{sendMessage(r,s){return u.debug(`\u2709\uFE0F Sending message to que\
|
|
2
2
|
ue [${t}]`),Promise.resolve()}receiveMessage(){throw new Error("Receive message \
|
|
3
|
-
isn't supported yet.")}},"
|
|
3
|
+
isn't supported yet.")}},"createMockClient");var p;(s=>(s.getClient=e(o=>a.getServiceClient(o),"getClient"),s.getClientMock=e(
|
|
4
4
|
o=>{let n=i(o??"QueueMock");return c.method(n,"sendMessage"),c.method(n,"receive\
|
|
5
5
|
Message"),n},"getClientMock")))(p||={});export{p as QueueTester};
|
|
6
6
|
//# 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.32.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"live:publish": "npm run build && npm publish --access public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@ez4/common": "^0.
|
|
47
|
-
"@ez4/local-common": "^0.
|
|
48
|
-
"@ez4/project": "^0.
|
|
49
|
-
"@ez4/queue": "^0.
|
|
50
|
-
"@ez4/utils": "^0.
|
|
46
|
+
"@ez4/common": "^0.32.0",
|
|
47
|
+
"@ez4/local-common": "^0.32.0",
|
|
48
|
+
"@ez4/project": "^0.32.0",
|
|
49
|
+
"@ez4/queue": "^0.32.0",
|
|
50
|
+
"@ez4/utils": "^0.32.0"
|
|
51
51
|
}
|
|
52
52
|
}
|