@ez4/local-queue 0.23.0 → 0.25.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>;
@@ -0,0 +1,4 @@
1
+ import type { QueueImport, QueueService, QueueSubscription } from '@ez4/queue/library';
2
+ import type { EmulateServiceContext, ServeOptions } from '@ez4/project/library';
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,24 +1,33 @@
1
- "use strict";var p=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var i=(e,r)=>p(e,"name",{value:r,configurable:!0});var x=(e,r)=>{for(var s in r)p(e,s,{get:r[s],enumerable:!0})},I=(e,r,s,t)=>{if(r&&
2
- typeof r=="object"||typeof r=="function")for(let o of M(r))!q.call(e,o)&&o!==s&&
3
- p(e,o,{get:()=>r[o],enumerable:!(t=E(r,o))||t.enumerable});return e};var C=e=>I(p({},"__esModule",{value:!0}),e);var z={};x(z,{registerTriggers:()=>R});module.exports=C(z);var c=require("@ez4/queue/library"),b=require("@ez4/project/library");var u=require("@ez4/local-common"),g=require("@ez4/utils"),v=require("@ez4/project/library"),
4
- Q=require("@ez4/queue/utils");var l=require("@ez4/project/library"),d=require("@ez4/queue/utils");var f=i((e,r,s)=>{let t=(0,l.getServiceName)(e,s),o=`http://${s.serviceHost}/${t}`;
5
- return new class{async sendMessage(a){let n=await(0,d.getJsonStringMessage)(a,r);
6
- if(l.Logger.log(`\u2709\uFE0F Sending message to Queue [${e}] at ${o}`),!(await fetch(
7
- o,{method:"POST",body:n,headers:{"content-type":"application/json"}})).ok)throw new Error(
8
- `Queue ${e} isn't available.`)}async receiveMessage(){throw new Error("Receive m\
9
- essage isn't supported yet.")}}},"createQueueClient");var y=i((e,r,s)=>{let{name:t,schema:o}=e;return{type:"Queue",name:t,identifier:(0,v.getServiceName)(
10
- t,r),clientHandler:i(()=>f(t,o,r),"clientHandler"),requestHandler:i(a=>T(e,r,s,a),
11
- "requestHandler")}},"registerQueueServices"),T=i(async(e,r,s,t)=>{if(t.method!==
12
- "POST"||t.path!=="/"||!t.body)throw new Error("Unsupported queue request.");let o=(0,g.getRandomInteger)(
13
- 0,e.subscriptions.length-1),a=e.subscriptions[o];return a&&await O(e,r,s,a,t.body),
14
- {status:204}},"handleQueueMessage"),O=i(async(e,r,s,t,o)=>{let a=await(0,u.createModule)(
15
- {version:r.version,listener:t.listener,handler:t.handler,variables:{...r.variables,
16
- ...e.variables,...t.variables}}),n=e.services&&s.makeClients(e.services),m={requestId:(0,g.getRandomUUID)()};
17
- try{await(0,u.onBegin)(a,n,m);let S=JSON.parse(o.toString()),w=await(0,Q.getJsonMessage)(
18
- S,e.schema);Object.assign(m,{message:w}),await(0,u.onReady)(a,n,m),await a.handler(
19
- m,n)}catch(S){await(0,u.onError)(a,n,m,S)}finally{await(0,u.onEnd)(a,n,m)}},"pro\
20
- cessLambdaMessage");var h=!1,R=i(()=>{h||((0,c.registerTriggers)(),(0,b.createTrigger)("@ez4/local-q\
21
- ueue",{"emulator:getServices":i(({service:e,options:r,context:s})=>(0,c.isQueueService)(
22
- e)||(0,c.isQueueImport)(e)?y(e,r,s):null,"emulator:getServices")}),h=!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\
23
32
  terTriggers");0&&(module.exports={registerTriggers});
24
33
  //# sourceMappingURL=main.cjs.map
