@moeru/eventa 1.0.0-alpha.9 → 1.0.0-beta.1
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/README.md +238 -1
- package/dist/adapters/broadcast-channel/index.d.mts +2 -2
- package/dist/adapters/broadcast-channel/index.mjs +2 -2
- package/dist/adapters/electron/main.d.mts +10 -3
- package/dist/adapters/electron/main.mjs +3 -3
- package/dist/adapters/electron/main.mjs.map +1 -1
- package/dist/adapters/electron/renderer.d.mts +2 -2
- package/dist/adapters/electron/renderer.mjs +3 -3
- package/dist/adapters/event-emitter/index.d.mts +2 -2
- package/dist/adapters/event-emitter/index.mjs +2 -2
- package/dist/adapters/event-target/index.d.mts +2 -2
- package/dist/adapters/event-target/index.mjs +2 -2
- package/dist/adapters/websocket/h3/index.d.mts +2 -2
- package/dist/adapters/websocket/h3/index.mjs +2 -2
- package/dist/adapters/websocket/h3/index.mjs.map +1 -1
- package/dist/adapters/websocket/index.d.mts +1 -1
- package/dist/adapters/websocket/native/index.d.mts +2 -2
- package/dist/adapters/websocket/native/index.mjs +2 -2
- package/dist/adapters/webworkers/index.d.mts +4 -43
- package/dist/adapters/webworkers/index.mjs +5 -4
- package/dist/adapters/webworkers/index.mjs.map +1 -1
- package/dist/adapters/webworkers/worker/index.d.mts +2 -1
- package/dist/adapters/webworkers/worker/index.mjs +4 -3
- package/dist/adapters/webworkers/worker/index.mjs.map +1 -1
- package/dist/adapters/worker-threads/index.d.mts +25 -0
- package/dist/adapters/worker-threads/index.mjs +43 -0
- package/dist/adapters/worker-threads/index.mjs.map +1 -0
- package/dist/adapters/worker-threads/worker/index.d.mts +26 -0
- package/dist/adapters/worker-threads/worker/index.mjs +46 -0
- package/dist/adapters/worker-threads/worker/index.mjs.map +1 -0
- package/dist/{context-C0RYgQg8.d.mts → context-ZVv99bcM.d.mts} +7 -4
- package/dist/{context-BygZzwvo.mjs → context-ex8urwfs.mjs} +1 -1
- package/dist/context-ex8urwfs.mjs.map +1 -0
- package/dist/{eventa-DWOtUOEf.d.mts → eventa-AJyw28P8.d.mts} +3 -2
- package/dist/index-CI_gUGXg.d.mts +522 -0
- package/dist/index.d.mts +4 -5
- package/dist/index.mjs +3 -3
- package/dist/{internal-C-bIJqJC.mjs → internal-De3z6hO5.mjs} +2 -2
- package/dist/{internal-C-bIJqJC.mjs.map → internal-De3z6hO5.mjs.map} +1 -1
- package/dist/{shared-BExRc0zC.mjs → shared-BZOulnwC.mjs} +2 -2
- package/dist/{shared-BExRc0zC.mjs.map → shared-BZOulnwC.mjs.map} +1 -1
- package/dist/{shared-DRAsaLuo.mjs → shared-BdqIf6iZ.mjs} +4 -10
- package/dist/shared-BdqIf6iZ.mjs.map +1 -0
- package/dist/{shared-Q10kRJA8.d.mts → shared-Cd4CLAdD.d.mts} +2 -2
- package/dist/shared-DgX1R_nY.d.mts +34 -0
- package/dist/src-DZ7si0kE.mjs +1169 -0
- package/dist/src-DZ7si0kE.mjs.map +1 -0
- package/package.json +19 -6
- package/dist/context-BygZzwvo.mjs.map +0 -1
- package/dist/index-DXQGU0bi.d.mts +0 -24
- package/dist/invoke-BB3tmZlr.d.mts +0 -137
- package/dist/shared-DRAsaLuo.mjs.map +0 -1
- package/dist/src-Bnf7MdlN.mjs +0 -284
- package/dist/src-Bnf7MdlN.mjs.map +0 -1
|
@@ -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 { 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 {
|
|
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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { t as EventContext } from "../../context-ZVv99bcM.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-DgX1R_nY.mjs";
|
|
3
|
+
import { Transferable, Worker } from "node:worker_threads";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/worker-threads/index.d.ts
|
|
6
|
+
declare function createContext(worker: Worker): {
|
|
7
|
+
context: EventContext<{
|
|
8
|
+
invokeRequest?: {
|
|
9
|
+
transfer?: Transferable[];
|
|
10
|
+
};
|
|
11
|
+
invokeResponse?: {
|
|
12
|
+
transfer?: Transferable[];
|
|
13
|
+
};
|
|
14
|
+
}, {
|
|
15
|
+
raw: {
|
|
16
|
+
message?: unknown;
|
|
17
|
+
error?: unknown;
|
|
18
|
+
messageError?: unknown;
|
|
19
|
+
};
|
|
20
|
+
transfer?: Transferable[];
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { WorkerEventa, WorkerPayload, createContext, defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa, normalizeOnListenerParameters, workerErrorEvent, workerMessageErrorEvent };
|
|
25
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { c as matchBy, i as and, n as EventaFlowDirection, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../context-ex8urwfs.mjs";
|
|
2
|
+
import { E as registerInvokeAbortEventListeners } from "../../src-DZ7si0kE.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-BdqIf6iZ.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/worker-threads/index.ts
|
|
6
|
+
function createContext(worker) {
|
|
7
|
+
const ctx = createContext$1();
|
|
8
|
+
registerInvokeAbortEventListeners(ctx, workerErrorEvent);
|
|
9
|
+
ctx.on(and(matchBy((e) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), matchBy("*")), (event, options) => {
|
|
10
|
+
const { body, transfer } = normalizeOnListenerParameters(event, options);
|
|
11
|
+
const data = generateWorkerPayload(event.id, {
|
|
12
|
+
...defineOutboundEventa(event.type),
|
|
13
|
+
...event,
|
|
14
|
+
body
|
|
15
|
+
});
|
|
16
|
+
if (transfer != null) {
|
|
17
|
+
worker.postMessage(data, transfer);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
worker.postMessage(data);
|
|
21
|
+
});
|
|
22
|
+
worker.on("message", (message) => {
|
|
23
|
+
try {
|
|
24
|
+
const { type, payload } = parseWorkerPayload(message);
|
|
25
|
+
if (!isWorkerEventa(payload)) ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } });
|
|
26
|
+
else ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } });
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error("Failed to parse Node worker message:", error);
|
|
29
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { message } });
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
worker.on("error", (error) => {
|
|
33
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { error } });
|
|
34
|
+
});
|
|
35
|
+
worker.on("messageerror", (error) => {
|
|
36
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } });
|
|
37
|
+
});
|
|
38
|
+
return { context: ctx };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { createContext, defineOutboundWorkerEventa, defineWorkerEventa, isWorkerEventa };
|
|
43
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { t as EventContext } from "../../../context-ZVv99bcM.mjs";
|
|
2
|
+
import { MessagePort, Transferable } from "node:worker_threads";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/worker-threads/worker/index.d.ts
|
|
5
|
+
declare function createContext(options?: {
|
|
6
|
+
messagePort?: MessagePort;
|
|
7
|
+
}): {
|
|
8
|
+
context: EventContext<{
|
|
9
|
+
invokeRequest?: {
|
|
10
|
+
transfer?: Transferable[];
|
|
11
|
+
};
|
|
12
|
+
invokeResponse?: {
|
|
13
|
+
transfer?: Transferable[];
|
|
14
|
+
};
|
|
15
|
+
}, {
|
|
16
|
+
raw: {
|
|
17
|
+
message?: unknown;
|
|
18
|
+
error?: unknown;
|
|
19
|
+
messageError?: unknown;
|
|
20
|
+
};
|
|
21
|
+
transfer?: Transferable[];
|
|
22
|
+
}>;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createContext };
|
|
26
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { c as matchBy, i as and, n as EventaFlowDirection, o as defineInboundEventa, s as defineOutboundEventa, t as createContext$1 } from "../../../context-ex8urwfs.mjs";
|
|
2
|
+
import { E as registerInvokeAbortEventListeners } from "../../../src-DZ7si0kE.mjs";
|
|
3
|
+
import { a as workerErrorEvent, i as normalizeOnListenerParameters, o as generateWorkerPayload, r as isWorkerEventa, s as parseWorkerPayload } from "../../../shared-BdqIf6iZ.mjs";
|
|
4
|
+
import { parentPort } from "node:worker_threads";
|
|
5
|
+
|
|
6
|
+
//#region src/adapters/worker-threads/worker/index.ts
|
|
7
|
+
function createContext(options) {
|
|
8
|
+
const messagePort = options?.messagePort ?? parentPort;
|
|
9
|
+
if (!messagePort) throw new Error("Node worker context requires a MessagePort (parentPort is null).");
|
|
10
|
+
const ctx = createContext$1();
|
|
11
|
+
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);
|
|
14
|
+
const data = generateWorkerPayload(event.id, {
|
|
15
|
+
...defineOutboundEventa(event.type),
|
|
16
|
+
...event,
|
|
17
|
+
body
|
|
18
|
+
});
|
|
19
|
+
if (transfer != null) {
|
|
20
|
+
messagePort.postMessage(data, transfer);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
messagePort.postMessage(data);
|
|
24
|
+
});
|
|
25
|
+
messagePort.on("message", (message) => {
|
|
26
|
+
try {
|
|
27
|
+
const { type, payload } = parseWorkerPayload(message);
|
|
28
|
+
if (!isWorkerEventa(payload)) ctx.emit(defineInboundEventa(type), payload.body, { raw: { message } });
|
|
29
|
+
else ctx.emit(defineInboundEventa(type), { message: payload.body }, { raw: { message } });
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error("Failed to parse Node worker message:", error);
|
|
32
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { message } });
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
messagePort.on("error", (error) => {
|
|
36
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { error } });
|
|
37
|
+
});
|
|
38
|
+
messagePort.on("messageerror", (error) => {
|
|
39
|
+
ctx.emit(workerErrorEvent, { error }, { raw: { messageError: error } });
|
|
40
|
+
});
|
|
41
|
+
return { context: ctx };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { createContext };
|
|
46
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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,4 +1,4 @@
|
|
|
1
|
-
import { n as EventTag, o as EventaMatchExpression, r as Eventa } from "./eventa-
|
|
1
|
+
import { n as EventTag, o as EventaMatchExpression, r as Eventa } from "./eventa-AJyw28P8.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/context-hooks.d.ts
|
|
4
4
|
interface EventaAdapterProps<EmitOptions = any> {
|
|
@@ -21,7 +21,7 @@ interface CreateContextProps<EmitOptions = any> {
|
|
|
21
21
|
adapter?: EventaAdapter<EmitOptions>;
|
|
22
22
|
}
|
|
23
23
|
declare function createContext<Extensions = any, Options = {
|
|
24
|
-
raw
|
|
24
|
+
raw?: any;
|
|
25
25
|
}>(props?: CreateContextProps<Options>): EventContext<Extensions, Options>;
|
|
26
26
|
interface EventContext<Extensions = undefined, EmitOptions = undefined> {
|
|
27
27
|
listeners: Map<EventTag<any, any>, Set<(params: any) => any>>;
|
|
@@ -31,11 +31,14 @@ interface EventContext<Extensions = undefined, EmitOptions = undefined> {
|
|
|
31
31
|
once: <P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler: (payload: Eventa<P>, options?: EmitOptions) => void) => () => void;
|
|
32
32
|
off: <P>(eventOrMatchExpression: Eventa<P> | EventaMatchExpression<P>, handler?: (payload: Eventa<P>, options?: EmitOptions) => void) => void;
|
|
33
33
|
/**
|
|
34
|
-
* Extensions
|
|
34
|
+
* Extensions (adapter-specific).
|
|
35
|
+
*
|
|
36
|
+
* Known usage: webworkers/worker-threads populate internal invoke config via
|
|
37
|
+
* `extensions.__internal.invoke` to abort pending invokes on fatal errors.
|
|
35
38
|
*/
|
|
36
39
|
extensions?: Extensions;
|
|
37
40
|
}
|
|
38
41
|
type EventContextEmitFn = EventContext['emit'];
|
|
39
42
|
//#endregion
|
|
40
43
|
export { EventContextEmitFn as n, createContext as r, EventContext as t };
|
|
41
|
-
//# sourceMappingURL=context-
|
|
44
|
+
//# sourceMappingURL=context-ZVv99bcM.d.mts.map
|
|
@@ -188,4 +188,4 @@ function createContext(props = {}) {
|
|
|
188
188
|
|
|
189
189
|
//#endregion
|
|
190
190
|
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 };
|
|
191
|
-
//# sourceMappingURL=context-
|
|
191
|
+
//# sourceMappingURL=context-ex8urwfs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-ex8urwfs.mjs","names":["matcher: (event: E) => boolean | Promise<boolean>"],"sources":["../src/eventa.ts","../src/context.ts"],"sourcesContent":["import isGlobMatch from 'picomatch'\n\nimport { customAlphabet } from 'nanoid'\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> extends EventaLike<P, EventaType.Event> {\n body?: P\n}\n\nexport type InferEventaPayload<E> = E extends Eventa<infer P> ? P : never\n\nexport function defineEventa<P = undefined>(id?: string): Eventa<P> {\n if (!id) {\n id = nanoid()\n }\n\n return {\n id,\n type: EventaType.Event,\n }\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\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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"}
|
|
@@ -28,6 +28,7 @@ interface EventaLike<_P = undefined, T extends EventaType = EventaType> {
|
|
|
28
28
|
interface Eventa<P = unknown> extends EventaLike<P, EventaType.Event> {
|
|
29
29
|
body?: P;
|
|
30
30
|
}
|
|
31
|
+
type InferEventaPayload<E> = E extends Eventa<infer P> ? P : never;
|
|
31
32
|
declare function defineEventa<P = undefined>(id?: string): Eventa<P>;
|
|
32
33
|
interface EventaMatchExpression<P = undefined> extends EventaLike<P, EventaType.MatchExpression> {
|
|
33
34
|
matcher?: (event: Eventa<P>) => boolean | Promise<boolean>;
|
|
@@ -47,5 +48,5 @@ declare function matchBy<P = undefined>(options: {
|
|
|
47
48
|
declare function matchBy<P = undefined>(regExp: RegExp, inverted?: boolean): EventaMatchExpression<P>;
|
|
48
49
|
declare function matchBy<P = undefined, E extends Eventa<P> = Eventa<P>>(matcher: (event: E) => boolean | Promise<boolean>): EventaMatchExpression<P>;
|
|
49
50
|
//#endregion
|
|
50
|
-
export {
|
|
51
|
-
//# sourceMappingURL=eventa-
|
|
51
|
+
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 };
|
|
52
|
+
//# sourceMappingURL=eventa-AJyw28P8.d.mts.map
|