@ez4/local-queue 0.24.0 → 0.26.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.
@@ -0,0 +1,7 @@
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
+ export type ImportedClientOptions = ServeOptions & {
5
+ delay: number;
6
+ };
7
+ export declare const createImportedClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: ImportedClientOptions) => Client<T>;
@@ -0,0 +1,2 @@
1
+ import type { Client, Queue } from '@ez4/queue';
2
+ export declare const createMockedClient: <T extends Queue.Service<any>>(serviceName: string) => 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 ServiceClientOptions = ServeOptions & {
6
+ handler: (message: AnyObject) => Promise<void>;
7
+ delay: number;
8
+ };
9
+ export declare const createServiceClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: ServiceClientOptions) => Client<T>;
@@ -1,3 +1,4 @@
1
1
  import type { QueueImport, QueueService, QueueSubscription } from '@ez4/queue/library';
2
2
  import type { EmulateServiceContext, ServeOptions } from '@ez4/project/library';
3
- export declare const processLambdaMessage: (service: QueueService | QueueImport, options: ServeOptions, context: EmulateServiceContext, subscription: QueueSubscription, message: Buffer) => Promise<void>;
3
+ import type { AnyObject } from '@ez4/utils';
4
+ export declare const processLambdaMessage: (service: QueueService | QueueImport, options: ServeOptions, context: EmulateServiceContext, subscription: QueueSubscription, message: AnyObject) => Promise<void>;
package/dist/main.cjs CHANGED
@@ -1,26 +1,33 @@
1
- "use strict";var g=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var i=(e,r)=>g(e,"name",{value:r,configurable:!0});var z=(e,r)=>{for(var t in r)g(e,t,{get:r[t],enumerable:!0})},T=(e,r,t,o)=>{if(r&&
2
- typeof r=="object"||typeof r=="function")for(let s of R(r))!C.call(e,s)&&s!==t&&
3
- g(e,s,{get:()=>r[s],enumerable:!(o=I(r,s))||o.enumerable});return e};var O=e=>T(g({},"__esModule",{value:!0}),e);var H={};z(H,{registerTriggers:()=>$});module.exports=O(H);var l=require("@ez4/queue/library"),M=require("@ez4/project/library");var b=require("@ez4/project/library"),S=require("@ez4/queue/utils"),f=require("@ez4/local-common"),
4
- q=require("@ez4/utils");var m=require("@ez4/local-common"),v=require("@ez4/utils");var y=i(async(e,r,t,o,s)=>{let u=await(0,m.createModule)({listener:o.listener,handler:o.
5
- handler,version:r.version,variables:{...r.variables,...e.variables,...o.variables}}),
6
- n=e.services&&t.makeClients(e.services),a,c={requestId:(0,v.getRandomUUID)()};try{
7
- await(0,m.onBegin)(u,n,c),a={...c,message:s},await(0,m.onReady)(u,n,a),await u.handler(
8
- a,n)}catch(d){await(0,m.onError)(u,n,a??c,d)}finally{await(0,m.onEnd)(u,n,c)}},"\
9
- processLambdaMessage");var p=require("@ez4/project/library"),Q=require("@ez4/queue/utils");var h=i((e,r,t)=>{let o=(0,p.getServiceName)(e,t),s=`http://${t.serviceHost}/${o}`;
10
- return new class{async sendMessage(u){p.Logger.log(`\u2709\uFE0F Sending message to Queue\
11
- [${e}] at ${s}`);let n=await(0,Q.getJsonStringMessage)(u,r);try{(await fetch(s,
12
- {method:"POST",body:n,headers:{"content-type":"application/json"}})).ok||p.Logger.
13
- error(`Queue [${e}] isn't available.`)}catch(a){p.Logger.error(`${a}`)}}async receiveMessage(){
14
- throw new Error("Receive message isn't supported yet.")}}},"createQueueClient");var E=i((e,r,t)=>{let{name:o,schema:s}=e;return{type:"Queue",name:o,identifier:(0,b.getServiceName)(
15
- o,r),clientHandler:i(()=>h(o,s,r),"clientHandler"),requestHandler:i(u=>j(e,r,t,u),
16
- "requestHandler")}},"registerQueueServices"),j=i(async(e,r,t,o)=>{let{method:s,path:u,
17
- body:n}=o;if(s!=="POST"||u!=="/"||!n)throw new Error("Unsupported queue request.");
18
- try{let a=(0,q.getRandomInteger)(0,e.subscriptions.length-1),c=e.subscriptions[a],
19
- d=JSON.parse(n.toString()),x=await(0,S.getJsonMessage)(d,e.schema);return c&&await y(
20
- e,r,t,c,x),(0,f.getResponseSuccess)(201)}catch(a){if(!(a instanceof S.MalformedMessageError))
21
- throw a;return(0,f.getResponseError)(400,{message:a.message,details:a.details})}},
22
- "handleQueueMessage");var w=!1,$=i(()=>{w||((0,l.registerTriggers)(),(0,M.createTrigger)("@ez4/local-q\
23
- ueue",{"emulator:getServices":i(({service:e,options:r,context:t})=>(0,l.isQueueService)(
24
- e)||(0,l.isQueueImport)(e)?E(e,r,t):null,"emulator:getServices")}),w=!0)},"regis\
1
+ "use strict";var g=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var a=(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})},$=(e,t,r,o)=>{if(t&&
2
+ typeof t=="object"||typeof t=="function")for(let s of j(t))!R.call(e,s)&&s!==r&&
3
+ g(e,s,{get:()=>t[s],enumerable:!(o=z(t,s))||o.enumerable});return e};var P=e=>$(g({},"__esModule",{value:!0}),e);var U={};A(U,{registerTriggers:()=>L});module.exports=P(U);var l=require("@ez4/queue/library"),T=require("@ez4/project/library");var d=require("@ez4/queue/utils"),y=require("@ez4/local-common"),M=require("@ez4/project/library"),
4
+ q=require("@ez4/queue/library"),w=require("@ez4/utils");var m=require("@ez4/local-common"),S=require("@ez4/utils");var f=a(async(e,t,r,o,s)=>{let i=await(0,m.createModule)({listener:o.listener,handler:o.
5
+ handler,version:t.version,variables:{...t.variables,...e.variables,...o.variables}}),
6
+ u=e.services&&r.makeClients(e.services),n,p={requestId:(0,S.getRandomUUID)()};try{
7
+ await(0,m.onBegin)(i,u,p),n={...p,message:s},await(0,m.onReady)(i,u,n),await i.handler(
8
+ n,u)}catch(x){await(0,m.onError)(i,u,n??p,x)}finally{await(0,m.onEnd)(i,u,p)}},"\
9
+ processLambdaMessage");var v=require("@ez4/queue/utils"),b=require("@ez4/project/library");var h=a((e,t,r)=>new class{async sendMessage(o,s){b.Logger.debug(`\u2709\uFE0F Sending me\
10
+ ssage to Queue [${e}]`);let i=await(0,v.getJsonMessage)(o,t),u=s?.delay??r.delay;
11
+ setTimeout(()=>r.handler(i),u*1e3)}async receiveMessage(){throw new Error("Recei\
12
+ ve message isn't supported yet.")}},"createServiceClient");var c=require("@ez4/project/library"),Q=require("@ez4/queue/utils");var O=a((e,t,r)=>{let o=(0,c.getServiceName)(e,r),s=`http://${r.serviceHost}/${o}`;
13
+ return new class{async sendMessage(i,u){c.Logger.debug(`\u2709\uFE0F Sending message to Q\
14
+ ueue [${e}] at ${s}`);let n=await(0,Q.getJsonStringMessage)(i,t),p=u?.delay??r.delay;
15
+ setTimeout(()=>H(e,s,n),p*1e3)}async receiveMessage(){throw new Error("Receive m\
16
+ essage isn't supported yet.")}}},"createImportedClient"),H=a(async(e,t,r)=>{try{
17
+ (await fetch(t,{method:"POST",body:r,headers:{"content-type":"application/json"}})).
18
+ ok||c.Logger.error(`Queue [${e}] isn't available.`)}catch(o){c.Logger.error(`${o}`)}},
19
+ "postMessage");var C=a((e,t,r)=>{let{name:o,schema:s}=e,i=(0,q.isQueueImport)(e),u={...t,delay:i?
20
+ 0:e.delay??0,handler:a(n=>E(e,t,r,n),"handler")};return{type:"Queue",name:o,identifier:(0,M.getServiceName)(
21
+ o,t),clientHandler:a(()=>i?O(o,s,u):h(o,s,u),"clientHandler"),requestHandler:a(n=>J(
22
+ e,t,r,n),"requestHandler")}},"registerQueueServices"),J=a(async(e,t,r,o)=>{let{method:s,
23
+ path:i,body:u}=o;if(s!=="POST"||i!=="/"||!u)throw new Error("Unsupported queue r\
24
+ equest.");try{let n=JSON.parse(u.toString()),p=await(0,d.getJsonMessage)(n,e.schema);
25
+ return await E(e,t,r,p),(0,y.getResponseSuccess)(201)}catch(n){if(!(n instanceof
26
+ d.MalformedMessageError))throw n;return(0,y.getResponseError)(400,{message:n.message,
27
+ details:n.details})}},"handleQueueRequest"),E=a(async(e,t,r,o)=>{let s=(0,w.getRandomInteger)(
28
+ 0,e.subscriptions.length-1),i=e.subscriptions[s];i&&await f(e,t,r,i,o)},"handleQ\
29
+ ueueMessage");var I=!1,L=a(()=>{I||((0,l.registerTriggers)(),(0,T.createTrigger)("@ez4/local-q\
30
+ ueue",{"emulator:getServices":a(({service:e,options:t,context:r})=>(0,l.isQueueService)(
31
+ e)||(0,l.isQueueImport)(e)?C(e,t,r):null,"emulator:getServices")}),I=!0)},"regis\
25
32
  terTriggers");0&&(module.exports={registerTriggers});