package/dist/main.mjs CHANGED
@@ -1,21 +1,29 @@
1
- var S=Object.defineProperty;var o=(e,r)=>S(e,"name",{value:r,configurable:!0});import{isQueueImport as T,isQueueService as O,registerTriggers as R}from"@ez4/queue/library";
2
- import{createTrigger as z}from"@ez4/project/library";import{createModule as Q,onBegin as y,onEnd as h,onError as b,onReady as w}from"@ez4/local-common";
3
- import{getRandomInteger as E,getRandomUUID as M}from"@ez4/utils";import{getServiceName as q}from"@ez4/project/library";
4
- import{getJsonMessage as x}from"@ez4/queue/utils";import{getServiceName as d,Logger as f}from"@ez4/project/library";import{getJsonStringMessage as v}from"@ez4/queue/utils";var c=o((e,r,a)=>{let t=d(e,a),i=`http://${a.serviceHost}/${t}`;return new class{async sendMessage(s){
5
- let u=await v(s,r);if(f.log(`\u2709\uFE0F Sending message to Queue [${e}] at ${i}`),
6
- !(await fetch(i,{method:"POST",body:u,headers:{"content-type":"application/json"}})).
7
- ok)throw new Error(`Queue ${e} isn't available.`)}async receiveMessage(){throw new Error(
8
- "Receive message isn't supported yet.")}}},"createQueueClient");var p=o((e,r,a)=>{let{name:t,schema:i}=e;return{type:"Queue",name:t,identifier:q(
9
- t,r),clientHandler:o(()=>c(t,i,r),"clientHandler"),requestHandler:o(s=>I(e,r,a,s),
10
- "requestHandler")}},"registerQueueServices"),I=o(async(e,r,a,t)=>{if(t.method!==
11
- "POST"||t.path!=="/"||!t.body)throw new Error("Unsupported queue request.");let i=E(
12
- 0,e.subscriptions.length-1),s=e.subscriptions[i];return s&&await C(e,r,a,s,t.body),
13
- {status:204}},"handleQueueMessage"),C=o(async(e,r,a,t,i)=>{let s=await Q({version:r.
14
- version,listener:t.listener,handler:t.handler,variables:{...r.variables,...e.variables,
15
- ...t.variables}}),u=e.services&&a.makeClients(e.services),n={requestId:M()};try{
16
- await y(s,u,n);let m=JSON.parse(i.toString()),g=await x(m,e.schema);Object.assign(
17
- n,{message:g}),await w(s,u,n),await s.handler(n,u)}catch(m){await b(s,u,n,m)}finally{
18
- await h(s,u,n)}},"processLambdaMessage");var l=!1,W=o(()=>{l||(R(),z("@ez4/local-queue",{"emulator:getServices":o(({service:e,
19
- options:r,context:a})=>O(e)||T(e)?p(e,r,a):null,"emulator:getServices")}),l=!0)},
20
- "registerTriggers");export{W 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};
21
29
  //# sourceMappingURL=main.mjs.map
@@ -1,12 +1,15 @@
1
1
  import type { EmulateServiceContext, EmulatorServiceRequest, ServeOptions } from '@ez4/project/library';
2
2
  import type { QueueImport, QueueService } from '@ez4/queue/library';
3
- import type { Queue } from '@ez4/queue';
4
3
  export declare const registerQueueServices: (service: QueueService | QueueImport, options: ServeOptions, context: EmulateServiceContext) => {
5
4
  type: string;
6
5
  name: string;
7
6
  identifier: string;
8
- clientHandler: () => import("@ez4/queue").Client<Queue.Service<any>>;
7
+ clientHandler: () => import("@ez4/queue").Client<import("@ez4/queue").Queue.Service<any>>;
9
8
  requestHandler: (request: EmulatorServiceRequest) => Promise<{
9
+ body?: string | undefined;
10
10
  status: number;
11
+ headers: {
12
+ "content-type"?: string | undefined;
13
+ };
11
14
  }>;
12
15
  };
@@ -1,4 +1,7 @@
1
1
  import type { Client, Queue } from '@ez4/queue';
2
2
  import type { ServeOptions } from '@ez4/project/library';
3
3
  import type { MessageSchema } from '@ez4/queue/utils';
4
- export declare const createQueueClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, serveOptions: ServeOptions) => Client<T>;
4
+ export type ClientOptions = ServeOptions & {
5
+ delay?: number;
6
+ };
7
+ export declare const createQueueClient: <T extends Queue.Service<any>>(serviceName: string, messageSchema: MessageSchema, clientOptions: ClientOptions) => Client<T>;
@@ -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
@@ -0,0 +1,9 @@
1
+ import type { Client, Queue } from '@ez4/queue';
2
+ import type { Mock } from 'node:test';
3
+ export declare namespace QueueTester {
4
+ const getClient: <T extends Queue.Message>(resourceName: string) => Client<Queue.Service<T>>;
5
+ const getMock: (resourceName?: string) => Client<Queue.Service<any>> & {
6
+ sendMessage: Mock<Client<Queue.Service<any>>["sendMessage"]>;
7
+ receiveMessage: Mock<Client<Queue.Service<any>>["receiveMessage"]>;
8
+ };
9
+ }
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.23.0",
4
+ "version": "0.25.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": [
@@ -29,6 +34,7 @@
29
34
  "providers/local/*"
30
35
  ],
31
36
  "scripts": {
37
+ "lint": "eslint --cache",
32
38
  "clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
33
39
  "build": "tsc -p tsconfig.json && node tools/bundler.mjs",
34
40
  "test": "npm run test:types && node --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
@@ -36,13 +42,13 @@
36
42
  "test:types": "npm run build && tsc -p tsconfig.test.json",
37
43
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
38
44
  "clean:registry": "rm -rf ../../../.registry/@ez4/local-queue",
39
- "live:publish": "npm run test && npm publish --access public"
45
+ "live:publish": "npm publish --access public"
40
46
  },
41
47
  "dependencies": {
42
- "@ez4/common": "^0.23.0",
43
- "@ez4/local-common": "^0.23.0",
44
- "@ez4/project": "^0.23.0",
45
- "@ez4/queue": "^0.23.0",
46
- "@ez4/utils": "^0.23.0"
48
+ "@ez4/common": "^0.25.0",
49
+ "@ez4/local-common": "^0.25.0",
50
+ "@ez4/project": "^0.25.0",
51
+ "@ez4/queue": "^0.25.0",
52
+ "@ez4/utils": "^0.25.0"
47
53
  }
48
54
  }