@moeru/eventa 1.0.0-beta.3 → 1.0.0-beta.4

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.
Files changed (60) hide show
  1. package/README.md +50 -1
  2. package/dist/adapters/broadcast-channel/index.d.mts +2 -2
  3. package/dist/adapters/broadcast-channel/index.mjs +6 -9
  4. package/dist/adapters/broadcast-channel/index.mjs.map +1 -1
  5. package/dist/adapters/electron/main.d.mts +2 -2
  6. package/dist/adapters/electron/main.mjs +7 -9
  7. package/dist/adapters/electron/main.mjs.map +1 -1
  8. package/dist/adapters/electron/renderer.d.mts +134 -3
  9. package/dist/adapters/electron/renderer.mjs +4 -6
  10. package/dist/adapters/electron/renderer.mjs.map +1 -1
  11. package/dist/adapters/event-emitter/index.d.mts +2 -2
  12. package/dist/adapters/event-emitter/index.mjs +4 -7
  13. package/dist/adapters/event-emitter/index.mjs.map +1 -1
  14. package/dist/adapters/event-target/index.d.mts +2 -2
  15. package/dist/adapters/event-target/index.mjs +5 -8
  16. package/dist/adapters/event-target/index.mjs.map +1 -1
  17. package/dist/adapters/websocket/h3/index.d.mts +442 -3
  18. package/dist/adapters/websocket/h3/index.mjs +7 -9
  19. package/dist/adapters/websocket/h3/index.mjs.map +1 -1
  20. package/dist/adapters/websocket/index.d.mts +1 -1
  21. package/dist/adapters/websocket/index.mjs +1 -1
  22. package/dist/adapters/websocket/native/index.d.mts +2 -2
  23. package/dist/adapters/websocket/native/index.mjs +4 -5
  24. package/dist/adapters/websocket/native/index.mjs.map +1 -1
  25. package/dist/adapters/webworkers/index.d.mts +2 -2
  26. package/dist/adapters/webworkers/index.mjs +5 -6
  27. package/dist/adapters/webworkers/index.mjs.map +1 -1
  28. package/dist/adapters/webworkers/worker/index.d.mts +1 -1
  29. package/dist/adapters/webworkers/worker/index.mjs +6 -7
  30. package/dist/adapters/webworkers/worker/index.mjs.map +1 -1
  31. package/dist/adapters/window-message/index.d.mts +50 -0
  32. package/dist/adapters/window-message/index.mjs +79 -0
  33. package/dist/adapters/window-message/index.mjs.map +1 -0
  34. package/dist/adapters/worker-threads/index.d.mts +2 -2
  35. package/dist/adapters/worker-threads/index.mjs +5 -6
  36. package/dist/adapters/worker-threads/index.mjs.map +1 -1
  37. package/dist/adapters/worker-threads/worker/index.d.mts +1 -1
  38. package/dist/adapters/worker-threads/worker/index.mjs +6 -7
  39. package/dist/adapters/worker-threads/worker/index.mjs.map +1 -1
  40. package/dist/{context-BNM9nsGp.d.mts → context-BsqFeoer.d.mts} +2 -2
  41. package/dist/{context-c10xPp3f.mjs → context-Dht_IZMb.mjs} +22 -24
  42. package/dist/context-Dht_IZMb.mjs.map +1 -0
  43. package/dist/{eventa-M1FMVrH1.d.mts → eventa-DSnoBa1O.d.mts} +3 -3
  44. package/dist/{index-giKJThn3.d.mts → index-g6DulgOI.d.mts} +88 -88
  45. package/dist/index.d.mts +3 -3
  46. package/dist/index.mjs +3 -4
  47. package/dist/{internal-C-4X8bpL.mjs → internal-CHUsXYiP.mjs} +3 -4
  48. package/dist/{internal-C-4X8bpL.mjs.map → internal-CHUsXYiP.mjs.map} +1 -1
  49. package/dist/{shared-eQ-hnVHv.mjs → shared-CA5MGwv0.mjs} +5 -7
  50. package/dist/shared-CA5MGwv0.mjs.map +1 -0
  51. package/dist/{shared-BcRXZZxh.d.mts → shared-CVTLm458.d.mts} +2 -2
  52. package/dist/{shared-NFMSqOPw.d.mts → shared-CfXZb-7K.d.mts} +2 -2
  53. package/dist/{shared-DeDRsHPI.mjs → shared-Dl0_bFq0.mjs} +4 -5
  54. package/dist/{shared-DeDRsHPI.mjs.map → shared-Dl0_bFq0.mjs.map} +1 -1
  55. package/dist/{src-CTkYOGiO.mjs → src-CTs6h4Ci.mjs} +56 -63
  56. package/dist/src-CTs6h4Ci.mjs.map +1 -0
  57. package/package.json +14 -7
  58. package/dist/context-c10xPp3f.mjs.map +0 -1
  59. package/dist/shared-eQ-hnVHv.mjs.map +0 -1
  60. package/dist/src-CTkYOGiO.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../src/adapters/webworkers/index.ts"],"sourcesContent":["import type { EventContext } from '../../context'\nimport type { DirectionalEventa, Eventa } from '../../eventa'\n\nimport { createContext as createBaseContext } from '../../context'\nimport { registerInvokeAbortEventListeners } from '../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from './internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from './shared'\n\nexport function createContext(worker: Worker) {\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: MessageEvent, error?: ErrorEvent, messageError?: MessageEvent }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n worker.postMessage(data, { transfer })\n return\n }\n\n worker.postMessage(data)\n })\n\n worker.onmessage = (event) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(event.data)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message: event } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message: event } })\n }\n }\n catch (error) {\n console.error('Failed to parse WebWorker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message: event } })\n }\n }\n\n worker.onerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n }\n\n worker.onmessageerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n }\n\n return {\n context: ctx,\n }\n}\n\nexport { defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa } from './shared'\nexport type * from './shared'\n"],"mappings":";;;;;AASA,SAAgB,cAAc,QAAgB;CAC5C,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAmB,oBAAoB,YAAY,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,UAAO,YAAY,MAAM,EAAE,UAAU,CAAC;AACtC;;AAGF,SAAO,YAAY,KAAK;GACxB;AAEF,QAAO,aAAa,UAAU;AAC5B,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,MAAM,KAAK;AACrE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;OAG9E,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;WAGxF,OAAO;AACZ,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;;;AAItE,QAAO,WAAW,UAAU;AAC1B,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;AAG3D,QAAO,kBAAkB,UAAU;AACjC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;;AAGzE,QAAO,EACL,SAAS,KACV"}
1
+ {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../src/adapters/webworkers/index.ts"],"sourcesContent":["import type { EventContext } from '../../context'\nimport type { DirectionalEventa, Eventa } from '../../eventa'\n\nimport { createContext as createBaseContext } from '../../context'\nimport { registerInvokeAbortEventListeners } from '../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from './internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from './shared'\n\nexport function createContext(worker: Worker) {\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: MessageEvent, error?: ErrorEvent, messageError?: MessageEvent }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n worker.postMessage(data, { transfer })\n return\n }\n\n worker.postMessage(data)\n })\n\n worker.onmessage = (event) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(event.data)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message: event } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message: event } })\n }\n }\n catch (error) {\n console.error('Failed to parse WebWorker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message: event } })\n }\n }\n\n worker.onerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n }\n\n worker.onmessageerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n }\n\n return {\n context: ctx,\n }\n}\n\nexport { defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa } from './shared'\nexport type * from './shared'\n"],"mappings":";;;;AASA,SAAgB,cAAc,QAAgB;CAC5C,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAA,cAAmD,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,UAAO,YAAY,MAAM,EAAE,UAAU,CAAC;AACtC;;AAGF,SAAO,YAAY,KAAK;GACxB;AAEF,QAAO,aAAa,UAAU;AAC5B,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,MAAM,KAAK;AACrE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;OAG9E,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;WAGxF,OAAO;AACZ,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;;;AAItE,QAAO,WAAW,UAAU;AAC1B,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;AAG3D,QAAO,kBAAkB,UAAU;AACjC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;;AAGzE,QAAO,EACL,SAAS,KACV"}
@@ -1,4 +1,4 @@
1
- import { t as EventContext } from "../../../context-BNM9nsGp.mjs";
1
+ import { t as EventContext } from "../../../context-BsqFeoer.mjs";
2
2
 
3
3
  //#region src/adapters/webworkers/worker/index.d.ts
4
4
  declare function createContext(options?: {
@@ -1,14 +1,13 @@
1
- import { c as matchBy, i as and, n as EventaFlowDirection, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../../context-c10xPp3f.mjs";
2
- import { E as registerInvokeAbortEventListeners } from "../../../src-CTkYOGiO.mjs";
3
- import { a as workerErrorEvent, i as normalizeOnListenerParameters, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload } from "../../../shared-eQ-hnVHv.mjs";
4
-
1
+ import { c as matchBy, i as and, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../../context-Dht_IZMb.mjs";
2
+ import { E as registerInvokeAbortEventListeners } from "../../../src-CTs6h4Ci.mjs";
3
+ import { a as workerErrorEvent, i as normalizeOnListenerParameters, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload } from "../../../shared-CA5MGwv0.mjs";
5
4
  //#region src/adapters/webworkers/worker/index.ts
6
5
  function createContext(options) {
7
6
  const { messagePort = self } = options || {};
8
7
  const ctx = createContext$1();
9
8
  registerInvokeAbortEventListeners(ctx, workerErrorEvent);
10
- ctx.on(and(matchBy((e) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), matchBy("*")), (event, options$1) => {
11
- const { body, transfer } = normalizeOnListenerParameters(event, options$1);
9
+ ctx.on(and(matchBy((e) => e._flowDirection === "outbound" || !e._flowDirection), matchBy("*")), (event, options) => {
10
+ const { body, transfer } = normalizeOnListenerParameters(event, options);
12
11
  const data = generateWorkerPayload(event.id, {
13
12
  ...defineOutboundEventa(event.type),
14
13
  ...event,
@@ -35,7 +34,7 @@ function createContext(options) {
35
34
  };
36
35
  return { context: ctx };
37
36
  }
38
-
39
37
  //#endregion
40
38
  export { createContext };
39
+
41
40
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createBaseContext","options"],"sources":["../../../../src/adapters/webworkers/worker/index.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type { EventContext } from '../../../context'\nimport type { DirectionalEventa, Eventa } from '../../../eventa'\n\nimport { createContext as createBaseContext } from '../../../context'\nimport { registerInvokeAbortEventListeners } from '../../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../shared'\n\nexport function createContext(options?: {\n messagePort?: Omit<Worker, 'close' | 'start'>\n}) {\n const {\n messagePort = self,\n } = options || {}\n\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n {\n raw: { event?: any, error?: string | Event }\n transfer?: Transferable[]\n }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n messagePort.postMessage(data, { transfer })\n return\n }\n\n messagePort.postMessage(data)\n })\n\n self.onerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n }\n\n self.onmessage = (event) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(event.data)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { event } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { event } })\n }\n }\n catch (error) {\n console.error('Failed to parse WebWorker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { event } })\n }\n }\n\n return {\n context: ctx,\n }\n}\n"],"mappings":";;;;;AAUA,SAAgB,cAAc,SAE3B;CACD,MAAM,EACJ,cAAc,SACZ,WAAW,EAAE;CAEjB,MAAM,MAAMA,iBAAmB;AAW/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAmB,oBAAoB,YAAY,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,cAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAOC,UAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,eAAY,YAAY,MAAM,EAAE,UAAU,CAAC;AAC3C;;AAGF,cAAY,YAAY,KAAK;GAC7B;AAEF,MAAK,WAAW,UAAU;AACxB,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;AAG3D,MAAK,aAAa,UAAU;AAC1B,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,MAAM,KAAK;AACrE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;OAGrE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;WAG/E,OAAO;AACZ,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;;AAI7D,QAAO,EACL,SAAS,KACV"}
1
+ {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../../src/adapters/webworkers/worker/index.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type { EventContext } from '../../../context'\nimport type { DirectionalEventa, Eventa } from '../../../eventa'\n\nimport { createContext as createBaseContext } from '../../../context'\nimport { registerInvokeAbortEventListeners } from '../../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../shared'\n\nexport function createContext(options?: {\n messagePort?: Omit<Worker, 'close' | 'start'>\n}) {\n const {\n messagePort = self,\n } = options || {}\n\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n {\n raw: { event?: any, error?: string | Event }\n transfer?: Transferable[]\n }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n messagePort.postMessage(data, { transfer })\n return\n }\n\n messagePort.postMessage(data)\n })\n\n self.onerror = (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n }\n\n self.onmessage = (event) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(event.data)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { event } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { event } })\n }\n }\n catch (error) {\n console.error('Failed to parse WebWorker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { event } })\n }\n }\n\n return {\n context: ctx,\n }\n}\n"],"mappings":";;;;AAUA,SAAgB,cAAc,SAE3B;CACD,MAAM,EACJ,cAAc,SACZ,WAAW,EAAE;CAEjB,MAAM,MAAMA,iBAAmB;AAW/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAA,cAAmD,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,eAAY,YAAY,MAAM,EAAE,UAAU,CAAC;AAC3C;;AAGF,cAAY,YAAY,KAAK;GAC7B;AAEF,MAAK,WAAW,UAAU;AACxB,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;AAG3D,MAAK,aAAa,UAAU;AAC1B,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,MAAM,KAAK;AACrE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;OAGrE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;WAG/E,OAAO;AACZ,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;;AAI7D,QAAO,EACL,SAAS,KACV"}
@@ -0,0 +1,50 @@
1
+ import { n as EventTag, s as EventaType } from "../../eventa-DSnoBa1O.mjs";
2
+ import { t as EventContext } from "../../context-BsqFeoer.mjs";
3
+
4
+ //#region src/adapters/window-message/shared.d.ts
5
+ interface Payload<T> {
6
+ id: string;
7
+ type: EventTag<any, any>;
8
+ payload: T;
9
+ }
10
+ interface WindowMessageEnvelope<T> {
11
+ __eventa: true;
12
+ channel: string;
13
+ sourceId: string;
14
+ payload: Payload<T>;
15
+ }
16
+ declare const errorEvent: {
17
+ body?: {
18
+ error: unknown;
19
+ } | undefined;
20
+ metadata?: undefined;
21
+ invokeMetadata?: undefined;
22
+ id: string;
23
+ type?: EventaType.Event | undefined;
24
+ };
25
+ //#endregion
26
+ //#region src/adapters/window-message/index.d.ts
27
+ interface WindowMessageAdapterOptions {
28
+ channel: string;
29
+ currentWindow: Window;
30
+ targetWindow: () => Window | null | undefined;
31
+ expectedSource?: () => MessageEventSource | null | undefined;
32
+ targetOrigin?: string;
33
+ expectedOrigin?: string | ((origin: string) => boolean);
34
+ acceptMessage?: (event: MessageEvent<unknown>) => boolean;
35
+ messageEvents?: boolean;
36
+ messageErrorEvents?: boolean;
37
+ }
38
+ declare function createContext(options: WindowMessageAdapterOptions): {
39
+ context: EventContext<any, {
40
+ raw: {
41
+ message?: MessageEvent;
42
+ messageError?: MessageEvent;
43
+ error?: unknown;
44
+ };
45
+ }>;
46
+ dispose: () => void;
47
+ };
48
+ //#endregion
49
+ export { Payload, WindowMessageAdapterOptions, WindowMessageEnvelope, createContext, errorEvent };
50
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1,79 @@
1
+ import { a as defineEventa, c as matchBy, i as and, l as nanoid, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../context-Dht_IZMb.mjs";
2
+ import "../../src-CTs6h4Ci.mjs";
3
+ //#region src/adapters/window-message/internal.ts
4
+ function generatePayload(type, payload) {
5
+ return {
6
+ id: nanoid(),
7
+ type,
8
+ payload
9
+ };
10
+ }
11
+ function parsePayload(data) {
12
+ return data;
13
+ }
14
+ //#endregion
15
+ //#region src/adapters/window-message/shared.ts
16
+ const errorEvent = { ...defineEventa() };
17
+ //#endregion
18
+ //#region src/adapters/window-message/index.ts
19
+ function withRemoval(currentWindow, type, listener) {
20
+ currentWindow.addEventListener(type, listener);
21
+ return { remove: () => {
22
+ currentWindow.removeEventListener(type, listener);
23
+ } };
24
+ }
25
+ function isEnvelope(value, channel) {
26
+ return typeof value === "object" && value !== null && "__eventa" in value && value.__eventa === true && "channel" in value && value.channel === channel && "sourceId" in value && typeof value.sourceId === "string" && "payload" in value && typeof value.payload === "object" && value.payload !== null;
27
+ }
28
+ function matchOrigin(expectedOrigin, origin) {
29
+ if (typeof expectedOrigin === "function") return expectedOrigin(origin);
30
+ return expectedOrigin === origin;
31
+ }
32
+ function createContext(options) {
33
+ const ctx = createContext$1();
34
+ const sourceId = crypto.randomUUID();
35
+ const { messageEvents: message = true, messageErrorEvents: messageError = true } = options;
36
+ const cleanupRemoval = [];
37
+ ctx.on(and(matchBy((e) => e._flowDirection === "outbound" || !e._flowDirection), matchBy("*")), (event) => {
38
+ const targetWindow = options.targetWindow();
39
+ if (!targetWindow) return;
40
+ const payload = generatePayload(event.id, {
41
+ ...defineOutboundEventa(event.type),
42
+ ...event
43
+ });
44
+ targetWindow.postMessage({
45
+ __eventa: true,
46
+ channel: options.channel,
47
+ sourceId,
48
+ payload
49
+ }, options.targetOrigin ?? "*");
50
+ });
51
+ if (message) cleanupRemoval.push(withRemoval(options.currentWindow, "message", (event) => {
52
+ if (!isEnvelope(event.data, options.channel)) return;
53
+ const expectedSource = options.expectedSource?.();
54
+ if (expectedSource && event.source !== expectedSource) return;
55
+ if (options.expectedOrigin && !matchOrigin(options.expectedOrigin, event.origin)) return;
56
+ if (event.data.sourceId === sourceId) return;
57
+ if (options.acceptMessage && !options.acceptMessage(event)) return;
58
+ try {
59
+ const { type, payload } = parsePayload(event.data.payload);
60
+ ctx.emit(defineInboundEventa(type), payload.body, { raw: { message: event } });
61
+ } catch (error) {
62
+ console.error("Failed to parse window message:", error);
63
+ ctx.emit(errorEvent, { error }, { raw: { error } });
64
+ }
65
+ }));
66
+ if (messageError) cleanupRemoval.push(withRemoval(options.currentWindow, "messageerror", (event) => {
67
+ ctx.emit(errorEvent, { error: event }, { raw: { messageError: event } });
68
+ }));
69
+ return {
70
+ context: ctx,
71
+ dispose: () => {
72
+ cleanupRemoval.forEach((removal) => removal.remove());
73
+ }
74
+ };
75
+ }
76
+ //#endregion
77
+ export { createContext };
78
+
79
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../src/adapters/window-message/internal.ts","../../../src/adapters/window-message/shared.ts","../../../src/adapters/window-message/index.ts"],"sourcesContent":["import type { EventTag } from '../..'\nimport type { Payload } from './shared'\n\nimport { nanoid } from '../..'\n\nexport function generatePayload<T>(type: EventTag<any, any>, payload: T): Payload<T> {\n return {\n id: nanoid(),\n type,\n payload,\n }\n}\n\nexport function parsePayload<T>(data: unknown): Payload<T> {\n return data as Payload<T>\n}\n","import type { EventTag } from '../../eventa'\n\nimport { defineEventa } from '../../eventa'\n\nexport interface Payload<T> {\n id: string\n type: EventTag<any, any>\n payload: T\n}\n\nexport interface WindowMessageEnvelope<T> {\n __eventa: true\n channel: string\n sourceId: string\n payload: Payload<T>\n}\n\nexport const errorEvent = { ...defineEventa<{ error: unknown }>() }\n","import type { EventContext } from '../../context'\nimport type { DirectionalEventa, Eventa } from '../../eventa'\nimport type { WindowMessageEnvelope } from './shared'\n\nimport { createContext as createBaseContext } from '../../context'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../eventa'\nimport { generatePayload, parsePayload } from './internal'\nimport { errorEvent } from './shared'\n\nfunction withRemoval<K extends keyof WindowEventMap>(currentWindow: Window, type: K, listener: (event: WindowEventMap[K]) => void) {\n currentWindow.addEventListener(type, listener)\n\n return {\n remove: () => {\n currentWindow.removeEventListener(type, listener)\n },\n }\n}\n\nfunction isEnvelope(value: unknown, channel: string): value is WindowMessageEnvelope<Eventa<any>> {\n return typeof value === 'object'\n && value !== null\n && '__eventa' in value\n && value.__eventa === true\n && 'channel' in value\n && value.channel === channel\n && 'sourceId' in value\n && typeof value.sourceId === 'string'\n && 'payload' in value\n && typeof value.payload === 'object'\n && value.payload !== null\n}\n\nfunction matchOrigin(expectedOrigin: string | ((origin: string) => boolean), origin: string) {\n if (typeof expectedOrigin === 'function') {\n return expectedOrigin(origin)\n }\n\n return expectedOrigin === origin\n}\n\nexport interface WindowMessageAdapterOptions {\n channel: string\n currentWindow: Window\n targetWindow: () => Window | null | undefined\n expectedSource?: () => MessageEventSource | null | undefined\n targetOrigin?: string\n expectedOrigin?: string | ((origin: string) => boolean)\n acceptMessage?: (event: MessageEvent<unknown>) => boolean\n messageEvents?: boolean\n messageErrorEvents?: boolean\n}\n\nexport function createContext(options: WindowMessageAdapterOptions) {\n const ctx = createBaseContext() as EventContext<any, { raw: { message?: MessageEvent, messageError?: MessageEvent, error?: unknown } }>\n const sourceId = crypto.randomUUID()\n\n const {\n messageEvents: message = true,\n messageErrorEvents: messageError = true,\n } = options\n\n const cleanupRemoval: Array<{ remove: () => void }> = []\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event) => {\n const targetWindow = options.targetWindow()\n if (!targetWindow) {\n return\n }\n\n const payload = generatePayload(event.id, { ...defineOutboundEventa(event.type), ...event })\n targetWindow.postMessage({\n __eventa: true,\n channel: options.channel,\n sourceId,\n payload,\n } satisfies WindowMessageEnvelope<Eventa<any>>, options.targetOrigin ?? '*')\n })\n\n if (message) {\n cleanupRemoval.push(withRemoval(options.currentWindow, 'message', (event) => {\n if (!isEnvelope(event.data, options.channel)) {\n return\n }\n\n const expectedSource = options.expectedSource?.()\n if (expectedSource && event.source !== expectedSource) {\n return\n }\n\n if (options.expectedOrigin && !matchOrigin(options.expectedOrigin, event.origin)) {\n return\n }\n\n if (event.data.sourceId === sourceId) {\n return\n }\n\n if (options.acceptMessage && !options.acceptMessage(event)) {\n return\n }\n\n try {\n const { type, payload } = parsePayload<Eventa<any>>(event.data.payload)\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message: event } })\n }\n catch (error) {\n console.error('Failed to parse window message:', error)\n ctx.emit(errorEvent, { error }, { raw: { error } })\n }\n }))\n }\n\n if (messageError) {\n cleanupRemoval.push(withRemoval(options.currentWindow, 'messageerror', (event) => {\n ctx.emit(errorEvent, { error: event }, { raw: { messageError: event } })\n }))\n }\n\n return {\n context: ctx,\n dispose: () => {\n cleanupRemoval.forEach(removal => removal.remove())\n },\n }\n}\n\nexport type * from './shared'\n"],"mappings":";;;AAKA,SAAgB,gBAAmB,MAA0B,SAAwB;AACnF,QAAO;EACL,IAAI,QAAQ;EACZ;EACA;EACD;;AAGH,SAAgB,aAAgB,MAA2B;AACzD,QAAO;;;;ACGT,MAAa,aAAa,EAAE,GAAG,cAAkC,EAAE;;;ACRnE,SAAS,YAA4C,eAAuB,MAAS,UAA8C;AACjI,eAAc,iBAAiB,MAAM,SAAS;AAE9C,QAAO,EACL,cAAc;AACZ,gBAAc,oBAAoB,MAAM,SAAS;IAEpD;;AAGH,SAAS,WAAW,OAAgB,SAA8D;AAChG,QAAO,OAAO,UAAU,YACnB,UAAU,QACV,cAAc,SACd,MAAM,aAAa,QACnB,aAAa,SACb,MAAM,YAAY,WAClB,cAAc,SACd,OAAO,MAAM,aAAa,YAC1B,aAAa,SACb,OAAO,MAAM,YAAY,YACzB,MAAM,YAAY;;AAGzB,SAAS,YAAY,gBAAwD,QAAgB;AAC3F,KAAI,OAAO,mBAAmB,WAC5B,QAAO,eAAe,OAAO;AAG/B,QAAO,mBAAmB;;AAe5B,SAAgB,cAAc,SAAsC;CAClE,MAAM,MAAMA,iBAAmB;CAC/B,MAAM,WAAW,OAAO,YAAY;CAEpC,MAAM,EACJ,eAAe,UAAU,MACzB,oBAAoB,eAAe,SACjC;CAEJ,MAAM,iBAAgD,EAAE;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAA,cAAmD,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,UAAU;EACZ,MAAM,eAAe,QAAQ,cAAc;AAC3C,MAAI,CAAC,aACH;EAGF,MAAM,UAAU,gBAAgB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO,CAAC;AAC5F,eAAa,YAAY;GACvB,UAAU;GACV,SAAS,QAAQ;GACjB;GACA;GACD,EAA+C,QAAQ,gBAAgB,IAAI;GAC5E;AAEF,KAAI,QACF,gBAAe,KAAK,YAAY,QAAQ,eAAe,YAAY,UAAU;AAC3E,MAAI,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,CAC1C;EAGF,MAAM,iBAAiB,QAAQ,kBAAkB;AACjD,MAAI,kBAAkB,MAAM,WAAW,eACrC;AAGF,MAAI,QAAQ,kBAAkB,CAAC,YAAY,QAAQ,gBAAgB,MAAM,OAAO,CAC9E;AAGF,MAAI,MAAM,KAAK,aAAa,SAC1B;AAGF,MAAI,QAAQ,iBAAiB,CAAC,QAAQ,cAAc,MAAM,CACxD;AAGF,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,aAA0B,MAAM,KAAK,QAAQ;AACvE,OAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;WAEzE,OAAO;AACZ,WAAQ,MAAM,mCAAmC,MAAM;AACvD,OAAI,KAAK,YAAY,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;GAErD,CAAC;AAGL,KAAI,aACF,gBAAe,KAAK,YAAY,QAAQ,eAAe,iBAAiB,UAAU;AAChF,MAAI,KAAK,YAAY,EAAE,OAAO,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;GACxE,CAAC;AAGL,QAAO;EACL,SAAS;EACT,eAAe;AACb,kBAAe,SAAQ,YAAW,QAAQ,QAAQ,CAAC;;EAEtD"}
@@ -1,5 +1,5 @@
1
- import { t as EventContext } from "../../context-BNM9nsGp.mjs";
2
- import { a as isWorkerEventa, c as workerMessageErrorEvent, i as defineWorkerEventa, n as WorkerPayload, o as normalizeOnListenerParameters, r as defineOutboundWorkerEventa, s as workerErrorEvent, t as WorkerEventa } from "../../shared-BcRXZZxh.mjs";
1
+ import { t as EventContext } from "../../context-BsqFeoer.mjs";
2
+ import { a as isWorkerEventa, c as workerMessageErrorEvent, i as defineWorkerEventa, n as WorkerPayload, o as normalizeOnListenerParameters, r as defineOutboundWorkerEventa, s as workerErrorEvent, t as WorkerEventa } from "../../shared-CVTLm458.mjs";
3
3
  import { Transferable, Worker } from "node:worker_threads";
4
4
 
5
5
  //#region src/adapters/worker-threads/index.d.ts
@@ -1,12 +1,11 @@
1
- import { c as matchBy, i as and, n as EventaFlowDirection, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../context-c10xPp3f.mjs";
2
- import { E as registerInvokeAbortEventListeners } from "../../src-CTkYOGiO.mjs";
3
- import { a as workerErrorEvent, i as normalizeOnListenerParameters, n as defineWorkerEventa, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload, t as defineOutboundWorkerEventa } from "../../shared-eQ-hnVHv.mjs";
4
-
1
+ import { c as matchBy, i as and, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../context-Dht_IZMb.mjs";
2
+ import { E as registerInvokeAbortEventListeners } from "../../src-CTs6h4Ci.mjs";
3
+ import { a as workerErrorEvent, i as normalizeOnListenerParameters, n as defineWorkerEventa, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload, t as defineOutboundWorkerEventa } from "../../shared-CA5MGwv0.mjs";
5
4
  //#region src/adapters/worker-threads/index.ts
6
5
  function createContext(worker) {
7
6
  const ctx = createContext$1();
8
7
  registerInvokeAbortEventListeners(ctx, workerErrorEvent);
9
- ctx.on(and(matchBy((e) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), matchBy("*")), (event, options) => {
8
+ ctx.on(and(matchBy((e) => e._flowDirection === "outbound" || !e._flowDirection), matchBy("*")), (event, options) => {
10
9
  const { body, transfer } = normalizeOnListenerParameters(event, options);
11
10
  const data = generateWorkerPayload(event.id, {
12
11
  ...defineOutboundEventa(event.type),
@@ -37,7 +36,7 @@ function createContext(worker) {
37
36
  });
38
37
  return { context: ctx };
39
38
  }
40
-
41
39
  //#endregion
42
40
  export { createContext, defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa };
41
+
43
42
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../src/adapters/worker-threads/index.ts"],"sourcesContent":["import type { Transferable, Worker } from 'node:worker_threads'\n\nimport type { EventContext } from '../../context'\nimport type { DirectionalEventa, Eventa } from '../../eventa'\n\nimport { createContext as createBaseContext } from '../../context'\nimport { registerInvokeAbortEventListeners } from '../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../webworkers/internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../webworkers/shared'\n\nexport function createContext(worker: Worker) {\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: unknown, error?: unknown, messageError?: unknown }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n worker.postMessage(data, transfer as unknown as Transferable[])\n return\n }\n\n worker.postMessage(data)\n })\n\n worker.on('message', (message) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(message)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } })\n }\n }\n catch (error) {\n console.error('Failed to parse Node worker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message } })\n }\n })\n\n worker.on('error', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n })\n\n worker.on('messageerror', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n })\n\n return {\n context: ctx,\n }\n}\n\nexport { defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa } from '../webworkers/shared'\nexport type * from '../webworkers/shared'\n"],"mappings":";;;;;AAWA,SAAgB,cAAc,QAAgB;CAC5C,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAmB,oBAAoB,YAAY,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,UAAO,YAAY,MAAM,SAAsC;AAC/D;;AAGF,SAAO,YAAY,KAAK;GACxB;AAEF,QAAO,GAAG,YAAY,YAAY;AAChC,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,QAAQ;AAClE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;OAGvE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;WAGjF,OAAO;AACZ,WAAQ,MAAM,wCAAwC,MAAM;AAC5D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;GAE7D;AAEF,QAAO,GAAG,UAAU,UAAU;AAC5B,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;GACzD;AAEF,QAAO,GAAG,iBAAiB,UAAU;AACnC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;GACvE;AAEF,QAAO,EACL,SAAS,KACV"}
1
+ {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../src/adapters/worker-threads/index.ts"],"sourcesContent":["import type { Transferable, Worker } from 'node:worker_threads'\n\nimport type { EventContext } from '../../context'\nimport type { DirectionalEventa, Eventa } from '../../eventa'\n\nimport { createContext as createBaseContext } from '../../context'\nimport { registerInvokeAbortEventListeners } from '../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../webworkers/internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../webworkers/shared'\n\nexport function createContext(worker: Worker) {\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: unknown, error?: unknown, messageError?: unknown }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n worker.postMessage(data, transfer as unknown as Transferable[])\n return\n }\n\n worker.postMessage(data)\n })\n\n worker.on('message', (message) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(message)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } })\n }\n }\n catch (error) {\n console.error('Failed to parse Node worker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message } })\n }\n })\n\n worker.on('error', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n })\n\n worker.on('messageerror', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n })\n\n return {\n context: ctx,\n }\n}\n\nexport { defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa } from '../webworkers/shared'\nexport type * from '../webworkers/shared'\n"],"mappings":";;;;AAWA,SAAgB,cAAc,QAAgB;CAC5C,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAA,cAAmD,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,UAAO,YAAY,MAAM,SAAsC;AAC/D;;AAGF,SAAO,YAAY,KAAK;GACxB;AAEF,QAAO,GAAG,YAAY,YAAY;AAChC,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,QAAQ;AAClE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;OAGvE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;WAGjF,OAAO;AACZ,WAAQ,MAAM,wCAAwC,MAAM;AAC5D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;GAE7D;AAEF,QAAO,GAAG,UAAU,UAAU;AAC5B,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;GACzD;AAEF,QAAO,GAAG,iBAAiB,UAAU;AACnC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;GACvE;AAEF,QAAO,EACL,SAAS,KACV"}
@@ -1,4 +1,4 @@
1
- import { t as EventContext } from "../../../context-BNM9nsGp.mjs";
1
+ import { t as EventContext } from "../../../context-BsqFeoer.mjs";
2
2
  import { MessagePort, Transferable } from "node:worker_threads";
3
3
 
4
4
  //#region src/adapters/worker-threads/worker/index.d.ts
@@ -1,16 +1,15 @@
1
- import { c as matchBy, i as and, n as EventaFlowDirection, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../../context-c10xPp3f.mjs";
2
- import { E as registerInvokeAbortEventListeners } from "../../../src-CTkYOGiO.mjs";
3
- import { a as workerErrorEvent, i as normalizeOnListenerParameters, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload } from "../../../shared-eQ-hnVHv.mjs";
1
+ import { c as matchBy, i as and, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../../context-Dht_IZMb.mjs";
2
+ import { E as registerInvokeAbortEventListeners } from "../../../src-CTs6h4Ci.mjs";
3
+ import { a as workerErrorEvent, i as normalizeOnListenerParameters, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload } from "../../../shared-CA5MGwv0.mjs";
4
4
  import { parentPort } from "node:worker_threads";
5
-
6
5
  //#region src/adapters/worker-threads/worker/index.ts
7
6
  function createContext(options) {
8
7
  const messagePort = options?.messagePort ?? parentPort;
9
8
  if (!messagePort) throw new Error("Node worker context requires a MessagePort (parentPort is null).");
10
9
  const ctx = createContext$1();
11
10
  registerInvokeAbortEventListeners(ctx, workerErrorEvent);
12
- ctx.on(and(matchBy((e) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), matchBy("*")), (event, options$1) => {
13
- const { body, transfer } = normalizeOnListenerParameters(event, options$1);
11
+ ctx.on(and(matchBy((e) => e._flowDirection === "outbound" || !e._flowDirection), matchBy("*")), (event, options) => {
12
+ const { body, transfer } = normalizeOnListenerParameters(event, options);
14
13
  const data = generateWorkerPayload(event.id, {
15
14
  ...defineOutboundEventa(event.type),
16
15
  ...event,
@@ -40,7 +39,7 @@ function createContext(options) {
40
39
  });
41
40
  return { context: ctx };
42
41
  }
43
-
44
42
  //#endregion
45
43
  export { createContext };
44
+
46
45
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createBaseContext","options"],"sources":["../../../../src/adapters/worker-threads/worker/index.ts"],"sourcesContent":["import type { MessagePort, Transferable } from 'node:worker_threads'\n\nimport type { EventContext } from '../../../context'\nimport type { DirectionalEventa, Eventa } from '../../../eventa'\n\nimport { parentPort } from 'node:worker_threads'\n\nimport { createContext as createBaseContext } from '../../../context'\nimport { registerInvokeAbortEventListeners } from '../../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../../webworkers/internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../../webworkers/shared'\n\nexport function createContext(options?: {\n messagePort?: MessagePort\n}) {\n const messagePort = options?.messagePort ?? parentPort\n if (!messagePort) {\n throw new Error('Node worker context requires a MessagePort (parentPort is null).')\n }\n\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: unknown, error?: unknown, messageError?: unknown }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n messagePort.postMessage(data, transfer as unknown as Transferable[])\n return\n }\n\n messagePort.postMessage(data)\n })\n\n messagePort.on('message', (message) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(message)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } })\n }\n }\n catch (error) {\n console.error('Failed to parse Node worker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message } })\n }\n })\n\n messagePort.on('error', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n })\n\n messagePort.on('messageerror', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n })\n\n return {\n context: ctx,\n }\n}\n"],"mappings":";;;;;;AAaA,SAAgB,cAAc,SAE3B;CACD,MAAM,cAAc,SAAS,eAAe;AAC5C,KAAI,CAAC,YACH,OAAM,IAAI,MAAM,mEAAmE;CAGrF,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAmB,oBAAoB,YAAY,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,cAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAOC,UAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,eAAY,YAAY,MAAM,SAAsC;AACpE;;AAGF,cAAY,YAAY,KAAK;GAC7B;AAEF,aAAY,GAAG,YAAY,YAAY;AACrC,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,QAAQ;AAClE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;OAGvE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;WAGjF,OAAO;AACZ,WAAQ,MAAM,wCAAwC,MAAM;AAC5D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;GAE7D;AAEF,aAAY,GAAG,UAAU,UAAU;AACjC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;GACzD;AAEF,aAAY,GAAG,iBAAiB,UAAU;AACxC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;GACvE;AAEF,QAAO,EACL,SAAS,KACV"}
1
+ {"version":3,"file":"index.mjs","names":["createBaseContext"],"sources":["../../../../src/adapters/worker-threads/worker/index.ts"],"sourcesContent":["import type { MessagePort, Transferable } from 'node:worker_threads'\n\nimport type { EventContext } from '../../../context'\nimport type { DirectionalEventa, Eventa } from '../../../eventa'\n\nimport { parentPort } from 'node:worker_threads'\n\nimport { createContext as createBaseContext } from '../../../context'\nimport { registerInvokeAbortEventListeners } from '../../../context-extension-invoke-internal'\nimport { and, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '../../../eventa'\nimport { generateWorkerPayload, parseWorkerPayload } from '../../webworkers/internal'\nimport { isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent } from '../../webworkers/shared'\n\nexport function createContext(options?: {\n messagePort?: MessagePort\n}) {\n const messagePort = options?.messagePort ?? parentPort\n if (!messagePort) {\n throw new Error('Node worker context requires a MessagePort (parentPort is null).')\n }\n\n const ctx = createBaseContext() as EventContext<\n {\n invokeRequest?: { transfer?: Transferable[] }\n invokeResponse?: { transfer?: Transferable[] }\n },\n { raw: { message?: unknown, error?: unknown, messageError?: unknown }, transfer?: Transferable[] }\n >\n // Configure invoke to fail fast on fatal worker errors (load/syntax/runtime).\n registerInvokeAbortEventListeners(ctx, workerErrorEvent)\n\n ctx.on(and(\n matchBy((e: DirectionalEventa<any>) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection),\n matchBy('*'),\n ), (event, options) => {\n const { body, transfer } = normalizeOnListenerParameters(event, options)\n const data = generateWorkerPayload(event.id, { ...defineOutboundEventa(event.type), ...event, body })\n if (transfer != null) {\n messagePort.postMessage(data, transfer as unknown as Transferable[])\n return\n }\n\n messagePort.postMessage(data)\n })\n\n messagePort.on('message', (message) => {\n try {\n const { type, payload } = parseWorkerPayload<Eventa<any>>(message)\n if (!isWorkerEventa(payload)) {\n ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } })\n }\n else {\n ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } })\n }\n }\n catch (error) {\n console.error('Failed to parse Node worker message:', error)\n ctx.emit(workerErrorEvent, { error }, { raw: { message } })\n }\n })\n\n messagePort.on('error', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { error } })\n })\n\n messagePort.on('messageerror', (error) => {\n ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } })\n })\n\n return {\n context: ctx,\n }\n}\n"],"mappings":";;;;;AAaA,SAAgB,cAAc,SAE3B;CACD,MAAM,cAAc,SAAS,eAAe;AAC5C,KAAI,CAAC,YACH,OAAM,IAAI,MAAM,mEAAmE;CAGrF,MAAM,MAAMA,iBAAmB;AAQ/B,mCAAkC,KAAK,iBAAiB;AAExD,KAAI,GAAG,IACL,SAAS,MAA8B,EAAE,mBAAA,cAAmD,CAAC,EAAE,eAAe,EAC9G,QAAQ,IAAI,CACb,GAAG,OAAO,YAAY;EACrB,MAAM,EAAE,MAAM,aAAa,8BAA8B,OAAO,QAAQ;EACxE,MAAM,OAAO,sBAAsB,MAAM,IAAI;GAAE,GAAG,qBAAqB,MAAM,KAAK;GAAE,GAAG;GAAO;GAAM,CAAC;AACrG,MAAI,YAAY,MAAM;AACpB,eAAY,YAAY,MAAM,SAAsC;AACpE;;AAGF,cAAY,YAAY,KAAK;GAC7B;AAEF,aAAY,GAAG,YAAY,YAAY;AACrC,MAAI;GACF,MAAM,EAAE,MAAM,YAAY,mBAAgC,QAAQ;AAClE,OAAI,CAAC,eAAe,QAAQ,CAC1B,KAAI,KAAK,oBAAoB,KAAK,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;OAGvE,KAAI,KAAK,oBAAoB,KAAK,EAAE,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;WAGjF,OAAO;AACZ,WAAQ,MAAM,wCAAwC,MAAM;AAC5D,OAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;GAE7D;AAEF,aAAY,GAAG,UAAU,UAAU;AACjC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;GACzD;AAEF,aAAY,GAAG,iBAAiB,UAAU;AACxC,MAAI,KAAK,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC;GACvE;AAEF,QAAO,EACL,SAAS,KACV"}
@@ -1,4 +1,4 @@
1
- import { n as EventTag, o as EventaMatchExpression, r as Eventa } from "./eventa-M1FMVrH1.mjs";
1
+ import { n as EventTag, o as EventaMatchExpression, r as Eventa } from "./eventa-DSnoBa1O.mjs";
2
2
 
3
3
  //#region src/context-hooks.d.ts
4
4
  interface EventaAdapterProps<EmitOptions = any> {
@@ -41,4 +41,4 @@ interface EventContext<Extensions = undefined, EmitOptions = undefined> {
41
41
  type EventContextEmitFn = EventContext['emit'];
42
42
  //#endregion
43
43
  export { EventContextEmitFn as n, createContext as r, EventContext as t };
44
- //# sourceMappingURL=context-BNM9nsGp.d.mts.map
44
+ //# sourceMappingURL=context-BsqFeoer.d.mts.map
@@ -1,37 +1,36 @@
1
1
  import isGlobMatch from "picomatch";
2
2
  import { customAlphabet } from "nanoid/non-secure";
3
-
4
3
  //#region src/eventa.ts
5
4
  function nanoid() {
6
5
  return customAlphabet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 16)();
7
6
  }
8
- let EventaType = /* @__PURE__ */ function(EventaType$1) {
9
- EventaType$1["Event"] = "event";
10
- EventaType$1["MatchExpression"] = "matchExpression";
11
- return EventaType$1;
7
+ let EventaType = /* @__PURE__ */ function(EventaType) {
8
+ EventaType["Event"] = "event";
9
+ EventaType["MatchExpression"] = "matchExpression";
10
+ return EventaType;
12
11
  }({});
13
- let EventaFlowDirection = /* @__PURE__ */ function(EventaFlowDirection$1) {
14
- EventaFlowDirection$1["Inbound"] = "inbound";
15
- EventaFlowDirection$1["Outbound"] = "outbound";
16
- return EventaFlowDirection$1;
12
+ let EventaFlowDirection = /* @__PURE__ */ function(EventaFlowDirection) {
13
+ EventaFlowDirection["Inbound"] = "inbound";
14
+ EventaFlowDirection["Outbound"] = "outbound";
15
+ return EventaFlowDirection;
17
16
  }({});
18
17
  function defineInboundEventa(id) {
19
18
  return {
20
19
  ...defineEventa(id),
21
- _flowDirection: EventaFlowDirection.Inbound
20
+ _flowDirection: "inbound"
22
21
  };
23
22
  }
24
23
  function defineOutboundEventa(id) {
25
24
  return {
26
25
  ...defineEventa(id),
27
- _flowDirection: EventaFlowDirection.Outbound
26
+ _flowDirection: "outbound"
28
27
  };
29
28
  }
30
29
  function defineEventa(id, options) {
31
30
  if (!id) id = nanoid();
32
31
  const eventaObj = {
33
32
  id: options?.inheritFrom?.id || id,
34
- type: options?.inheritFrom?.type || EventaType.Event
33
+ type: options?.inheritFrom?.type || "event"
35
34
  };
36
35
  const metadata = options?.inheritFrom?.metadata || options?.metadata;
37
36
  if (metadata) eventaObj.metadata = metadata;
@@ -42,7 +41,7 @@ function defineEventa(id, options) {
42
41
  function and(...matchExpression) {
43
42
  return {
44
43
  id: nanoid(),
45
- type: EventaType.MatchExpression,
44
+ type: "matchExpression",
46
45
  matcher: (event) => {
47
46
  return matchExpression.every((m) => m.matcher ? m.matcher(event) : false);
48
47
  }
@@ -51,7 +50,7 @@ function and(...matchExpression) {
51
50
  function or(...matchExpression) {
52
51
  return {
53
52
  id: nanoid(),
54
- type: EventaType.MatchExpression,
53
+ type: "matchExpression",
55
54
  matcher: (event) => {
56
55
  return matchExpression.some((m) => m.matcher ? m.matcher(event) : false);
57
56
  }
@@ -84,11 +83,10 @@ function matchBy(matchExpressionPossibleValues, inverted) {
84
83
  else if (typeof matchExpressionPossibleValues === "function") matcher = matchExpressionPossibleValues;
85
84
  return {
86
85
  id,
87
- type: EventaType.MatchExpression,
86
+ type: "matchExpression",
88
87
  matcher
89
88
  };
90
89
  }
91
-
92
90
  //#endregion
93
91
  //#region src/context.ts
94
92
  function createContext(props = {}) {
@@ -135,13 +133,13 @@ function createContext(props = {}) {
135
133
  },
136
134
  emit,
137
135
  on(eventOrMatchExpression, handler) {
138
- if (eventOrMatchExpression.type === EventaType.Event) {
136
+ if (eventOrMatchExpression.type === "event") {
139
137
  const event = eventOrMatchExpression;
140
138
  if (!listeners.has(event.id)) listeners.set(event.id, /* @__PURE__ */ new Set());
141
139
  listeners.get(event.id)?.add(handler);
142
140
  return () => listeners.get(event.id)?.delete(handler);
143
141
  }
144
- if (eventOrMatchExpression.type === EventaType.MatchExpression) {
142
+ if (eventOrMatchExpression.type === "matchExpression") {
145
143
  const matchExpression = eventOrMatchExpression;
146
144
  if (!matchExpressions.has(matchExpression.id)) matchExpressions.set(matchExpression.id, matchExpression);
147
145
  if (!matchExpressionListeners.has(matchExpression.id)) matchExpressionListeners.set(matchExpression.id, /* @__PURE__ */ new Set());
@@ -151,13 +149,13 @@ function createContext(props = {}) {
151
149
  return () => void 0;
152
150
  },
153
151
  once(eventOrMatchExpression, handler) {
154
- if (eventOrMatchExpression.type === EventaType.Event) {
152
+ if (eventOrMatchExpression.type === "event") {
155
153
  const event = eventOrMatchExpression;
156
154
  if (!onceListeners.has(event.id)) onceListeners.set(event.id, /* @__PURE__ */ new Set());
157
155
  onceListeners.get(event.id)?.add(handler);
158
156
  return () => onceListeners.get(event.id)?.delete(handler);
159
157
  }
160
- if (eventOrMatchExpression.type === EventaType.MatchExpression) {
158
+ if (eventOrMatchExpression.type === "matchExpression") {
161
159
  const matchExpression = eventOrMatchExpression;
162
160
  if (!matchExpressions.has(matchExpression.id)) matchExpressions.set(matchExpression.id, matchExpression);
163
161
  if (!matchExpressionListeners.has(matchExpression.id)) matchExpressionListeners.set(matchExpression.id, /* @__PURE__ */ new Set());
@@ -168,7 +166,7 @@ function createContext(props = {}) {
168
166
  },
169
167
  off(eventOrMatchExpression, handler) {
170
168
  switch (eventOrMatchExpression.type) {
171
- case EventaType.Event:
169
+ case "event":
172
170
  if (handler !== void 0) {
173
171
  listeners.get(eventOrMatchExpression.id)?.delete(handler);
174
172
  onceListeners.get(eventOrMatchExpression.id)?.delete(handler);
@@ -177,7 +175,7 @@ function createContext(props = {}) {
177
175
  listeners.delete(eventOrMatchExpression.id);
178
176
  onceListeners.delete(eventOrMatchExpression.id);
179
177
  break;
180
- case EventaType.MatchExpression:
178
+ case "matchExpression":
181
179
  if (handler !== void 0) {
182
180
  matchExpressionListeners.get(eventOrMatchExpression.id)?.delete(handler);
183
181
  matchExpressionOnceListeners.get(eventOrMatchExpression.id)?.delete(handler);
@@ -190,7 +188,7 @@ function createContext(props = {}) {
190
188
  }
191
189
  };
192
190
  }
193
-
194
191
  //#endregion
195
192
  export { defineEventa as a, matchBy as c, and as i, nanoid as l, EventaFlowDirection as n, defineInboundEventa as o, EventaType as r, defineOutboundEventa as s, createContext as t, or as u };
196
- //# sourceMappingURL=context-c10xPp3f.mjs.map
193
+
194
+ //# sourceMappingURL=context-Dht_IZMb.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-Dht_IZMb.mjs","names":[],"sources":["../src/eventa.ts","../src/context.ts"],"sourcesContent":["import isGlobMatch from 'picomatch'\n\nimport { customAlphabet } from 'nanoid/non-secure'\n\nexport function nanoid() {\n return customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 16)()\n}\n\nexport interface InvokeEventConstraint<_Req, _Res> {}\n\nexport type EventTag<Res, Req> = string & InvokeEventConstraint<Req, Res>\n\nexport enum EventaType {\n Event = 'event',\n MatchExpression = 'matchExpression',\n}\n\nexport enum EventaFlowDirection {\n Inbound = 'inbound',\n Outbound = 'outbound',\n}\n\nexport interface DirectionalEventa<P, T = undefined> extends Eventa<P> {\n _flowDirection: EventaFlowDirection | T\n}\n\nexport interface InboundEventa<T> extends DirectionalEventa<T> {\n _flowDirection: EventaFlowDirection.Inbound\n}\n\nexport interface OutboundEventa<T> extends DirectionalEventa<T> {\n _flowDirection: EventaFlowDirection.Outbound\n}\n\nexport function defineInboundEventa<T>(id?: string): InboundEventa<T> {\n return {\n ...defineEventa<T>(id),\n _flowDirection: EventaFlowDirection.Inbound,\n } as InboundEventa<T>\n}\n\nexport function defineOutboundEventa<T>(id?: string): OutboundEventa<T> {\n return {\n ...defineEventa<T>(id),\n _flowDirection: EventaFlowDirection.Outbound,\n } as OutboundEventa<T>\n}\n\n// type ServerInvokeHandlerEvent<Req, Res> = symbol & InvokeEventConstraint<Req, Res>\n// type ClientInvoke<Req> = symbol & InvokeEventConstraint<Req, null>\n\nexport interface EventaLike<_P = undefined, T extends EventaType = EventaType> {\n id: string\n type?: T\n}\n\nexport interface Eventa<P = unknown, M = unknown, IM = unknown> extends EventaLike<P, EventaType.Event> {\n body?: P\n /**\n * Optional runtime metadata that can be attached to the eventa.\n *\n * NOTICE: for defineInvoke, and defineInvokeHandler, the metadata will be omitted\n * for smaller chunk size, this means for metadata, the data contains will not be available in the defineInvokeHandler.\n *\n * This can be used for various purposes such as logging, debugging, or providing additional context about the eventa.\n * Allowing the event handler to be able to access this metadata can enable more flexible and powerful event handling logic.\n */\n metadata?: M\n /**\n * Optional runtime metadata that can be attached to the eventa when invoking it.\n *\n * Unlike the `metadata` field, the `invokeMetadata` is specifically designed to be used when invoking the eventa, and it\n * will be available in the defineInvokeHandler.\n *\n * This allows for a clear separation between the metadata that describes the eventa itself and the metadata that is relevant\n * to the invocation of the eventa, providing more flexibility in how metadata is used and accessed within the event\n * handling system.\n */\n invokeMetadata?: IM\n}\n\nexport type InferEventaPayload<E> = E extends Eventa<infer P> ? P : never\n\nexport function defineEventa<P = undefined, M = undefined, IM = undefined>(\n id?: string,\n options?: {\n /**\n * Optionally inherit many properties from another parent eventa.\n */\n inheritFrom?: Eventa<P, M, IM>\n /**\n * Optional runtime metadata that can be attached to the eventa.\n *\n * NOTICE: for defineInvoke, and defineInvokeHandler, the metadata will be omitted\n * for smaller chunk size, this means for metadata, the data contains will not be available in the defineInvokeHandler.\n *\n * This can be used for various purposes such as logging, debugging, or providing additional context about the eventa.\n * Allowing the event handler to be able to access this metadata can enable more flexible and powerful event handling logic.\n */\n metadata?: M\n /**\n * Optional runtime metadata that can be attached to the eventa when invoking it.\n *\n * Unlike the `metadata` field, the `invokeMetadata` is specifically designed to be used when invoking the eventa, and it\n * will be available in the defineInvokeHandler.\n *\n * This allows for a clear separation between the metadata that describes the eventa itself and the metadata that is relevant\n * to the invocation of the eventa, providing more flexibility in how metadata is used and accessed within the event\n * handling system.\n */\n invokeMetadata?: IM\n },\n): Eventa<P, M, IM> {\n if (!id) {\n id = nanoid()\n }\n\n const eventaObj: Eventa<P, M, IM> = {\n id: options?.inheritFrom?.id || id,\n type: options?.inheritFrom?.type || EventaType.Event,\n }\n\n const metadata = options?.inheritFrom?.metadata || options?.metadata\n if (metadata) {\n eventaObj.metadata = metadata\n }\n\n const invokeMetadata = options?.inheritFrom?.invokeMetadata || options?.invokeMetadata\n if (invokeMetadata) {\n eventaObj.invokeMetadata = invokeMetadata\n }\n\n return eventaObj as Eventa<P, M, IM>\n}\n\nexport interface EventaMatchExpression<P = undefined> extends EventaLike<P, EventaType.MatchExpression> {\n matcher?: (event: Eventa<P>) => boolean | Promise<boolean>\n}\n\nexport function and<P>(...matchExpression: Array<EventaMatchExpression<P>>): EventaMatchExpression<P> {\n return {\n id: nanoid(),\n type: EventaType.MatchExpression,\n matcher: (event: Eventa<P>) => {\n return matchExpression.every(m => m.matcher ? m.matcher(event) : false)\n },\n }\n}\n\nexport function or<P>(...matchExpression: Array<EventaMatchExpression<P>>): EventaMatchExpression<P> {\n return {\n id: nanoid(),\n type: EventaType.MatchExpression,\n matcher: (event: Eventa<P>) => {\n return matchExpression.some(m => m.matcher ? m.matcher(event) : false)\n },\n }\n}\n\n/**\n * Match by is powerful utility function that allows you to create a match expression based on various criteria\n * when working with eventa (event system).\n *\n * Semantics like glob matching, RegExp, or even custom matcher function can be used to create complex match\n * expressions that can be used to filter and handle events in a flexible way.\n */\nexport function matchBy<P = undefined>(glob: string, inverted?: boolean): EventaMatchExpression<P>\nexport function matchBy<P = undefined>(options: { ids: string[] }, inverted?: boolean): EventaMatchExpression<P>\nexport function matchBy<P = undefined>(options: { eventa: Eventa<P>[] }, inverted?: boolean): EventaMatchExpression<P>\nexport function matchBy<P = undefined>(options: { types: EventaType[] }, inverted?: boolean): EventaMatchExpression<P>\nexport function matchBy<P = undefined>(regExp: RegExp, inverted?: boolean): EventaMatchExpression<P>\nexport function matchBy<P = undefined, E extends Eventa<P> = Eventa<P>>(matcher: (event: E) => boolean | Promise<boolean>): EventaMatchExpression<P>\nexport function matchBy<P = undefined, E extends Eventa<P> = Eventa<P>>(\n matchExpressionPossibleValues:\n | string\n | Eventa<any>\n | { ids: string[] }\n | { eventa: Eventa<P>[] }\n | { types: EventaType[] }\n | RegExp\n | ((event: E) => boolean | Promise<boolean>),\n inverted?: boolean,\n): EventaMatchExpression<P> {\n const id = nanoid()\n\n let matcher: (event: E) => boolean | Promise<boolean> = () => false\n if (typeof matchExpressionPossibleValues === 'string') {\n matcher = (eventa) => {\n return isGlobMatch(matchExpressionPossibleValues)(eventa.id)\n }\n }\n else if (typeof matchExpressionPossibleValues === 'object') {\n if ('ids' in matchExpressionPossibleValues) {\n matcher = (event: Eventa<P>) => {\n if (inverted) {\n return !matchExpressionPossibleValues.ids.includes(event.id)\n }\n\n return matchExpressionPossibleValues.ids.includes(event.id)\n }\n }\n else if ('eventa' in matchExpressionPossibleValues) {\n matcher = (event: Eventa<P>) => {\n if (inverted) {\n return !matchExpressionPossibleValues.eventa.some(e => e.id === event.id)\n }\n\n return matchExpressionPossibleValues.eventa.some(e => e.id === event.id)\n }\n }\n else if ('types' in matchExpressionPossibleValues) {\n matcher = (event: Eventa<P>) => {\n if (typeof event.type === 'undefined') {\n return false\n }\n if (inverted) {\n return !matchExpressionPossibleValues.types.includes(event.type)\n }\n\n return matchExpressionPossibleValues.types.includes(event.type)\n }\n }\n }\n else if (matchExpressionPossibleValues instanceof RegExp) {\n matcher = (event: Eventa<P>) => {\n if (inverted) {\n return !matchExpressionPossibleValues.test(event.id)\n }\n\n return matchExpressionPossibleValues.test(event.id)\n }\n }\n else if (typeof matchExpressionPossibleValues === 'function') {\n matcher = matchExpressionPossibleValues\n }\n\n return {\n id,\n type: EventaType.MatchExpression,\n matcher,\n } satisfies EventaMatchExpression<P>\n}\n","import type { EventaAdapter } from './context-hooks'\nimport type { Eventa, EventaMatchExpression, EventTag } from './eventa'\n\nimport { EventaType } from './eventa'\n\ninterface CreateContextProps<EmitOptions = any> {\n adapter?: EventaAdapter<EmitOptions>\n}\n\nexport function createContext<Extensions = any, Options = { raw?: any }>(props: CreateContextProps<Options> = {}): EventContext<Extensions, Options> {\n const listeners = new Map<EventTag<any, any>, Set<(params: any, options?: Options) => any>>()\n const onceListeners = new Map<EventTag<any, any>, Set<(params: any, options?: Options) => any>>()\n\n const matchExpressions = new Map<string, EventaMatchExpression<any>>()\n const matchExpressionListeners = new Map<string, Set<(params: any, options?: Options) => any>>()\n const matchExpressionOnceListeners = new Map<string, Set<(params: any, options?: Options) => any>>()\n\n const hooks = props.adapter?.(emit).hooks\n\n function emit<P>(event: Eventa<P>, payload: P, options?: Options) {\n const emittingPayload = { ...event, body: payload }\n\n for (const listener of listeners.get(event.id) || []) {\n listener(emittingPayload, options)\n hooks?.onReceived?.(event.id, emittingPayload)\n }\n\n for (const onceListener of onceListeners.get(event.id) || []) {\n onceListener(emittingPayload, options)\n hooks?.onReceived?.(event.id, emittingPayload)\n onceListeners.get(event.id)?.delete(onceListener)\n }\n\n for (const matchExpression of matchExpressions.values()) {\n if (matchExpression.matcher) {\n const match = matchExpression.matcher(emittingPayload)\n if (!match) {\n continue\n }\n\n for (const listener of matchExpressionListeners.get(matchExpression.id) || []) {\n listener(emittingPayload, options)\n hooks?.onReceived?.(matchExpression.id, emittingPayload)\n }\n for (const onceListener of matchExpressionOnceListeners.get(matchExpression.id) || []) {\n onceListener(emittingPayload, options)\n hooks?.onReceived?.(matchExpression.id, emittingPayload)\n matchExpressionOnceListeners.get(matchExpression.id)?.delete(onceListener)\n }\n }\n }\n\n hooks?.onSent(event.id, emittingPayload, options)\n }\n\n return {\n get listeners() {\n return listeners\n },\n\n get onceListeners() {\n return onceListeners\n },\n\n emit,\n\n on<P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler: (payload: Eventa<P>, options?: Options) => void): () => void {\n if (eventOrMatchExpression.type === EventaType.Event) {\n const event = eventOrMatchExpression as Eventa<P>\n if (!listeners.has(event.id)) {\n listeners.set(event.id, new Set())\n }\n\n listeners.get(event.id)?.add(handler)\n\n return () => listeners.get(event.id)?.delete(handler)\n }\n\n if (eventOrMatchExpression.type === EventaType.MatchExpression) {\n const matchExpression = eventOrMatchExpression as EventaMatchExpression<P>\n if (!matchExpressions.has(matchExpression.id)) {\n matchExpressions.set(matchExpression.id, matchExpression as EventaMatchExpression<P>)\n }\n if (!matchExpressionListeners.has(matchExpression.id)) {\n matchExpressionListeners.set(matchExpression.id, new Set())\n }\n\n matchExpressionListeners.get(matchExpression.id)?.add(handler)\n\n return () => matchExpressionListeners.get(matchExpression.id)?.delete(handler)\n }\n\n return () => void 0\n },\n\n once<P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler: (payload: Eventa<P>, options?: Options) => void): () => void {\n if (eventOrMatchExpression.type === EventaType.Event) {\n const event = eventOrMatchExpression as Eventa<P>\n if (!onceListeners.has(event.id)) {\n onceListeners.set(event.id, new Set())\n }\n\n onceListeners.get(event.id)?.add(handler)\n\n return () => onceListeners.get(event.id)?.delete(handler)\n }\n\n if (eventOrMatchExpression.type === EventaType.MatchExpression) {\n const matchExpression = eventOrMatchExpression as EventaMatchExpression<P>\n if (!matchExpressions.has(matchExpression.id)) {\n matchExpressions.set(matchExpression.id, matchExpression as EventaMatchExpression<P>)\n }\n if (!matchExpressionListeners.has(matchExpression.id)) {\n matchExpressionListeners.set(matchExpression.id, new Set())\n }\n\n matchExpressionOnceListeners.get(matchExpression.id)?.add(handler)\n\n return () => matchExpressionOnceListeners.get(matchExpression.id)?.delete(handler)\n }\n\n return () => void 0\n },\n\n off<P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler?: (payload: Eventa<P>, options?: Options) => void) {\n switch (eventOrMatchExpression.type) {\n case EventaType.Event:\n if (handler !== undefined) {\n listeners.get(eventOrMatchExpression.id)?.delete(handler)\n onceListeners.get(eventOrMatchExpression.id)?.delete(handler)\n break\n }\n\n listeners.delete(eventOrMatchExpression.id)\n onceListeners.delete(eventOrMatchExpression.id)\n break\n case EventaType.MatchExpression:\n if (handler !== undefined) {\n matchExpressionListeners.get(eventOrMatchExpression.id)?.delete(handler)\n matchExpressionOnceListeners.get(eventOrMatchExpression.id)?.delete(handler)\n break\n }\n\n matchExpressionListeners.delete(eventOrMatchExpression.id)\n matchExpressionOnceListeners.delete(eventOrMatchExpression.id)\n break\n }\n },\n }\n}\n\nexport interface EventContext<Extensions = undefined, EmitOptions = undefined> {\n listeners: Map<EventTag<any, any>, Set<(params: any) => any>>\n onceListeners: Map<EventTag<any, any>, Set<(params: any) => any>>\n\n emit: <P>(event: Eventa<P>, payload: P, options?: EmitOptions) => void\n on: <P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler: (payload: Eventa<P>, options?: EmitOptions) => void) => () => void\n once: <P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler: (payload: Eventa<P>, options?: EmitOptions) => void) => () => void\n off: <P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler?: (payload: Eventa<P>, options?: EmitOptions) => void) => void\n\n /**\n * Extensions (adapter-specific).\n *\n * Known usage: webworkers/worker-threads populate internal invoke config via\n * `extensions.__internal.invoke` to abort pending invokes on fatal errors.\n */\n extensions?: Extensions\n}\n\nexport type EventContextEmitFn = EventContext['emit']\n"],"mappings":"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"}
@@ -4,11 +4,11 @@ interface InvokeEventConstraint<_Req, _Res> {}
4
4
  type EventTag<Res, Req> = string & InvokeEventConstraint<Req, Res>;
5
5
  declare enum EventaType {
6
6
  Event = "event",
7
- MatchExpression = "matchExpression",
7
+ MatchExpression = "matchExpression"
8
8
  }
9
9
  declare enum EventaFlowDirection {
10
10
  Inbound = "inbound",
11
- Outbound = "outbound",
11
+ Outbound = "outbound"
12
12
  }
13
13
  interface DirectionalEventa<P, T = undefined> extends Eventa<P> {
14
14
  _flowDirection: EventaFlowDirection | T;
@@ -103,4 +103,4 @@ declare function matchBy<P = undefined>(regExp: RegExp, inverted?: boolean): Eve
103
103
  declare function matchBy<P = undefined, E extends Eventa<P> = Eventa<P>>(matcher: (event: E) => boolean | Promise<boolean>): EventaMatchExpression<P>;
104
104
  //#endregion
105
105
  export { nanoid as _, EventaLike as a, InboundEventa as c, OutboundEventa as d, and as f, matchBy as g, defineOutboundEventa as h, EventaFlowDirection as i, InferEventaPayload as l, defineInboundEventa as m, EventTag as n, EventaMatchExpression as o, defineEventa as p, Eventa as r, EventaType as s, DirectionalEventa as t, InvokeEventConstraint as u, or as v };
106
- //# sourceMappingURL=eventa-M1FMVrH1.d.mts.map
106
+ //# sourceMappingURL=eventa-DSnoBa1O.d.mts.map