@powerhousedao/reactor 5.0.0-staging.12 → 5.0.0-staging.14

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 (131) hide show
  1. package/dist/src/client/reactor-client.d.ts +103 -0
  2. package/dist/src/client/reactor-client.d.ts.map +1 -0
  3. package/dist/src/client/reactor-client.js +182 -0
  4. package/dist/src/client/reactor-client.js.map +1 -0
  5. package/dist/src/client/types.d.ts +213 -0
  6. package/dist/src/client/types.d.ts.map +1 -0
  7. package/dist/src/client/types.js +14 -0
  8. package/dist/src/client/types.js.map +1 -0
  9. package/dist/src/core/builder.d.ts +20 -0
  10. package/dist/src/core/builder.d.ts.map +1 -0
  11. package/dist/src/core/builder.js +47 -0
  12. package/dist/src/core/builder.js.map +1 -0
  13. package/dist/src/{reactor.d.ts → core/reactor.d.ts} +4 -5
  14. package/dist/src/core/reactor.d.ts.map +1 -0
  15. package/dist/src/{reactor.js → core/reactor.js} +37 -6
  16. package/dist/src/core/reactor.js.map +1 -0
  17. package/dist/src/{interfaces/reactor.d.ts → core/types.d.ts} +3 -3
  18. package/dist/src/core/types.d.ts.map +1 -0
  19. package/dist/src/core/types.js +2 -0
  20. package/dist/src/core/types.js.map +1 -0
  21. package/dist/src/{utils.d.ts → core/utils.d.ts} +1 -1
  22. package/dist/src/core/utils.d.ts.map +1 -0
  23. package/dist/src/core/utils.js.map +1 -0
  24. package/dist/src/index.d.ts +9 -2
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +8 -1
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/queue/queue.d.ts.map +1 -1
  29. package/dist/src/queue/queue.js +43 -28
  30. package/dist/src/queue/queue.js.map +1 -1
  31. package/dist/src/shared/awaiter.d.ts +32 -0
  32. package/dist/src/shared/awaiter.d.ts.map +1 -0
  33. package/dist/src/shared/awaiter.js +132 -0
  34. package/dist/src/shared/awaiter.js.map +1 -0
  35. package/dist/src/shared/types.d.ts +3 -0
  36. package/dist/src/shared/types.d.ts.map +1 -1
  37. package/dist/src/shared/types.js.map +1 -1
  38. package/dist/src/signer/passthrough-signer.d.ts +6 -0
  39. package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
  40. package/dist/src/signer/passthrough-signer.js +6 -0
  41. package/dist/src/signer/passthrough-signer.js.map +1 -0
  42. package/dist/src/signer/types.d.ts +15 -0
  43. package/dist/src/signer/types.d.ts.map +1 -0
  44. package/dist/src/signer/types.js +2 -0
  45. package/dist/src/signer/types.js.map +1 -0
  46. package/dist/src/subs/default-error-handler.d.ts +13 -0
  47. package/dist/src/subs/default-error-handler.d.ts.map +1 -0
  48. package/dist/src/subs/default-error-handler.js +27 -0
  49. package/dist/src/subs/default-error-handler.js.map +1 -0
  50. package/dist/src/subs/react-subscription-manager.d.ts +45 -0
  51. package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
  52. package/dist/src/subs/react-subscription-manager.js +185 -0
  53. package/dist/src/subs/react-subscription-manager.js.map +1 -0
  54. package/dist/src/subs/types.d.ts +64 -0
  55. package/dist/src/subs/types.d.ts.map +1 -0
  56. package/dist/src/subs/types.js +2 -0
  57. package/dist/src/subs/types.js.map +1 -0
  58. package/package.json +6 -6
  59. package/dist/bench/event-bus.bench.d.ts +0 -2
  60. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  61. package/dist/bench/event-bus.bench.js +0 -228
  62. package/dist/bench/event-bus.bench.js.map +0 -1
  63. package/dist/bench/queue-only.bench.d.ts +0 -2
  64. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  65. package/dist/bench/queue-only.bench.js +0 -46
  66. package/dist/bench/queue-only.bench.js.map +0 -1
  67. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  68. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  69. package/dist/bench/reactor-throughput.bench.js +0 -144
  70. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  71. package/dist/src/interfaces/reactor.d.ts.map +0 -1
  72. package/dist/src/interfaces/reactor.js +0 -2
  73. package/dist/src/interfaces/reactor.js.map +0 -1
  74. package/dist/src/reactor.d.ts.map +0 -1
  75. package/dist/src/reactor.js.map +0 -1
  76. package/dist/src/utils.d.ts.map +0 -1
  77. package/dist/src/utils.js.map +0 -1
  78. package/dist/test/event-bus.test.d.ts +0 -2
  79. package/dist/test/event-bus.test.d.ts.map +0 -1
  80. package/dist/test/event-bus.test.js +0 -541
  81. package/dist/test/event-bus.test.js.map +0 -1
  82. package/dist/test/executor/executor-integration.test.d.ts +0 -2
  83. package/dist/test/executor/executor-integration.test.d.ts.map +0 -1
  84. package/dist/test/executor/executor-integration.test.js +0 -287
  85. package/dist/test/executor/executor-integration.test.js.map +0 -1
  86. package/dist/test/executor/job-execution-handle.test.d.ts +0 -2
  87. package/dist/test/executor/job-execution-handle.test.d.ts.map +0 -1
  88. package/dist/test/executor/job-execution-handle.test.js +0 -272
  89. package/dist/test/executor/job-execution-handle.test.js.map +0 -1
  90. package/dist/test/executor/simple-job-executor-manager.test.d.ts +0 -2
  91. package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +0 -1
  92. package/dist/test/executor/simple-job-executor-manager.test.js +0 -132
  93. package/dist/test/executor/simple-job-executor-manager.test.js.map +0 -1
  94. package/dist/test/executor/simple-job-executor.test.d.ts +0 -2
  95. package/dist/test/executor/simple-job-executor.test.d.ts.map +0 -1
  96. package/dist/test/executor/simple-job-executor.test.js +0 -139
  97. package/dist/test/executor/simple-job-executor.test.js.map +0 -1
  98. package/dist/test/factories.d.ts +0 -123
  99. package/dist/test/factories.d.ts.map +0 -1
  100. package/dist/test/factories.js +0 -319
  101. package/dist/test/factories.js.map +0 -1
  102. package/dist/test/integration/document-drive-integration.test.d.ts +0 -2
  103. package/dist/test/integration/document-drive-integration.test.d.ts.map +0 -1
  104. package/dist/test/integration/document-drive-integration.test.js +0 -1102
  105. package/dist/test/integration/document-drive-integration.test.js.map +0 -1
  106. package/dist/test/integration/reactor-read.test.d.ts +0 -2
  107. package/dist/test/integration/reactor-read.test.d.ts.map +0 -1
  108. package/dist/test/integration/reactor-read.test.js +0 -291
  109. package/dist/test/integration/reactor-read.test.js.map +0 -1
  110. package/dist/test/queue/queue-integration.test.d.ts +0 -2
  111. package/dist/test/queue/queue-integration.test.d.ts.map +0 -1
  112. package/dist/test/queue/queue-integration.test.js +0 -322
  113. package/dist/test/queue/queue-integration.test.js.map +0 -1
  114. package/dist/test/queue/queue.test.d.ts +0 -2
  115. package/dist/test/queue/queue.test.d.ts.map +0 -1
  116. package/dist/test/queue/queue.test.js +0 -770
  117. package/dist/test/queue/queue.test.js.map +0 -1
  118. package/dist/test/registry/registry.test.d.ts +0 -2
  119. package/dist/test/registry/registry.test.d.ts.map +0 -1
  120. package/dist/test/registry/registry.test.js +0 -182
  121. package/dist/test/registry/registry.test.js.map +0 -1
  122. package/dist/test/utils.test.d.ts +0 -2
  123. package/dist/test/utils.test.d.ts.map +0 -1
  124. package/dist/test/utils.test.js +0 -66
  125. package/dist/test/utils.test.js.map +0 -1
  126. package/dist/tsconfig.tsbuildinfo +0 -1
  127. package/dist/vitest.config.d.ts +0 -3
  128. package/dist/vitest.config.d.ts.map +0 -1
  129. package/dist/vitest.config.js +0 -11
  130. package/dist/vitest.config.js.map +0 -1
  131. /package/dist/src/{utils.js → core/utils.js} +0 -0