26
33
  //# sourceMappingURL=main.cjs.map
package/dist/main.mjs CHANGED
@@ -1,23 +1,29 @@
1
- var v=Object.defineProperty;var o=(e,r)=>v(e,"name",{value:r,configurable:!0});import{isQueueImport as j,isQueueService as $,registerTriggers as H}from"@ez4/queue/library";
2
- import{createTrigger as J}from"@ez4/project/library";import{getServiceName as x}from"@ez4/project/library";import{getJsonMessage as I,
3
- MalformedMessageError as R}from"@ez4/queue/utils";import{getResponseError as C,getResponseSuccess as z}from"@ez4/local-common";
4
- import{getRandomInteger as T}from"@ez4/utils";import{createModule as y,onBegin as Q,onEnd as h,onError as b,onReady as q}from"@ez4/local-common";
5
- import{getRandomUUID as E}from"@ez4/utils";var l=o(async(e,r,i,s,n)=>{let a=await y({listener:s.listener,handler:s.handler,
6
- version:r.version,variables:{...r.variables,...e.variables,...s.variables}}),u=e.
7
- services&&i.makeClients(e.services),t,m={requestId:E()};try{await Q(a,u,m),t={...m,
8
- message:n},await q(a,u,t),await a.handler(t,u)}catch(c){await b(a,u,t??m,c)}finally{
9
- await h(a,u,m)}},"processLambdaMessage");import{getServiceName as w,Logger as p}from"@ez4/project/library";import{getJsonStringMessage as M}from"@ez4/queue/utils";var g=o((e,r,i)=>{let s=w(e,i),n=`http://${i.serviceHost}/${s}`;return new class{async sendMessage(a){
10
- p.log(`\u2709\uFE0F Sending message to Queue [${e}] at ${n}`);let u=await M(a,r);
11
- try{(await fetch(n,{method:"POST",body:u,headers:{"content-type":"application/js\
12
- on"}})).ok||p.error(`Queue [${e}] isn't available.`)}catch(t){p.error(`${t}`)}}async receiveMessage(){
13
- throw new Error("Receive message isn't supported yet.")}}},"createQueueClient");var S=o((e,r,i)=>{let{name:s,schema:n}=e;return{type:"Queue",name:s,identifier:x(
14
- s,r),clientHandler:o(()=>g(s,n,r),"clientHandler"),requestHandler:o(a=>O(e,r,i,a),
15
- "requestHandler")}},"registerQueueServices"),O=o(async(e,r,i,s)=>{let{method:n,path:a,
16
- body:u}=s;if(n!=="POST"||a!=="/"||!u)throw new Error("Unsupported queue request.");
17
- try{let t=T(0,e.subscriptions.length-1),m=e.subscriptions[t],c=JSON.parse(u.toString()),
18
- d=await I(c,e.schema);return m&&await l(e,r,i,m,d),z(201)}catch(t){if(!(t instanceof
19
- R))throw t;return C(400,{message:t.message,details:t.details})}},"handleQueueMes\
20
- sage");var f=!1,se=o(()=>{f||(H(),J("@ez4/local-queue",{"emulator:getServices":o(({service:e,
21
- options:r,context:i})=>$(e)||j(e)?S(e,r,i):null,"emulator:getServices")}),f=!0)},
22
- "registerTriggers");export{se as registerTriggers};
1
+ var v=Object.defineProperty;var n=(e,t)=>v(e,"name",{value:t,configurable:!0});import{isQueueImport as J,isQueueService as L,registerTriggers as U}from"@ez4/queue/library";
2
+ import{createTrigger as k}from"@ez4/project/library";import{getJsonMessage as x,MalformedMessageError as z}from"@ez4/queue/utils";import{
3
+ getResponseError as j,getResponseSuccess as R}from"@ez4/local-common";import{getServiceName as A}from"@ez4/project/library";
4
+ import{isQueueImport as $}from"@ez4/queue/library";import{getRandomInteger as P}from"@ez4/utils";import{createModule as b,onBegin as h,onEnd as Q,onError as O,onReady as M}from"@ez4/local-common";
5
+ import{getRandomUUID as q}from"@ez4/utils";var c=n(async(e,t,r,o,u)=>{let s=await b({listener:o.listener,handler:o.handler,
6
+ version:t.version,variables:{...t.variables,...e.variables,...o.variables}}),a=e.
7
+ services&&r.makeClients(e.services),i,m={requestId:q()};try{await h(s,a,m),i={...m,
8
+ message:u},await M(s,a,i),await s.handler(i,a)}catch(f){await O(s,a,i??m,f)}finally{
9
+ await Q(s,a,m)}},"processLambdaMessage");import{getJsonMessage as w}from"@ez4/queue/utils";import{Logger as C}from"@ez4/project/library";var l=n((e,t,r)=>new class{async sendMessage(o,u){C.debug(`\u2709\uFE0F Sending message t\
10
+ o Queue [${e}]`);let s=await w(o,t),a=u?.delay??r.delay;setTimeout(()=>r.handler(
11
+ s),a*1e3)}async receiveMessage(){throw new Error("Receive message isn't supporte\
12
+ d yet.")}},"createServiceClient");import{getServiceName as E,Logger as p}from"@ez4/project/library";import{getJsonStringMessage as I}from"@ez4/queue/utils";var g=n((e,t,r)=>{let o=E(e,r),u=`http://${r.serviceHost}/${o}`;return new class{async sendMessage(s,a){
13
+ p.debug(`\u2709\uFE0F Sending message to Queue [${e}] at ${u}`);let i=await I(s,
14
+ t),m=a?.delay??r.delay;setTimeout(()=>T(e,u,i),m*1e3)}async receiveMessage(){throw new Error(
15
+ "Receive message isn't supported yet.")}}},"createImportedClient"),T=n(async(e,t,r)=>{
16
+ try{(await fetch(t,{method:"POST",body:r,headers:{"content-type":"application/js\
17
+ on"}})).ok||p.error(`Queue [${e}] isn't available.`)}catch(o){p.error(`${o}`)}},
18
+ "postMessage");var d=n((e,t,r)=>{let{name:o,schema:u}=e,s=$(e),a={...t,delay:s?0:e.delay??0,handler:n(
19
+ i=>y(e,t,r,i),"handler")};return{type:"Queue",name:o,identifier:A(o,t),clientHandler:n(
20
+ ()=>s?g(o,u,a):l(o,u,a),"clientHandler"),requestHandler:n(i=>H(e,t,r,i),"request\
21
+ Handler")}},"registerQueueServices"),H=n(async(e,t,r,o)=>{let{method:u,path:s,body:a}=o;
22
+ if(u!=="POST"||s!=="/"||!a)throw new Error("Unsupported queue request.");try{let i=JSON.
23
+ parse(a.toString()),m=await x(i,e.schema);return await y(e,t,r,m),R(201)}catch(i){
24
+ if(!(i instanceof z))throw i;return j(400,{message:i.message,details:i.details})}},
25
+ "handleQueueRequest"),y=n(async(e,t,r,o)=>{let u=P(0,e.subscriptions.length-1),s=e.
26
+ subscriptions[u];s&&await c(e,t,r,s,o)},"handleQueueMessage");var S=!1,Se=n(()=>{S||(U(),k("@ez4/local-queue",{"emulator:getServices":n(({service:e,
27
+ options:t,context:r})=>L(e)||J(e)?d(e,t,r):null,"emulator:getServices")}),S=!0)},
28
+ "registerTriggers");export{Se as registerTriggers};
23
29
  //# sourceMappingURL=main.mjs.map
@@ -0,0 +1,10 @@
1
+ import type { Client, Queue } from '@ez4/queue';
2
+ import type { Mock } from 'node:test';
3
+ export declare namespace QueueTester {
4
+ type ClientMock = Client<Queue.Service<any>> & {
5
+ sendMessage: Mock<Client<Queue.Service<any>>['sendMessage']>;
6
+ receiveMessage: Mock<Client<Queue.Service<any>>['receiveMessage']>;
7
+ };
8
+ const getClient: <T extends Queue.Message>(resourceName: string) => Client<Queue.Service<T>>;
9
+ const getClientMock: (resourceName?: string) => ClientMock;
10
+ }
package/dist/test.cjs ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var r=(t,e)=>i(t,"name",{value:e,configurable:!0});var l=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,o)=>{if(e&&
2
+ typeof e=="object"||typeof e=="function")for(let s of M(e))!d.call(t,s)&&s!==n&&
3
+ i(t,s,{get:()=>e[s],enumerable:!(o=g(e,s))||o.enumerable});return t};var v=t=>C(i({},"__esModule",{value:!0}),t);var y={};l(y,{QueueTester:()=>p});module.exports=v(y);var u=require("@ez4/project/library"),c=require("node:test");var a=require("@ez4/project/library");var m=r(t=>new class{async sendMessage(e,n){a.Logger.debug(`\u2709\uFE0F Sending message \
4
+ to Queue [${t}]`)}async receiveMessage(){throw new Error("Receive message isn't \
5
+ supported yet.")}},"createMockedClient");var p;(n=>(n.getClient=r(o=>u.Tester.getServiceClient(o),"getClient"),n.getClientMock=
6
+ r(o=>{let s=m(o??"QueueMock");return c.mock.method(s,"sendMessage"),c.mock.method(
7
+ s,"receiveMessage"),s},"getClientMock")))(p||={});0&&(module.exports={QueueTester});
8
+ //# sourceMappingURL=test.cjs.map
package/dist/test.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './service/tester.js';
package/dist/test.mjs ADDED
@@ -0,0 +1,6 @@
1
+ var a=Object.defineProperty;var e=(t,s)=>a(t,"name",{value:s,configurable:!0});import{Tester as u}from"@ez4/project/library";import{mock as c}from"node:test";import{Logger as m}from"@ez4/project/library";var i=e(t=>new class{async sendMessage(s,n){m.debug(`\u2709\uFE0F Sending message to Queu\
2
+ e [${t}]`)}async receiveMessage(){throw new Error("Receive message isn't support\
3
+ ed yet.")}},"createMockedClient");var p;(n=>(n.getClient=e(o=>u.getServiceClient(o),"getClient"),n.getClientMock=e(
4
+ o=>{let r=i(o??"QueueMock");return c.method(r,"sendMessage"),c.method(r,"receive\
5
+ Message"),r},"getClientMock")))(p||={});export{p as QueueTester};
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.24.0",
4
+ "version": "0.26.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -22,6 +22,11 @@
22
22
  "types": "./dist/main.d.ts",
23
23
  "require": "./dist/main.cjs",
24
24
  "import": "./dist/main.mjs"
25
+ },
26
+ "./test": {
27
+ "types": "./dist/test.d.ts",
28
+ "require": "./dist/test.cjs",
29
+ "import": "./dist/test.mjs"
25
30
  }
26
31
  },
27
32
  "workspaces": [
@@ -37,13 +42,13 @@
37
42
  "test:types": "npm run build && tsc -p tsconfig.test.json",
38
43
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
39
44
  "clean:registry": "rm -rf ../../../.registry/@ez4/local-queue",
40
- "live:publish": "npm run test && npm publish --access public"
45
+ "live:publish": "npm run build && npm publish --access public"
41
46
  },
42
47
  "dependencies": {
43
- "@ez4/common": "^0.24.0",
44
- "@ez4/local-common": "^0.24.0",
45
- "@ez4/project": "^0.24.0",
46
- "@ez4/queue": "^0.24.0",
47
- "@ez4/utils": "^0.24.0"
48
+ "@ez4/common": "^0.26.0",
49
+ "@ez4/local-common": "^0.26.0",
50
+ "@ez4/project": "^0.26.0",
51
+ "@ez4/queue": "^0.26.0",
52
+ "@ez4/utils": "^0.26.0"
48
53
  }
49
54
  }
@@ -1,4 +0,0 @@
1
- import type { ServeOptions } from '@ez4/project/library';
2
- import type { MessageSchema } from '@ez4/queue/utils';
3
- import type { Client, Queue } from '@ez4/queue';
4
- export declare const createQueueClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, serveOptions: ServeOptions) => Client<T>;