atomservices 0.12.2 → 0.12.3

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.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var h=(r,e)=>{for(var t in e)c(r,t,{get:e[t],enumerable:!0})},y=(r,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of f(e))!u.call(r,n)&&n!==t&&c(r,n,{get:()=>e[n],enumerable:!(a=l(e,n))||a.enumerable});return r};var S=r=>y(c({},"__esModule",{value:!0}),r);var x={};h(x,{EventBuilder:()=>I,InstantEventBus:()=>E,createService:()=>g,generateUUID:()=>s});module.exports=S(x);var g=r=>{let{EventStore:e,EventHandlers:t,EventBus:a}=r,n,p=async()=>(await e.init(),t.forEach(o=>a.subscribe(o)),{async dispatch(o,i){await e.append(o),a.publish(o).then(()=>{i&&i()}).catch(v=>{let d=v instanceof Error?v:new Error(String(v));i&&i(d)})}});return{async dispatch(o,i){return n||(n=p()),(await n).dispatch(o,i)}}};var s=()=>globalThis.crypto?.randomUUID?.()||Math.random().toString(36).substring(2);var I=r=>{let{EventName:e,AggregateType:t,EventIdentifier:a=s,AggregateIdentifier:n=s}=r;return({aggregateID:p,_metadata:o,...i})=>({...i,_id:a(),name:e,aggregateType:t,aggregateID:p??n(),_metadata:o??{},_createdAt:new Date})};var E=class{handlers=new Map;async connect(){console.log("## Instant Event Bus (using local memory) Connected ##")}subscribe(e){let t=this.handlers.get(e.name)||[];t.push(e),this.handlers.set(e.name,t)}async publish(e){let t=this.handlers.get(e.name)||[];t.length>0&&await Promise.all(t.map(a=>a.handle(e)))}};0&&(module.exports={EventBuilder,InstantEventBus,createService,generateUUID});
1
+ "use strict";var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var x=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},y=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of u(e))!h.call(t,n)&&n!==r&&d(t,n,{get:()=>e[n],enumerable:!(a=f(e,n))||a.enumerable});return t};var S=t=>y(d({},"__esModule",{value:!0}),t);var H={};x(H,{EventBuilder:()=>E,InstantEventBus:()=>p,createService:()=>I,generateUUID:()=>m,reduceHandlers:()=>g});module.exports=S(H);var I=t=>{let{EventStore:e,EventHandlers:r,EventBus:a}=t,n,c=async()=>(await e.init(),r.forEach(o=>a.subscribe(o)),{async dispatch(o,i){await e.append(o),a.publish(o).then(()=>{i&&i()}).catch(v=>{let l=v instanceof Error?v:new Error(String(v));i&&i(l)})}});return{async dispatch(o,i){return n||(n=c()),(await n).dispatch(o,i)}}};var m=()=>globalThis.crypto?.randomUUID?.()||Math.random().toString(36).substring(2);var E=t=>{let{EventName:e,AggregateType:r,EventIdentifier:a=m,AggregateIdentifier:n=m}=t;return({aggregateID:c,_metadata:o,...i})=>({...i,_id:a(),name:e,aggregateType:r,aggregateID:c??n(),_metadata:o??{},_createdAt:new Date})};var p=class{handlers=new Map;async connect(){console.log("## Instant Event Bus (using local memory) Connected ##")}subscribe(e){let r=this.handlers.get(e.name)||[];r.push(e),this.handlers.set(e.name,r)}async publish(e){let r=this.handlers.get(e.name)||[];r.length>0&&await Promise.all(r.map(a=>a.handle(e)))}};var g=(...t)=>t.flatMap(e=>Object.values(e));0&&(module.exports={EventBuilder,InstantEventBus,createService,generateUUID,reduceHandlers});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/createService.ts","../src/generateUUID.ts","../src/EventBuilder.ts","../src/InstantEventBus.ts"],"sourcesContent":["export type { IEvent } from \"./IEvent\";\r\nexport type { IEventBus } from \"./IEventBus\";\r\nexport type { IEventHandler } from \"./IEventHandler\";\r\nexport type { IEventService } from \"./IEventService\";\r\nexport type { IEventStore } from \"./IEventStore\";\r\nexport type { IReducer } from \"./IReducer\";\r\n\r\nexport { createService } from \"./createService\";\r\nexport { EventBuilder } from \"./EventBuilder\";\r\nexport { InstantEventBus } from \"./InstantEventBus\";\r\nexport { generateUUID } from \"./generateUUID\";\r\n","// src/createService.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEventService } from \"./IEventService\";\r\nimport { IEventStore } from \"./IEventStore\";\r\n\r\nexport const createService = (definition: {\r\n EventStore: IEventStore;\r\n EventHandlers: IEventHandler[];\r\n EventBus: IEventBus;\r\n}): IEventService => {\r\n const { EventStore, EventHandlers, EventBus } = definition;\r\n\r\n let _initPromise: Promise<IEventService> | undefined = undefined;\r\n\r\n const init = async (): Promise<IEventService> => {\r\n await EventStore.init();\r\n\r\n EventHandlers.forEach((handler) => EventBus.subscribe(handler));\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n await EventStore.append(event);\r\n\r\n EventBus.publish(event)\r\n .then(() => {\r\n if (notified) notified();\r\n })\r\n .catch((error) => {\r\n const wrappedError = error instanceof Error ? error : new Error(String(error));\r\n if (notified) notified(wrappedError);\r\n });\r\n },\r\n };\r\n };\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n if (!_initPromise) {\r\n _initPromise = init();\r\n }\r\n\r\n const service = await _initPromise;\r\n\r\n return service.dispatch(event, notified);\r\n },\r\n };\r\n};\r\n","export const generateUUID = (): string => globalThis.crypto?.randomUUID?.() || Math.random().toString(36).substring(2);\r\n","// src/EventBuilder.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { generateUUID } from \"./generateUUID\";\r\n\r\nexport const EventBuilder = <T extends IEvent>(definition: {\r\n EventName: string;\r\n AggregateType: string;\r\n AggregateIdentifier?: () => string;\r\n EventIdentifier?: () => string;\r\n}) => {\r\n const {\r\n EventName,\r\n AggregateType,\r\n EventIdentifier = generateUUID,\r\n AggregateIdentifier = generateUUID,\r\n } = definition;\r\n\r\n return ({\r\n aggregateID,\r\n _metadata,\r\n ...props\r\n }: Omit<T, \"_id\" | \"name\" | \"aggregateID\" | \"aggregateType\" | \"_createdAt\" | \"_metadata\"> & {\r\n aggregateID?: string;\r\n _metadata?: T[\"_metadata\"];\r\n }): T => ({\r\n ...props,\r\n _id: EventIdentifier(),\r\n name: EventName,\r\n aggregateType: AggregateType,\r\n aggregateID: aggregateID ?? AggregateIdentifier(),\r\n _metadata: _metadata ?? ({} as T[\"_metadata\"]),\r\n _createdAt: new Date(),\r\n } as T);\r\n}\r\n","// src/InstantEventBus.ts\r\n\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEvent } from \"./IEvent\";\r\n\r\nexport class InstantEventBus implements IEventBus {\r\n private handlers = new Map<string, IEventHandler[]>();\r\n\r\n async connect() {\r\n console.log(\"## Instant Event Bus (using local memory) Connected ##\");\r\n }\r\n\r\n subscribe(handler: IEventHandler) {\r\n const list = this.handlers.get(handler.name) || [];\r\n list.push(handler);\r\n this.handlers.set(handler.name, list);\r\n }\r\n\r\n async publish(event: IEvent) {\r\n const list = this.handlers.get(event.name) || [];\r\n\r\n if (list.length > 0) {\r\n await Promise.all(list.map(h => h.handle(event)));\r\n }\r\n }\r\n}\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,oBAAAC,EAAA,kBAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAN,GCQO,IAAMO,EAAiBC,GAIT,CACnB,GAAM,CAAE,WAAAC,EAAY,cAAAC,EAAe,SAAAC,CAAS,EAAIH,EAE5CI,EAEEC,EAAO,UACX,MAAMJ,EAAW,KAAK,EAEtBC,EAAc,QAASI,GAAYH,EAAS,UAAUG,CAAO,CAAC,EAEvD,CACL,MAAM,SAASC,EAAeC,EAAmD,CAC/E,MAAMP,EAAW,OAAOM,CAAK,EAE7BJ,EAAS,QAAQI,CAAK,EACnB,KAAK,IAAM,CACNC,GAAUA,EAAS,CACzB,CAAC,EACA,MAAOC,GAAU,CAChB,IAAMC,EAAeD,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,EACzED,GAAUA,EAASE,CAAY,CACrC,CAAC,CACL,CACF,GAGF,MAAO,CACL,MAAM,SAASH,EAAeC,EAAmD,CAC/E,OAAKJ,IACHA,EAAeC,EAAK,IAGN,MAAMD,GAEP,SAASG,EAAOC,CAAQ,CACzC,CACF,CACF,ECjDO,IAAMG,EAAe,IAAc,WAAW,QAAQ,aAAa,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,ECK9G,IAAMC,EAAkCC,GAKzC,CACJ,GAAM,CACJ,UAAAC,EACA,cAAAC,EACA,gBAAAC,EAAkBC,EAClB,oBAAAC,EAAsBD,CACxB,EAAIJ,EAEJ,MAAO,CAAC,CACN,YAAAM,EACA,UAAAC,EACA,GAAGC,CACL,KAGU,CACR,GAAGA,EACH,IAAKL,EAAgB,EACrB,KAAMF,EACN,cAAeC,EACf,YAAaI,GAAeD,EAAoB,EAChD,UAAWE,GAAc,CAAC,EAC1B,WAAY,IAAI,IAClB,EACF,EC5BO,IAAME,EAAN,KAA2C,CACxC,SAAW,IAAI,IAEvB,MAAM,SAAU,CACd,QAAQ,IAAI,wDAAwD,CACtE,CAEA,UAAUC,EAAwB,CAChC,IAAMC,EAAO,KAAK,SAAS,IAAID,EAAQ,IAAI,GAAK,CAAC,EACjDC,EAAK,KAAKD,CAAO,EACjB,KAAK,SAAS,IAAIA,EAAQ,KAAMC,CAAI,CACtC,CAEA,MAAM,QAAQC,EAAe,CAC3B,IAAMD,EAAO,KAAK,SAAS,IAAIC,EAAM,IAAI,GAAK,CAAC,EAE3CD,EAAK,OAAS,GAChB,MAAM,QAAQ,IAAIA,EAAK,IAAIE,GAAKA,EAAE,OAAOD,CAAK,CAAC,CAAC,CAEpD,CACF","names":["index_exports","__export","EventBuilder","InstantEventBus","createService","generateUUID","__toCommonJS","createService","definition","EventStore","EventHandlers","EventBus","_initPromise","init","handler","event","notified","error","wrappedError","generateUUID","EventBuilder","definition","EventName","AggregateType","EventIdentifier","generateUUID","AggregateIdentifier","aggregateID","_metadata","props","InstantEventBus","handler","list","event","h"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/createService.ts","../src/generateUUID.ts","../src/EventBuilder.ts","../src/InstantEventBus.ts","../src/reduceHandlers.ts"],"sourcesContent":["export type { IEvent } from \"./IEvent\";\r\nexport type { IEventBus } from \"./IEventBus\";\r\nexport type { IEventHandler } from \"./IEventHandler\";\r\nexport type { IService } from \"./IService\";\r\nexport type { IEventStore } from \"./IEventStore\";\r\nexport type { IReducer } from \"./IReducer\";\r\n\r\nexport { createService } from \"./createService\";\r\nexport { EventBuilder } from \"./EventBuilder\";\r\nexport { InstantEventBus } from \"./InstantEventBus\";\r\nexport { generateUUID } from \"./generateUUID\";\r\nexport { reduceHandlers } from \"./reduceHandlers\";\r\n","// src/createService.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IService } from \"./IService\";\r\nimport { IEventStore } from \"./IEventStore\";\r\n\r\nexport const createService = (definition: {\r\n EventStore: IEventStore;\r\n EventHandlers: IEventHandler[];\r\n EventBus: IEventBus;\r\n}): IService => {\r\n const { EventStore, EventHandlers, EventBus } = definition;\r\n\r\n let _initPromise: Promise<IService> | undefined = undefined;\r\n\r\n const init = async (): Promise<IService> => {\r\n await EventStore.init();\r\n\r\n EventHandlers.forEach((handler) => EventBus.subscribe(handler));\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n await EventStore.append(event);\r\n\r\n EventBus.publish(event)\r\n .then(() => {\r\n if (notified) notified();\r\n })\r\n .catch((error) => {\r\n const wrappedError = error instanceof Error ? error : new Error(String(error));\r\n if (notified) notified(wrappedError);\r\n });\r\n },\r\n };\r\n };\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n if (!_initPromise) {\r\n _initPromise = init();\r\n }\r\n\r\n const service = await _initPromise;\r\n\r\n return service.dispatch(event, notified);\r\n },\r\n };\r\n};\r\n","export const generateUUID = (): string => globalThis.crypto?.randomUUID?.() || Math.random().toString(36).substring(2);\r\n","// src/EventBuilder.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { generateUUID } from \"./generateUUID\";\r\n\r\nexport const EventBuilder = <T extends IEvent>(definition: {\r\n EventName: string;\r\n AggregateType: string;\r\n AggregateIdentifier?: () => string;\r\n EventIdentifier?: () => string;\r\n}) => {\r\n const {\r\n EventName,\r\n AggregateType,\r\n EventIdentifier = generateUUID,\r\n AggregateIdentifier = generateUUID,\r\n } = definition;\r\n\r\n return ({\r\n aggregateID,\r\n _metadata,\r\n ...props\r\n }: Omit<T, \"_id\" | \"name\" | \"aggregateID\" | \"aggregateType\" | \"_createdAt\" | \"_metadata\"> & {\r\n aggregateID?: string;\r\n _metadata?: T[\"_metadata\"];\r\n }): T => ({\r\n ...props,\r\n _id: EventIdentifier(),\r\n name: EventName,\r\n aggregateType: AggregateType,\r\n aggregateID: aggregateID ?? AggregateIdentifier(),\r\n _metadata: _metadata ?? ({} as T[\"_metadata\"]),\r\n _createdAt: new Date(),\r\n } as T);\r\n}\r\n","// src/InstantEventBus.ts\r\n\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEvent } from \"./IEvent\";\r\n\r\nexport class InstantEventBus implements IEventBus {\r\n private handlers = new Map<string, IEventHandler[]>();\r\n\r\n async connect() {\r\n console.log(\"## Instant Event Bus (using local memory) Connected ##\");\r\n }\r\n\r\n subscribe(handler: IEventHandler) {\r\n const list = this.handlers.get(handler.name) || [];\r\n list.push(handler);\r\n this.handlers.set(handler.name, list);\r\n }\r\n\r\n async publish(event: IEvent) {\r\n const list = this.handlers.get(event.name) || [];\r\n\r\n if (list.length > 0) {\r\n await Promise.all(list.map(h => h.handle(event)));\r\n }\r\n }\r\n}\r\n","import { IEventHandler } from \"./IEventHandler\";\r\n\r\nexport const reduceHandlers = (...objs: Record<string, IEventHandler>[]): IEventHandler[] =>\r\n objs.flatMap(obj => Object.values(obj));\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,oBAAAC,EAAA,kBAAAC,EAAA,iBAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAP,GCQO,IAAMQ,EAAiBC,GAId,CACd,GAAM,CAAE,WAAAC,EAAY,cAAAC,EAAe,SAAAC,CAAS,EAAIH,EAE5CI,EAEEC,EAAO,UACX,MAAMJ,EAAW,KAAK,EAEtBC,EAAc,QAASI,GAAYH,EAAS,UAAUG,CAAO,CAAC,EAEvD,CACL,MAAM,SAASC,EAAeC,EAAmD,CAC/E,MAAMP,EAAW,OAAOM,CAAK,EAE7BJ,EAAS,QAAQI,CAAK,EACnB,KAAK,IAAM,CACNC,GAAUA,EAAS,CACzB,CAAC,EACA,MAAOC,GAAU,CAChB,IAAMC,EAAeD,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,EACzED,GAAUA,EAASE,CAAY,CACrC,CAAC,CACL,CACF,GAGF,MAAO,CACL,MAAM,SAASH,EAAeC,EAAmD,CAC/E,OAAKJ,IACHA,EAAeC,EAAK,IAGN,MAAMD,GAEP,SAASG,EAAOC,CAAQ,CACzC,CACF,CACF,ECjDO,IAAMG,EAAe,IAAc,WAAW,QAAQ,aAAa,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,ECK9G,IAAMC,EAAkCC,GAKzC,CACJ,GAAM,CACJ,UAAAC,EACA,cAAAC,EACA,gBAAAC,EAAkBC,EAClB,oBAAAC,EAAsBD,CACxB,EAAIJ,EAEJ,MAAO,CAAC,CACN,YAAAM,EACA,UAAAC,EACA,GAAGC,CACL,KAGU,CACR,GAAGA,EACH,IAAKL,EAAgB,EACrB,KAAMF,EACN,cAAeC,EACf,YAAaI,GAAeD,EAAoB,EAChD,UAAWE,GAAc,CAAC,EAC1B,WAAY,IAAI,IAClB,EACF,EC5BO,IAAME,EAAN,KAA2C,CACxC,SAAW,IAAI,IAEvB,MAAM,SAAU,CACd,QAAQ,IAAI,wDAAwD,CACtE,CAEA,UAAUC,EAAwB,CAChC,IAAMC,EAAO,KAAK,SAAS,IAAID,EAAQ,IAAI,GAAK,CAAC,EACjDC,EAAK,KAAKD,CAAO,EACjB,KAAK,SAAS,IAAIA,EAAQ,KAAMC,CAAI,CACtC,CAEA,MAAM,QAAQC,EAAe,CAC3B,IAAMD,EAAO,KAAK,SAAS,IAAIC,EAAM,IAAI,GAAK,CAAC,EAE3CD,EAAK,OAAS,GAChB,MAAM,QAAQ,IAAIA,EAAK,IAAIE,GAAKA,EAAE,OAAOD,CAAK,CAAC,CAAC,CAEpD,CACF,ECxBO,IAAME,EAAiB,IAAIC,IAChCA,EAAK,QAAQC,GAAO,OAAO,OAAOA,CAAG,CAAC","names":["index_exports","__export","EventBuilder","InstantEventBus","createService","generateUUID","reduceHandlers","__toCommonJS","createService","definition","EventStore","EventHandlers","EventBus","_initPromise","init","handler","event","notified","error","wrappedError","generateUUID","EventBuilder","definition","EventName","AggregateType","EventIdentifier","generateUUID","AggregateIdentifier","aggregateID","_metadata","props","InstantEventBus","handler","list","event","h","reduceHandlers","objs","obj"]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- interface IEvent<Payloads = any, Metadata extends {} = {}> {
1
+ interface IEvent<Payloads = any, Metadata extends Record<string, unknown> = {}> {
2
2
  _id: string;
3
3
  name: string;
4
4
  aggregateID: string;
@@ -21,7 +21,7 @@ interface IEventBus {
21
21
  subscribe(handler: IEventHandler): void;
22
22
  }
23
23
 
24
- interface IEventService {
24
+ interface IService {
25
25
  dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void>;
26
26
  }
27
27
 
@@ -43,7 +43,7 @@ declare const createService: (definition: {
43
43
  EventStore: IEventStore;
44
44
  EventHandlers: IEventHandler[];
45
45
  EventBus: IEventBus;
46
- }) => IEventService;
46
+ }) => IService;
47
47
 
48
48
  declare const EventBuilder: <T extends IEvent>(definition: {
49
49
  EventName: string;
@@ -64,4 +64,6 @@ declare class InstantEventBus implements IEventBus {
64
64
 
65
65
  declare const generateUUID: () => string;
66
66
 
67
- export { EventBuilder, type IEvent, type IEventBus, type IEventHandler, type IEventService, type IEventStore, type IReducer, InstantEventBus, createService, generateUUID };
67
+ declare const reduceHandlers: (...objs: Record<string, IEventHandler>[]) => IEventHandler[];
68
+
69
+ export { EventBuilder, type IEvent, type IEventBus, type IEventHandler, type IEventStore, type IReducer, type IService, InstantEventBus, createService, generateUUID, reduceHandlers };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- interface IEvent<Payloads = any, Metadata extends {} = {}> {
1
+ interface IEvent<Payloads = any, Metadata extends Record<string, unknown> = {}> {
2
2
  _id: string;
3
3
  name: string;
4
4
  aggregateID: string;
@@ -21,7 +21,7 @@ interface IEventBus {
21
21
  subscribe(handler: IEventHandler): void;
22
22
  }
23
23
 
24
- interface IEventService {
24
+ interface IService {
25
25
  dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void>;
26
26
  }
27
27
 
@@ -43,7 +43,7 @@ declare const createService: (definition: {
43
43
  EventStore: IEventStore;
44
44
  EventHandlers: IEventHandler[];
45
45
  EventBus: IEventBus;
46
- }) => IEventService;
46
+ }) => IService;
47
47
 
48
48
  declare const EventBuilder: <T extends IEvent>(definition: {
49
49
  EventName: string;
@@ -64,4 +64,6 @@ declare class InstantEventBus implements IEventBus {
64
64
 
65
65
  declare const generateUUID: () => string;
66
66
 
67
- export { EventBuilder, type IEvent, type IEventBus, type IEventHandler, type IEventService, type IEventStore, type IReducer, InstantEventBus, createService, generateUUID };
67
+ declare const reduceHandlers: (...objs: Record<string, IEventHandler>[]) => IEventHandler[];
68
+
69
+ export { EventBuilder, type IEvent, type IEventBus, type IEventHandler, type IEventStore, type IReducer, type IService, InstantEventBus, createService, generateUUID, reduceHandlers };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var I=i=>{let{EventStore:e,EventHandlers:t,EventBus:a}=i,o,p=async()=>(await e.init(),t.forEach(r=>a.subscribe(r)),{async dispatch(r,n){await e.append(r),a.publish(r).then(()=>{n&&n()}).catch(s=>{let g=s instanceof Error?s:new Error(String(s));n&&n(g)})}});return{async dispatch(r,n){return o||(o=p()),(await o).dispatch(r,n)}}};var E=()=>globalThis.crypto?.randomUUID?.()||Math.random().toString(36).substring(2);var d=i=>{let{EventName:e,AggregateType:t,EventIdentifier:a=E,AggregateIdentifier:o=E}=i;return({aggregateID:p,_metadata:r,...n})=>({...n,_id:a(),name:e,aggregateType:t,aggregateID:p??o(),_metadata:r??{},_createdAt:new Date})};var c=class{handlers=new Map;async connect(){console.log("## Instant Event Bus (using local memory) Connected ##")}subscribe(e){let t=this.handlers.get(e.name)||[];t.push(e),this.handlers.set(e.name,t)}async publish(e){let t=this.handlers.get(e.name)||[];t.length>0&&await Promise.all(t.map(a=>a.handle(e)))}};export{d as EventBuilder,c as InstantEventBus,I as createService,E as generateUUID};
1
+ var E=a=>{let{EventStore:e,EventHandlers:t,EventBus:o}=a,i,c=async()=>(await e.init(),t.forEach(r=>o.subscribe(r)),{async dispatch(r,n){await e.append(r),o.publish(r).then(()=>{n&&n()}).catch(v=>{let I=v instanceof Error?v:new Error(String(v));n&&n(I)})}});return{async dispatch(r,n){return i||(i=c()),(await i).dispatch(r,n)}}};var p=()=>globalThis.crypto?.randomUUID?.()||Math.random().toString(36).substring(2);var g=a=>{let{EventName:e,AggregateType:t,EventIdentifier:o=p,AggregateIdentifier:i=p}=a;return({aggregateID:c,_metadata:r,...n})=>({...n,_id:o(),name:e,aggregateType:t,aggregateID:c??i(),_metadata:r??{},_createdAt:new Date})};var d=class{handlers=new Map;async connect(){console.log("## Instant Event Bus (using local memory) Connected ##")}subscribe(e){let t=this.handlers.get(e.name)||[];t.push(e),this.handlers.set(e.name,t)}async publish(e){let t=this.handlers.get(e.name)||[];t.length>0&&await Promise.all(t.map(o=>o.handle(e)))}};var l=(...a)=>a.flatMap(e=>Object.values(e));export{g as EventBuilder,d as InstantEventBus,E as createService,p as generateUUID,l as reduceHandlers};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createService.ts","../src/generateUUID.ts","../src/EventBuilder.ts","../src/InstantEventBus.ts"],"sourcesContent":["// src/createService.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEventService } from \"./IEventService\";\r\nimport { IEventStore } from \"./IEventStore\";\r\n\r\nexport const createService = (definition: {\r\n EventStore: IEventStore;\r\n EventHandlers: IEventHandler[];\r\n EventBus: IEventBus;\r\n}): IEventService => {\r\n const { EventStore, EventHandlers, EventBus } = definition;\r\n\r\n let _initPromise: Promise<IEventService> | undefined = undefined;\r\n\r\n const init = async (): Promise<IEventService> => {\r\n await EventStore.init();\r\n\r\n EventHandlers.forEach((handler) => EventBus.subscribe(handler));\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n await EventStore.append(event);\r\n\r\n EventBus.publish(event)\r\n .then(() => {\r\n if (notified) notified();\r\n })\r\n .catch((error) => {\r\n const wrappedError = error instanceof Error ? error : new Error(String(error));\r\n if (notified) notified(wrappedError);\r\n });\r\n },\r\n };\r\n };\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n if (!_initPromise) {\r\n _initPromise = init();\r\n }\r\n\r\n const service = await _initPromise;\r\n\r\n return service.dispatch(event, notified);\r\n },\r\n };\r\n};\r\n","export const generateUUID = (): string => globalThis.crypto?.randomUUID?.() || Math.random().toString(36).substring(2);\r\n","// src/EventBuilder.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { generateUUID } from \"./generateUUID\";\r\n\r\nexport const EventBuilder = <T extends IEvent>(definition: {\r\n EventName: string;\r\n AggregateType: string;\r\n AggregateIdentifier?: () => string;\r\n EventIdentifier?: () => string;\r\n}) => {\r\n const {\r\n EventName,\r\n AggregateType,\r\n EventIdentifier = generateUUID,\r\n AggregateIdentifier = generateUUID,\r\n } = definition;\r\n\r\n return ({\r\n aggregateID,\r\n _metadata,\r\n ...props\r\n }: Omit<T, \"_id\" | \"name\" | \"aggregateID\" | \"aggregateType\" | \"_createdAt\" | \"_metadata\"> & {\r\n aggregateID?: string;\r\n _metadata?: T[\"_metadata\"];\r\n }): T => ({\r\n ...props,\r\n _id: EventIdentifier(),\r\n name: EventName,\r\n aggregateType: AggregateType,\r\n aggregateID: aggregateID ?? AggregateIdentifier(),\r\n _metadata: _metadata ?? ({} as T[\"_metadata\"]),\r\n _createdAt: new Date(),\r\n } as T);\r\n}\r\n","// src/InstantEventBus.ts\r\n\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEvent } from \"./IEvent\";\r\n\r\nexport class InstantEventBus implements IEventBus {\r\n private handlers = new Map<string, IEventHandler[]>();\r\n\r\n async connect() {\r\n console.log(\"## Instant Event Bus (using local memory) Connected ##\");\r\n }\r\n\r\n subscribe(handler: IEventHandler) {\r\n const list = this.handlers.get(handler.name) || [];\r\n list.push(handler);\r\n this.handlers.set(handler.name, list);\r\n }\r\n\r\n async publish(event: IEvent) {\r\n const list = this.handlers.get(event.name) || [];\r\n\r\n if (list.length > 0) {\r\n await Promise.all(list.map(h => h.handle(event)));\r\n }\r\n }\r\n}\r\n"],"mappings":"AAQO,IAAMA,EAAiBC,GAIT,CACnB,GAAM,CAAE,WAAAC,EAAY,cAAAC,EAAe,SAAAC,CAAS,EAAIH,EAE5CI,EAEEC,EAAO,UACX,MAAMJ,EAAW,KAAK,EAEtBC,EAAc,QAASI,GAAYH,EAAS,UAAUG,CAAO,CAAC,EAEvD,CACL,MAAM,SAASC,EAAeC,EAAmD,CAC/E,MAAMP,EAAW,OAAOM,CAAK,EAE7BJ,EAAS,QAAQI,CAAK,EACnB,KAAK,IAAM,CACNC,GAAUA,EAAS,CACzB,CAAC,EACA,MAAOC,GAAU,CAChB,IAAMC,EAAeD,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,EACzED,GAAUA,EAASE,CAAY,CACrC,CAAC,CACL,CACF,GAGF,MAAO,CACL,MAAM,SAASH,EAAeC,EAAmD,CAC/E,OAAKJ,IACHA,EAAeC,EAAK,IAGN,MAAMD,GAEP,SAASG,EAAOC,CAAQ,CACzC,CACF,CACF,ECjDO,IAAMG,EAAe,IAAc,WAAW,QAAQ,aAAa,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,ECK9G,IAAMC,EAAkCC,GAKzC,CACJ,GAAM,CACJ,UAAAC,EACA,cAAAC,EACA,gBAAAC,EAAkBC,EAClB,oBAAAC,EAAsBD,CACxB,EAAIJ,EAEJ,MAAO,CAAC,CACN,YAAAM,EACA,UAAAC,EACA,GAAGC,CACL,KAGU,CACR,GAAGA,EACH,IAAKL,EAAgB,EACrB,KAAMF,EACN,cAAeC,EACf,YAAaI,GAAeD,EAAoB,EAChD,UAAWE,GAAc,CAAC,EAC1B,WAAY,IAAI,IAClB,EACF,EC5BO,IAAME,EAAN,KAA2C,CACxC,SAAW,IAAI,IAEvB,MAAM,SAAU,CACd,QAAQ,IAAI,wDAAwD,CACtE,CAEA,UAAUC,EAAwB,CAChC,IAAMC,EAAO,KAAK,SAAS,IAAID,EAAQ,IAAI,GAAK,CAAC,EACjDC,EAAK,KAAKD,CAAO,EACjB,KAAK,SAAS,IAAIA,EAAQ,KAAMC,CAAI,CACtC,CAEA,MAAM,QAAQC,EAAe,CAC3B,IAAMD,EAAO,KAAK,SAAS,IAAIC,EAAM,IAAI,GAAK,CAAC,EAE3CD,EAAK,OAAS,GAChB,MAAM,QAAQ,IAAIA,EAAK,IAAIE,GAAKA,EAAE,OAAOD,CAAK,CAAC,CAAC,CAEpD,CACF","names":["createService","definition","EventStore","EventHandlers","EventBus","_initPromise","init","handler","event","notified","error","wrappedError","generateUUID","EventBuilder","definition","EventName","AggregateType","EventIdentifier","generateUUID","AggregateIdentifier","aggregateID","_metadata","props","InstantEventBus","handler","list","event","h"]}
1
+ {"version":3,"sources":["../src/createService.ts","../src/generateUUID.ts","../src/EventBuilder.ts","../src/InstantEventBus.ts","../src/reduceHandlers.ts"],"sourcesContent":["// src/createService.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IService } from \"./IService\";\r\nimport { IEventStore } from \"./IEventStore\";\r\n\r\nexport const createService = (definition: {\r\n EventStore: IEventStore;\r\n EventHandlers: IEventHandler[];\r\n EventBus: IEventBus;\r\n}): IService => {\r\n const { EventStore, EventHandlers, EventBus } = definition;\r\n\r\n let _initPromise: Promise<IService> | undefined = undefined;\r\n\r\n const init = async (): Promise<IService> => {\r\n await EventStore.init();\r\n\r\n EventHandlers.forEach((handler) => EventBus.subscribe(handler));\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n await EventStore.append(event);\r\n\r\n EventBus.publish(event)\r\n .then(() => {\r\n if (notified) notified();\r\n })\r\n .catch((error) => {\r\n const wrappedError = error instanceof Error ? error : new Error(String(error));\r\n if (notified) notified(wrappedError);\r\n });\r\n },\r\n };\r\n };\r\n\r\n return {\r\n async dispatch(event: IEvent, notified?: (error?: Error) => void): Promise<void> {\r\n if (!_initPromise) {\r\n _initPromise = init();\r\n }\r\n\r\n const service = await _initPromise;\r\n\r\n return service.dispatch(event, notified);\r\n },\r\n };\r\n};\r\n","export const generateUUID = (): string => globalThis.crypto?.randomUUID?.() || Math.random().toString(36).substring(2);\r\n","// src/EventBuilder.ts\r\n\r\nimport { IEvent } from \"./IEvent\";\r\nimport { generateUUID } from \"./generateUUID\";\r\n\r\nexport const EventBuilder = <T extends IEvent>(definition: {\r\n EventName: string;\r\n AggregateType: string;\r\n AggregateIdentifier?: () => string;\r\n EventIdentifier?: () => string;\r\n}) => {\r\n const {\r\n EventName,\r\n AggregateType,\r\n EventIdentifier = generateUUID,\r\n AggregateIdentifier = generateUUID,\r\n } = definition;\r\n\r\n return ({\r\n aggregateID,\r\n _metadata,\r\n ...props\r\n }: Omit<T, \"_id\" | \"name\" | \"aggregateID\" | \"aggregateType\" | \"_createdAt\" | \"_metadata\"> & {\r\n aggregateID?: string;\r\n _metadata?: T[\"_metadata\"];\r\n }): T => ({\r\n ...props,\r\n _id: EventIdentifier(),\r\n name: EventName,\r\n aggregateType: AggregateType,\r\n aggregateID: aggregateID ?? AggregateIdentifier(),\r\n _metadata: _metadata ?? ({} as T[\"_metadata\"]),\r\n _createdAt: new Date(),\r\n } as T);\r\n}\r\n","// src/InstantEventBus.ts\r\n\r\nimport { IEventBus } from \"./IEventBus\";\r\nimport { IEventHandler } from \"./IEventHandler\";\r\nimport { IEvent } from \"./IEvent\";\r\n\r\nexport class InstantEventBus implements IEventBus {\r\n private handlers = new Map<string, IEventHandler[]>();\r\n\r\n async connect() {\r\n console.log(\"## Instant Event Bus (using local memory) Connected ##\");\r\n }\r\n\r\n subscribe(handler: IEventHandler) {\r\n const list = this.handlers.get(handler.name) || [];\r\n list.push(handler);\r\n this.handlers.set(handler.name, list);\r\n }\r\n\r\n async publish(event: IEvent) {\r\n const list = this.handlers.get(event.name) || [];\r\n\r\n if (list.length > 0) {\r\n await Promise.all(list.map(h => h.handle(event)));\r\n }\r\n }\r\n}\r\n","import { IEventHandler } from \"./IEventHandler\";\r\n\r\nexport const reduceHandlers = (...objs: Record<string, IEventHandler>[]): IEventHandler[] =>\r\n objs.flatMap(obj => Object.values(obj));\r\n"],"mappings":"AAQO,IAAMA,EAAiBC,GAId,CACd,GAAM,CAAE,WAAAC,EAAY,cAAAC,EAAe,SAAAC,CAAS,EAAIH,EAE5CI,EAEEC,EAAO,UACX,MAAMJ,EAAW,KAAK,EAEtBC,EAAc,QAASI,GAAYH,EAAS,UAAUG,CAAO,CAAC,EAEvD,CACL,MAAM,SAASC,EAAeC,EAAmD,CAC/E,MAAMP,EAAW,OAAOM,CAAK,EAE7BJ,EAAS,QAAQI,CAAK,EACnB,KAAK,IAAM,CACNC,GAAUA,EAAS,CACzB,CAAC,EACA,MAAOC,GAAU,CAChB,IAAMC,EAAeD,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,EACzED,GAAUA,EAASE,CAAY,CACrC,CAAC,CACL,CACF,GAGF,MAAO,CACL,MAAM,SAASH,EAAeC,EAAmD,CAC/E,OAAKJ,IACHA,EAAeC,EAAK,IAGN,MAAMD,GAEP,SAASG,EAAOC,CAAQ,CACzC,CACF,CACF,ECjDO,IAAMG,EAAe,IAAc,WAAW,QAAQ,aAAa,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,ECK9G,IAAMC,EAAkCC,GAKzC,CACJ,GAAM,CACJ,UAAAC,EACA,cAAAC,EACA,gBAAAC,EAAkBC,EAClB,oBAAAC,EAAsBD,CACxB,EAAIJ,EAEJ,MAAO,CAAC,CACN,YAAAM,EACA,UAAAC,EACA,GAAGC,CACL,KAGU,CACR,GAAGA,EACH,IAAKL,EAAgB,EACrB,KAAMF,EACN,cAAeC,EACf,YAAaI,GAAeD,EAAoB,EAChD,UAAWE,GAAc,CAAC,EAC1B,WAAY,IAAI,IAClB,EACF,EC5BO,IAAME,EAAN,KAA2C,CACxC,SAAW,IAAI,IAEvB,MAAM,SAAU,CACd,QAAQ,IAAI,wDAAwD,CACtE,CAEA,UAAUC,EAAwB,CAChC,IAAMC,EAAO,KAAK,SAAS,IAAID,EAAQ,IAAI,GAAK,CAAC,EACjDC,EAAK,KAAKD,CAAO,EACjB,KAAK,SAAS,IAAIA,EAAQ,KAAMC,CAAI,CACtC,CAEA,MAAM,QAAQC,EAAe,CAC3B,IAAMD,EAAO,KAAK,SAAS,IAAIC,EAAM,IAAI,GAAK,CAAC,EAE3CD,EAAK,OAAS,GAChB,MAAM,QAAQ,IAAIA,EAAK,IAAIE,GAAKA,EAAE,OAAOD,CAAK,CAAC,CAAC,CAEpD,CACF,ECxBO,IAAME,EAAiB,IAAIC,IAChCA,EAAK,QAAQC,GAAO,OAAO,OAAOA,CAAG,CAAC","names":["createService","definition","EventStore","EventHandlers","EventBus","_initPromise","init","handler","event","notified","error","wrappedError","generateUUID","EventBuilder","definition","EventName","AggregateType","EventIdentifier","generateUUID","AggregateIdentifier","aggregateID","_metadata","props","InstantEventBus","handler","list","event","h","reduceHandlers","objs","obj"]}
package/package.json CHANGED
@@ -1,35 +1,35 @@
1
- {
2
- "name": "atomservices",
3
- "version": "0.12.2",
4
- "type": "module",
5
- "main": "./dist/index.cjs",
6
- "module": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "require": "./dist/index.cjs"
13
- }
14
- },
15
- "files": [
16
- "dist"
17
- ],
18
- "publishConfig": {
19
- "access": "public"
20
- },
21
- "license": "ISC",
22
- "author": "Architecode",
23
- "scripts": {
24
- "build": "tsup --clean",
25
- "dev": "tsup --watch",
26
- "test": "vitest",
27
- "prepublishOnly": "npm run build"
28
- },
29
- "devDependencies": {
30
- "@types/node": "^25.5.0",
31
- "tsup": "^8.5.1",
32
- "typescript": "^5.9.3",
33
- "vitest": "^4.1.0"
34
- }
35
- }
1
+ {
2
+ "name": "atomservices",
3
+ "version": "0.12.3",
4
+ "type": "module",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "license": "ISC",
22
+ "author": "Architecode",
23
+ "scripts": {
24
+ "build": "tsup --clean",
25
+ "dev": "tsup --watch",
26
+ "test": "vitest",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "devDependencies": {
30
+ "@types/node": "^25.5.0",
31
+ "tsup": "^8.5.1",
32
+ "typescript": "^5.9.3",
33
+ "vitest": "^4.1.0"
34
+ }
35
+ }