@@ -0,0 +1,132 @@
1
+ import { JobStatus } from "./types.js";
2
+ /**
3
+ * Default implementation of IJobAwaiter that polls for job status.
4
+ * Uses a single interval timer to check all pending jobs.
5
+ */
6
+ export class JobAwaiter {
7
+ getJobStatus;
8
+ pollIntervalMs;
9
+ // Map from job ID to list of waiters (multiple waiters can wait for same job)
10
+ pendingJobs = new Map();
11
+ intervalId = null;
12
+ constructor(getJobStatus, pollIntervalMs = 10) {
13
+ this.getJobStatus = getJobStatus;
14
+ this.pollIntervalMs = pollIntervalMs;
15
+ //
16
+ }
17
+ shutdown() {
18
+ if (this.intervalId !== null) {
19
+ clearInterval(this.intervalId);
20
+ this.intervalId = null;
21
+ }
22
+ // Reject all pending jobs
23
+ for (const [, waiters] of this.pendingJobs) {
24
+ for (const waiter of waiters) {
25
+ waiter.reject(new Error("JobAwaiter destroyed"));
26
+ }
27
+ }
28
+ this.pendingJobs.clear();
29
+ }
30
+ async waitForJob(jobId, signal) {
31
+ // Check if signal is already aborted
32
+ if (signal?.aborted) {
33
+ throw new Error("Operation aborted");
34
+ }
35
+ // Create promise for this job
36
+ const promise = new Promise((resolve, reject) => {
37
+ const waiter = { resolve, reject, signal };
38
+ // Add to the list of waiters for this job
39
+ const existingWaiters = this.pendingJobs.get(jobId) || [];
40
+ existingWaiters.push(waiter);
41
+ this.pendingJobs.set(jobId, existingWaiters);
42
+ // If signal is provided, handle abort
43
+ if (signal) {
44
+ const abortHandler = () => {
45
+ // Find and remove this specific waiter
46
+ const waiters = this.pendingJobs.get(jobId);
47
+ if (waiters) {
48
+ const index = waiters.indexOf(waiter);
49
+ if (index !== -1) {
50
+ waiters.splice(index, 1);
51
+ if (waiters.length === 0) {
52
+ this.pendingJobs.delete(jobId);
53
+ }
54
+ waiter.reject(new Error("Operation aborted"));
55
+ this.stopIntervalIfNoJobs();
56
+ }
57
+ }
58
+ };
59
+ signal.addEventListener("abort", abortHandler, { once: true });
60
+ }
61
+ });
62
+ // Start interval if not already running
63
+ this.startInterval();
64
+ return promise;
65
+ }
66
+ startInterval() {
67
+ if (this.intervalId === null && this.pendingJobs.size > 0) {
68
+ this.intervalId = setInterval(async () => {
69
+ await this.checkPendingJobs();
70
+ }, this.pollIntervalMs);
71
+ // Check immediately as well - schedule it for next tick
72
+ setTimeout(() => this.checkPendingJobs(), 0);
73
+ }
74
+ }
75
+ stopIntervalIfNoJobs() {
76
+ if (this.pendingJobs.size === 0 && this.intervalId !== null) {
77
+ clearInterval(this.intervalId);
78
+ this.intervalId = null;
79
+ }
80
+ }
81
+ async checkPendingJobs() {
82
+ // Get unique job IDs to check
83
+ const jobIds = Array.from(this.pendingJobs.keys());
84
+ // Check each job
85
+ const jobChecks = jobIds.map(async (jobId) => {
86
+ const waiters = this.pendingJobs.get(jobId);
87
+ if (!waiters || waiters.length === 0) {
88
+ return;
89
+ }
90
+ try {
91
+ // Filter out aborted waiters
92
+ const activeWaiters = waiters.filter((w) => !w.signal?.aborted);
93
+ if (activeWaiters.length === 0) {
94
+ // All waiters were aborted
95
+ this.pendingJobs.delete(jobId);
96
+ return;
97
+ }
98
+ // Use the first active waiter's signal for the status check
99
+ const jobInfo = await this.getJobStatus(jobId, activeWaiters[0].signal);
100
+ // Check if job is complete
101
+ if (jobInfo.status === JobStatus.COMPLETED ||
102
+ jobInfo.status === JobStatus.FAILED) {
103
+ // Remove from pending
104
+ this.pendingJobs.delete(jobId);
105
+ // Resolve all active waiters
106
+ for (const waiter of activeWaiters) {
107
+ waiter.resolve(jobInfo);
108
+ }
109
+ // Reject aborted waiters
110
+ for (const waiter of waiters) {
111
+ if (waiter.signal?.aborted) {
112
+ waiter.reject(new Error("Operation aborted"));
113
+ }
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ // Remove from pending
119
+ this.pendingJobs.delete(jobId);
120
+ // Reject all waiters with the error
121
+ for (const waiter of waiters) {
122
+ waiter.reject(error instanceof Error ? error : new Error(String(error)));
123
+ }
124
+ }
125
+ });
126
+ // Wait for all checks to complete
127
+ await Promise.all(jobChecks);
128
+ // Stop interval if no more jobs
129
+ this.stopIntervalIfNoJobs();
130
+ }
131
+ }
132
+ //# sourceMappingURL=awaiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiter.js","sourceRoot":"","sources":["../../../src/shared/awaiter.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,10 @@ export declare enum RelationshipChangeType {
33
33
  export type JobInfo = {
34
34
  id: string;
35
35
  status: JobStatus;
36
+ createdAtUtcIso: string;
37
+ completedAtUtcIso?: string;
36
38
  error?: string;
39
+ result?: any;
37
40
  };
38
41
  /**
39
42
  * Job execution statuses
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;;OAQG;IACH,IAAI,UAAU,IAAI,OAAO,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAChC,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS;IACnB,wCAAwC;IACxC,OAAO,YAAY;IACnB,sCAAsC;IACtC,OAAO,YAAY;IACnB,iCAAiC;IACjC,SAAS,cAAc;IACvB,kCAAkC;IAClC,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IAEvB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;;OAQG;IACH,IAAI,UAAU,IAAI,OAAO,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAChC,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS;IACnB,wCAAwC;IACxC,OAAO,YAAY;IACnB,sCAAsC;IACtC,OAAO,YAAY;IACnB,iCAAiC;IACjC,SAAS,cAAc;IACvB,kCAAkC;IAClC,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IAEvB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;IACf,6CAAmB,CAAA;AACrB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAWD;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,wCAAwC;IACxC,gCAAmB,CAAA;IACnB,sCAAsC;IACtC,gCAAmB,CAAA;IACnB,iCAAiC;IACjC,oCAAuB,CAAA;IACvB,kCAAkC;IAClC,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;IACf,6CAAmB,CAAA;AACrB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAcD;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,wCAAwC;IACxC,gCAAmB,CAAA;IACnB,sCAAsC;IACtC,gCAAmB,CAAA;IACnB,iCAAiC;IACjC,oCAAuB,CAAA;IACvB,kCAAkC;IAClC,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB"}
@@ -0,0 +1,6 @@
1
+ import type { Signature } from "document-model";
2
+ import type { ISigner } from "./types.js";
3
+ export declare class PassthroughSigner implements ISigner {
4
+ sign(): Promise<Signature>;
5
+ }
6
+ //# sourceMappingURL=passthrough-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passthrough-signer.d.ts","sourceRoot":"","sources":["../../../src/signer/passthrough-signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,iBAAkB,YAAW,OAAO;IAC/C,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAG3B"}
@@ -0,0 +1,6 @@
1
+ export class PassthroughSigner {
2
+ sign() {
3
+ return Promise.resolve(["", "", "", "", ""]);
4
+ }
5
+ }
6
+ //# sourceMappingURL=passthrough-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passthrough-signer.js","sourceRoot":"","sources":["../../../src/signer/passthrough-signer.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,iBAAiB;IAC5B,IAAI;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { Action, Signature } from "document-model";
2
+ /**
3
+ * Interface for signing actions before submission to the reactor.
4
+ */
5
+ export interface ISigner {
6
+ /**
7
+ * Signs an action
8
+ *
9
+ * @param action - The action to sign
10
+ * @param abortSignal - Optional abort signal to cancel the signing
11
+ * @returns The signature
12
+ */
13
+ sign(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
14
+ }
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACrE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { ISubscriptionErrorHandler, SubscriptionErrorContext } from "./types.js";
2
+ /**
3
+ * Default error handler that re-throws subscription errors.
4
+ * This ensures that errors are not silently swallowed.
5
+ */
6
+ export declare class DefaultSubscriptionErrorHandler implements ISubscriptionErrorHandler {
7
+ handleError(error: unknown, context: SubscriptionErrorContext): void;
8
+ }
9
+ /**
10
+ * Creates a default subscription error handler instance
11
+ */
12
+ export declare function createDefaultSubscriptionErrorHandler(): ISubscriptionErrorHandler;
13
+ //# sourceMappingURL=default-error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-error-handler.d.ts","sourceRoot":"","sources":["../../../src/subs/default-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,+BACX,YAAW,yBAAyB;IAEpC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAcrE;AAED;;GAEG;AACH,wBAAgB,qCAAqC,IAAI,yBAAyB,CAEjF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Default error handler that re-throws subscription errors.
3
+ * This ensures that errors are not silently swallowed.
4
+ */
5
+ export class DefaultSubscriptionErrorHandler {
6
+ handleError(error, context) {
7
+ const errorMessage = `Subscription error in ${context.eventType} (${context.subscriptionId})`;
8
+ if (error instanceof Error) {
9
+ // Preserve the original error with additional context
10
+ const enhancedError = new Error(`${errorMessage}: ${error.message}`);
11
+ enhancedError.cause = error;
12
+ enhancedError.stack = error.stack;
13
+ throw enhancedError;
14
+ }
15
+ else {
16
+ // Handle non-Error objects
17
+ throw new Error(`${errorMessage}: ${String(error)}`);
18
+ }
19
+ }
20
+ }
21
+ /**
22
+ * Creates a default subscription error handler instance
23
+ */
24
+ export function createDefaultSubscriptionErrorHandler() {
25
+ return new DefaultSubscriptionErrorHandler();
26
+ }
27
+ //# sourceMappingURL=default-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-error-handler.js","sourceRoot":"","sources":["../../../src/subs/default-error-handler.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,OAAO,+BAA+B;IAG1C,WAAW,CAAC,KAAc,EAAE,OAAiC;QAC3D,MAAM,YAAY,GAAG,yBAAyB,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,cAAc,GAAG,CAAC;QAE9F,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,sDAAsD;YACtD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,GAAG,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAClC,MAAM,aAAa,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,IAAI,+BAA+B,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { PHDocument } from "document-model";
2
+ import type { PagedResults, RelationshipChangeType, SearchFilter, ViewFilter } from "../shared/types.js";
3
+ import type { IReactorSubscriptionManager, ISubscriptionErrorHandler } from "./types.js";
4
+ type DocumentCreatedCallback = (result: PagedResults<string>) => void;
5
+ type DocumentDeletedCallback = (documentIds: string[]) => void;
6
+ type DocumentStateUpdatedCallback = (result: PagedResults<PHDocument>) => void;
7
+ type RelationshipChangedCallback = (parentId: string, childId: string, changeType: RelationshipChangeType) => void;
8
+ export declare class ReactorSubscriptionManager implements IReactorSubscriptionManager {
9
+ private createdSubscriptions;
10
+ private deletedSubscriptions;
11
+ private updatedSubscriptions;
12
+ private relationshipSubscriptions;
13
+ private subscriptionCounter;
14
+ private errorHandler;
15
+ constructor(errorHandler: ISubscriptionErrorHandler);
16
+ onDocumentCreated(callback: DocumentCreatedCallback, search?: SearchFilter): () => void;
17
+ onDocumentDeleted(callback: DocumentDeletedCallback, search?: SearchFilter): () => void;
18
+ onDocumentStateUpdated(callback: DocumentStateUpdatedCallback, search?: SearchFilter, view?: ViewFilter): () => void;
19
+ onRelationshipChanged(callback: RelationshipChangedCallback, search?: SearchFilter): () => void;
20
+ /**
21
+ * Notify subscribers about created documents
22
+ */
23
+ notifyDocumentsCreated(documentIds: string[], documentTypes?: Map<string, string>, parentIds?: Map<string, string | null>): void;
24
+ /**
25
+ * Notify subscribers about deleted documents
26
+ */
27
+ notifyDocumentsDeleted(documentIds: string[], documentTypes?: Map<string, string>, parentIds?: Map<string, string | null>): void;
28
+ /**
29
+ * Notify subscribers about updated documents
30
+ */
31
+ notifyDocumentsUpdated(documents: PHDocument[]): void;
32
+ /**
33
+ * Notify subscribers about relationship changes
34
+ */
35
+ notifyRelationshipChanged(parentId: string, childId: string, changeType: RelationshipChangeType, childType?: string): void;
36
+ /**
37
+ * Clear all subscriptions
38
+ */
39
+ clearAll(): void;
40
+ private filterDocumentIds;
41
+ private filterDocuments;
42
+ private matchesRelationshipFilter;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=react-subscription-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-subscription-manager.d.ts","sourceRoot":"","sources":["../../../src/subs/react-subscription-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,KAAK,uBAAuB,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;AACtE,KAAK,uBAAuB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAC/D,KAAK,4BAA4B,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAC/E,KAAK,2BAA2B,GAAG,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,sBAAsB,KAC/B,IAAI,CAAC;AASV,qBAAa,0BAA2B,YAAW,2BAA2B;IAC5E,OAAO,CAAC,oBAAoB,CAGxB;IACJ,OAAO,CAAC,oBAAoB,CAGxB;IACJ,OAAO,CAAC,oBAAoB,CAGxB;IACJ,OAAO,CAAC,yBAAyB,CAG7B;IAEJ,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,YAAY,CAA4B;gBAEpC,YAAY,EAAE,yBAAyB;IAInD,iBAAiB,CACf,QAAQ,EAAE,uBAAuB,EACjC,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI;IASb,iBAAiB,CACf,QAAQ,EAAE,uBAAuB,EACjC,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI;IASb,sBAAsB,CACpB,QAAQ,EAAE,4BAA4B,EACtC,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,IAAI;IASb,qBAAqB,CACnB,QAAQ,EAAE,2BAA2B,EACrC,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI;IASb;;OAEG;IACH,sBAAsB,CACpB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACrC,IAAI;IA+BP;;OAEG;IACH,sBAAsB,CACpB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACrC,IAAI;IAuBP;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI;IA0BrD;;OAEG;IACH,yBAAyB,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAuBP;;OAEG;IACH,QAAQ,IAAI,IAAI;IAOhB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,yBAAyB;CAclC"}
@@ -0,0 +1,185 @@
1
+ export class ReactorSubscriptionManager {
2
+ createdSubscriptions = new Map();
3
+ deletedSubscriptions = new Map();
4
+ updatedSubscriptions = new Map();
5
+ relationshipSubscriptions = new Map();
6
+ subscriptionCounter = 0;
7
+ errorHandler;
8
+ constructor(errorHandler) {
9
+ this.errorHandler = errorHandler;
10
+ }
11
+ onDocumentCreated(callback, search) {
12
+ const id = `created-${++this.subscriptionCounter}`;
13
+ this.createdSubscriptions.set(id, { id, callback, search });
14
+ return () => {
15
+ this.createdSubscriptions.delete(id);
16
+ };
17
+ }
18
+ onDocumentDeleted(callback, search) {
19
+ const id = `deleted-${++this.subscriptionCounter}`;
20
+ this.deletedSubscriptions.set(id, { id, callback, search });
21
+ return () => {
22
+ this.deletedSubscriptions.delete(id);
23
+ };
24
+ }
25
+ onDocumentStateUpdated(callback, search, view) {
26
+ const id = `updated-${++this.subscriptionCounter}`;
27
+ this.updatedSubscriptions.set(id, { id, callback, search, view });
28
+ return () => {
29
+ this.updatedSubscriptions.delete(id);
30
+ };
31
+ }
32
+ onRelationshipChanged(callback, search) {
33
+ const id = `relationship-${++this.subscriptionCounter}`;
34
+ this.relationshipSubscriptions.set(id, { id, callback, search });
35
+ return () => {
36
+ this.relationshipSubscriptions.delete(id);
37
+ };
38
+ }
39
+ /**
40
+ * Notify subscribers about created documents
41
+ */
42
+ notifyDocumentsCreated(documentIds, documentTypes, parentIds) {
43
+ const result = {
44
+ results: documentIds,
45
+ options: { cursor: "", limit: documentIds.length },
46
+ };
47
+ for (const subscription of this.createdSubscriptions.values()) {
48
+ const filteredIds = this.filterDocumentIds(documentIds, subscription.search, documentTypes, parentIds);
49
+ if (filteredIds.length > 0) {
50
+ try {
51
+ subscription.callback({
52
+ ...result,
53
+ results: filteredIds,
54
+ });
55
+ }
56
+ catch (error) {
57
+ this.errorHandler.handleError(error, {
58
+ eventType: "created",
59
+ subscriptionId: subscription.id,
60
+ eventData: filteredIds,
61
+ });
62
+ }
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Notify subscribers about deleted documents
68
+ */
69
+ notifyDocumentsDeleted(documentIds, documentTypes, parentIds) {
70
+ for (const subscription of this.deletedSubscriptions.values()) {
71
+ const filteredIds = this.filterDocumentIds(documentIds, subscription.search, documentTypes, parentIds);
72
+ if (filteredIds.length > 0) {
73
+ try {
74
+ subscription.callback(filteredIds);
75
+ }
76
+ catch (error) {
77
+ this.errorHandler.handleError(error, {
78
+ eventType: "deleted",
79
+ subscriptionId: subscription.id,
80
+ eventData: filteredIds,
81
+ });
82
+ }
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Notify subscribers about updated documents
88
+ */
89
+ notifyDocumentsUpdated(documents) {
90
+ const result = {
91
+ results: documents,
92
+ options: { cursor: "", limit: documents.length },
93
+ };
94
+ for (const subscription of this.updatedSubscriptions.values()) {
95
+ const filteredDocs = this.filterDocuments(documents, subscription.search);
96
+ if (filteredDocs.length > 0) {
97
+ try {
98
+ subscription.callback({
99
+ ...result,
100
+ results: filteredDocs,
101
+ });
102
+ }
103
+ catch (error) {
104
+ this.errorHandler.handleError(error, {
105
+ eventType: "updated",
106
+ subscriptionId: subscription.id,
107
+ eventData: filteredDocs,
108
+ });
109
+ }
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Notify subscribers about relationship changes
115
+ */
116
+ notifyRelationshipChanged(parentId, childId, changeType, childType) {
117
+ for (const subscription of this.relationshipSubscriptions.values()) {
118
+ if (this.matchesRelationshipFilter(parentId, childId, childType, subscription.search)) {
119
+ try {
120
+ subscription.callback(parentId, childId, changeType);
121
+ }
122
+ catch (error) {
123
+ this.errorHandler.handleError(error, {
124
+ eventType: "relationshipChanged",
125
+ subscriptionId: subscription.id,
126
+ eventData: { parentId, childId, changeType },
127
+ });
128
+ }
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * Clear all subscriptions
134
+ */
135
+ clearAll() {
136
+ this.createdSubscriptions.clear();
137
+ this.deletedSubscriptions.clear();
138
+ this.updatedSubscriptions.clear();
139
+ this.relationshipSubscriptions.clear();
140
+ }
141
+ filterDocumentIds(documentIds, search, documentTypes, parentIds) {
142
+ if (!search)
143
+ return documentIds;
144
+ return documentIds.filter((id) => {
145
+ if (search.ids && !search.ids.includes(id))
146
+ return false;
147
+ if (search.type && documentTypes) {
148
+ const docType = documentTypes.get(id);
149
+ if (docType !== search.type)
150
+ return false;
151
+ }
152
+ if (search.parentId && parentIds) {
153
+ const parentId = parentIds.get(id);
154
+ if (parentId !== search.parentId)
155
+ return false;
156
+ }
157
+ return true;
158
+ });
159
+ }
160
+ filterDocuments(documents, search) {
161
+ if (!search)
162
+ return documents;
163
+ return documents.filter((doc) => {
164
+ if (search.ids && !search.ids.includes(doc.header.id))
165
+ return false;
166
+ if (search.type && doc.header.documentType !== search.type)
167
+ return false;
168
+ if (search.slugs && !search.slugs.includes(doc.header.slug))
169
+ return false;
170
+ return true;
171
+ });
172
+ }
173
+ matchesRelationshipFilter(parentId, childId, childType, search) {
174
+ if (!search)
175
+ return true;
176
+ if (search.parentId && parentId !== search.parentId)
177
+ return false;
178
+ if (search.ids && !search.ids.includes(childId))
179
+ return false;
180
+ if (search.type && childType && childType !== search.type)
181
+ return false;
182
+ return true;
183
+ }
184
+ }
185
+ //# sourceMappingURL=react-subscription-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-subscription-manager.js","sourceRoot":"","sources":["../../../src/subs/react-subscription-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { PHDocument } from "document-model";
2
+ import type { PagedResults, RelationshipChangeType, SearchFilter, ViewFilter } from "../shared/types.js";
3
+ /**
4
+ * Error handler for subscription callback errors
5
+ */
6
+ export interface ISubscriptionErrorHandler {
7
+ /**
8
+ * Called when a subscription callback throws an error
9
+ * @param error - The error that was thrown
10
+ * @param context - Context about which subscription failed
11
+ */
12
+ handleError(error: unknown, context: SubscriptionErrorContext): void;
13
+ }
14
+ /**
15
+ * Context information about a subscription error
16
+ */
17
+ export interface SubscriptionErrorContext {
18
+ /** The type of event that was being processed */
19
+ eventType: "created" | "deleted" | "updated" | "relationshipChanged";
20
+ /** The subscription ID that failed */
21
+ subscriptionId: string;
22
+ /** Optional additional data about the event */
23
+ eventData?: unknown;
24
+ }
25
+ /**
26
+ * Interface for subscribing to document events in the reactor.
27
+ */
28
+ export interface IReactorSubscriptionManager {
29
+ /**
30
+ * Subscribes to document creation events
31
+ *
32
+ * @param callback - Function called when documents are created
33
+ * @param search - Optional search filter to limit which documents trigger events
34
+ * @param view - Optional filter containing branch and scopes information
35
+ * @returns A function that unsubscribes from the events
36
+ */
37
+ onDocumentCreated(callback: (result: PagedResults<string>) => void, search?: SearchFilter): () => void;
38
+ /**
39
+ * Subscribes to document deletion events
40
+ *
41
+ * @param callback - Function called when documents are deleted
42
+ * @param search - Optional search filter to limit which documents trigger events
43
+ * @returns A function that unsubscribes from the events
44
+ */
45
+ onDocumentDeleted(callback: (documentIds: string[]) => void, search?: SearchFilter): () => void;
46
+ /**
47
+ * Subscribes to document state updates
48
+ *
49
+ * @param callback - Function called when documents are updated
50
+ * @param search - Optional search filter to limit which documents trigger events
51
+ * @param view - Optional filter containing branch and scopes information
52
+ * @returns A function that unsubscribes from the events
53
+ */
54
+ onDocumentStateUpdated(callback: (result: PagedResults<PHDocument>) => void, search?: SearchFilter, view?: ViewFilter): () => void;
55
+ /**
56
+ * Subscribes to parent-child relationship change events
57
+ *
58
+ * @param callback - Function called when parent-child relationships change
59
+ * @param search - Optional search filter to limit which documents trigger events
60
+ * @returns A function that unsubscribes from the events
61
+ */
62
+ onRelationshipChanged(callback: (parentId: string, childId: string, changeType: RelationshipChangeType) => void, search?: SearchFilter): () => void;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/subs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACtE;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,qBAAqB,CAAC;IACrE,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;OAOG;IACH,iBAAiB,CACf,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,EAChD,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;IAEd;;;;;;OAMG;IACH,iBAAiB,CACf,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,EACzC,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;IAEd;;;;;;;OAOG;IACH,sBAAsB,CACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EACpD,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,IAAI,CAAC;IAEd;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,sBAAsB,KAC/B,IAAI,EACT,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,IAAI,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/subs/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "5.0.0-staging.12",
3
+ "version": "5.0.0-staging.14",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
7
7
  "directory": "packages/reactor"
8
8
  },
9
9
  "type": "module",
10
- "types": "./dist/index.d.ts",
10
+ "types": "./dist/src/index.d.ts",
11
11
  "exports": {
12
- ".": "./dist/index.js"
12
+ ".": "./dist/src/index.js"
13
13
  },
14
14
  "imports": {
15
15
  "#*": "./dist/src/*"
16
16
  },
17
17
  "files": [
18
- "./dist"
18
+ "./dist/src"
19
19
  ],
20
20
  "publishConfig": {
21
21
  "access": "public"
@@ -25,8 +25,8 @@
25
25
  "license": "AGPL-3.0-only",
26
26
  "dependencies": {
27
27
  "uuid": "^11.0.5",
28
- "document-drive": "5.0.0-staging.12",
29
- "document-model": "5.0.0-staging.12"
28
+ "document-drive": "5.0.0-staging.14",
29
+ "document-model": "5.0.0-staging.14"
30
30
  },
31
31
  "devDependencies": {
32
32
  "typescript": "^5.7.3",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=event-bus.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.bench.d.ts","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":""}