@powerhousedao/reactor 6.0.0-dev.4 → 6.0.0-dev.40

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 (227) hide show
  1. package/dist/src/cache/collection-membership-cache.d.ts +13 -0
  2. package/dist/src/cache/collection-membership-cache.d.ts.map +1 -0
  3. package/dist/src/cache/collection-membership-cache.js +33 -0
  4. package/dist/src/cache/collection-membership-cache.js.map +1 -0
  5. package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
  6. package/dist/src/cache/document-meta-cache.js +4 -4
  7. package/dist/src/cache/document-meta-cache.js.map +1 -1
  8. package/dist/src/cache/kysely-operation-index.d.ts +5 -1
  9. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  10. package/dist/src/cache/kysely-operation-index.js +96 -6
  11. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  12. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  13. package/dist/src/cache/kysely-write-cache.js +11 -11
  14. package/dist/src/cache/kysely-write-cache.js.map +1 -1
  15. package/dist/src/cache/operation-index-types.d.ts +13 -1
  16. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  17. package/dist/src/cache/operation-index-types.js.map +1 -1
  18. package/dist/src/client/reactor-client.d.ts +13 -10
  19. package/dist/src/client/reactor-client.d.ts.map +1 -1
  20. package/dist/src/client/reactor-client.js +133 -42
  21. package/dist/src/client/reactor-client.js.map +1 -1
  22. package/dist/src/client/types.d.ts +25 -6
  23. package/dist/src/client/types.d.ts.map +1 -1
  24. package/dist/src/client/types.js.map +1 -1
  25. package/dist/src/core/reactor-builder.d.ts +11 -7
  26. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  27. package/dist/src/core/reactor-builder.js +61 -22
  28. package/dist/src/core/reactor-builder.js.map +1 -1
  29. package/dist/src/core/reactor-client-builder.d.ts +5 -4
  30. package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
  31. package/dist/src/core/reactor-client-builder.js +14 -5
  32. package/dist/src/core/reactor-client-builder.js.map +1 -1
  33. package/dist/src/core/reactor.d.ts +20 -80
  34. package/dist/src/core/reactor.d.ts.map +1 -1
  35. package/dist/src/core/reactor.js +234 -575
  36. package/dist/src/core/reactor.js.map +1 -1
  37. package/dist/src/core/types.d.ts +63 -28
  38. package/dist/src/core/types.d.ts.map +1 -1
  39. package/dist/src/core/utils.d.ts +37 -2
  40. package/dist/src/core/utils.d.ts.map +1 -1
  41. package/dist/src/core/utils.js +57 -8
  42. package/dist/src/core/utils.js.map +1 -1
  43. package/dist/src/events/types.d.ts +35 -10
  44. package/dist/src/events/types.d.ts.map +1 -1
  45. package/dist/src/events/types.js +7 -5
  46. package/dist/src/events/types.js.map +1 -1
  47. package/dist/src/executor/document-action-handler.d.ts +37 -0
  48. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  49. package/dist/src/executor/document-action-handler.js +349 -0
  50. package/dist/src/executor/document-action-handler.js.map +1 -0
  51. package/dist/src/executor/signature-verifier.d.ts +9 -0
  52. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  53. package/dist/src/executor/signature-verifier.js +70 -0
  54. package/dist/src/executor/signature-verifier.js.map +1 -0
  55. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  56. package/dist/src/executor/simple-job-executor-manager.js +20 -10
  57. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  58. package/dist/src/executor/simple-job-executor.d.ts +6 -46
  59. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  60. package/dist/src/executor/simple-job-executor.js +64 -565
  61. package/dist/src/executor/simple-job-executor.js.map +1 -1
  62. package/dist/src/executor/types.d.ts +0 -2
  63. package/dist/src/executor/types.d.ts.map +1 -1
  64. package/dist/src/executor/types.js.map +1 -1
  65. package/dist/src/executor/util.d.ts +11 -1
  66. package/dist/src/executor/util.d.ts.map +1 -1
  67. package/dist/src/executor/util.js +47 -1
  68. package/dist/src/executor/util.js.map +1 -1
  69. package/dist/src/index.d.ts +10 -7
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +6 -4
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
  74. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  75. package/dist/src/job-tracker/in-memory-job-tracker.js +20 -18
  76. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
  77. package/dist/src/job-tracker/interfaces.d.ts +3 -1
  78. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  79. package/dist/src/logging/console.d.ts +1 -22
  80. package/dist/src/logging/console.d.ts.map +1 -1
  81. package/dist/src/logging/console.js +1 -107
  82. package/dist/src/logging/console.js.map +1 -1
  83. package/dist/src/logging/types.d.ts +1 -11
  84. package/dist/src/logging/types.d.ts.map +1 -1
  85. package/dist/src/processors/index.d.ts.map +1 -1
  86. package/dist/src/processors/relational/relational-db-processor.d.ts +47 -0
  87. package/dist/src/processors/relational/relational-db-processor.d.ts.map +1 -0
  88. package/dist/src/processors/relational/relational-db-processor.js +45 -0
  89. package/dist/src/processors/relational/relational-db-processor.js.map +1 -0
  90. package/dist/src/processors/relational/types.d.ts +27 -0
  91. package/dist/src/processors/relational/types.d.ts.map +1 -0
  92. package/dist/src/processors/relational/types.js +2 -0
  93. package/dist/src/processors/relational/types.js.map +1 -0
  94. package/dist/src/processors/relational/utils.d.ts +29 -0
  95. package/dist/src/processors/relational/utils.d.ts.map +1 -0
  96. package/dist/src/processors/relational/utils.js +67 -0
  97. package/dist/src/processors/relational/utils.js.map +1 -0
  98. package/dist/src/processors/types.d.ts +10 -2
  99. package/dist/src/processors/types.d.ts.map +1 -1
  100. package/dist/src/processors/utils.d.ts.map +1 -1
  101. package/dist/src/processors/utils.js +2 -1
  102. package/dist/src/processors/utils.js.map +1 -1
  103. package/dist/src/queue/queue.d.ts +25 -0
  104. package/dist/src/queue/queue.d.ts.map +1 -1
  105. package/dist/src/queue/queue.js +56 -0
  106. package/dist/src/queue/queue.js.map +1 -1
  107. package/dist/src/queue/types.d.ts +3 -3
  108. package/dist/src/queue/types.d.ts.map +1 -1
  109. package/dist/src/read-models/base-read-model.js +4 -4
  110. package/dist/src/read-models/base-read-model.js.map +1 -1
  111. package/dist/src/read-models/coordinator.d.ts +2 -2
  112. package/dist/src/read-models/coordinator.d.ts.map +1 -1
  113. package/dist/src/read-models/coordinator.js +8 -8
  114. package/dist/src/read-models/coordinator.js.map +1 -1
  115. package/dist/src/read-models/document-view.d.ts +5 -2
  116. package/dist/src/read-models/document-view.d.ts.map +1 -1
  117. package/dist/src/read-models/document-view.js +130 -48
  118. package/dist/src/read-models/document-view.js.map +1 -1
  119. package/dist/src/shared/awaiter.d.ts +2 -2
  120. package/dist/src/shared/awaiter.d.ts.map +1 -1
  121. package/dist/src/shared/awaiter.js +11 -11
  122. package/dist/src/shared/awaiter.js.map +1 -1
  123. package/dist/src/shared/collect-all-pages.d.ts +7 -0
  124. package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
  125. package/dist/src/shared/collect-all-pages.js +17 -0
  126. package/dist/src/shared/collect-all-pages.js.map +1 -0
  127. package/dist/src/shared/drive-url.d.ts +15 -0
  128. package/dist/src/shared/drive-url.d.ts.map +1 -0
  129. package/dist/src/shared/drive-url.js +17 -0
  130. package/dist/src/shared/drive-url.js.map +1 -0
  131. package/dist/src/shared/factories.d.ts +6 -2
  132. package/dist/src/shared/factories.d.ts.map +1 -1
  133. package/dist/src/shared/factories.js +10 -2
  134. package/dist/src/shared/factories.js.map +1 -1
  135. package/dist/src/shared/types.d.ts +32 -6
  136. package/dist/src/shared/types.d.ts.map +1 -1
  137. package/dist/src/shared/types.js +4 -4
  138. package/dist/src/shared/types.js.map +1 -1
  139. package/dist/src/signer/passthrough-signer.d.ts +1 -1
  140. package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
  141. package/dist/src/signer/passthrough-signer.js +1 -3
  142. package/dist/src/signer/passthrough-signer.js.map +1 -1
  143. package/dist/src/storage/interfaces.d.ts +52 -94
  144. package/dist/src/storage/interfaces.d.ts.map +1 -1
  145. package/dist/src/storage/interfaces.js.map +1 -1
  146. package/dist/src/storage/kysely/document-indexer.d.ts +6 -6
  147. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  148. package/dist/src/storage/kysely/document-indexer.js +123 -52
  149. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  150. package/dist/src/storage/kysely/store.d.ts +4 -3
  151. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  152. package/dist/src/storage/kysely/store.js +52 -21
  153. package/dist/src/storage/kysely/store.js.map +1 -1
  154. package/dist/src/storage/kysely/sync-remote-storage.js +1 -1
  155. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
  156. package/dist/src/subs/subscription-notification-read-model.d.ts +1 -1
  157. package/dist/src/subs/subscription-notification-read-model.js +1 -1
  158. package/dist/src/sync/buffered-mailbox.d.ts +30 -0
  159. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
  160. package/dist/src/sync/buffered-mailbox.js +136 -0
  161. package/dist/src/sync/buffered-mailbox.js.map +1 -0
  162. package/dist/src/sync/channels/composite-channel-factory.d.ts +9 -3
  163. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +1 -1
  164. package/dist/src/sync/channels/composite-channel-factory.js +16 -12
  165. package/dist/src/sync/channels/composite-channel-factory.js.map +1 -1
  166. package/dist/src/sync/channels/gql-channel-factory.d.ts +9 -3
  167. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -1
  168. package/dist/src/sync/channels/gql-channel-factory.js +14 -10
  169. package/dist/src/sync/channels/gql-channel-factory.js.map +1 -1
  170. package/dist/src/sync/channels/gql-channel.d.ts +22 -18
  171. package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
  172. package/dist/src/sync/channels/gql-channel.js +128 -64
  173. package/dist/src/sync/channels/gql-channel.js.map +1 -1
  174. package/dist/src/sync/channels/index.d.ts +2 -0
  175. package/dist/src/sync/channels/index.d.ts.map +1 -1
  176. package/dist/src/sync/channels/index.js +2 -0
  177. package/dist/src/sync/channels/index.js.map +1 -1
  178. package/dist/src/sync/channels/interval-poll-timer.d.ts +24 -0
  179. package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
  180. package/dist/src/sync/channels/interval-poll-timer.js +69 -0
  181. package/dist/src/sync/channels/interval-poll-timer.js.map +1 -0
  182. package/dist/src/sync/channels/poll-timer.d.ts +14 -0
  183. package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
  184. package/dist/src/sync/channels/poll-timer.js +2 -0
  185. package/dist/src/sync/channels/poll-timer.js.map +1 -0
  186. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  187. package/dist/src/sync/channels/utils.js +2 -2
  188. package/dist/src/sync/channels/utils.js.map +1 -1
  189. package/dist/src/sync/index.d.ts +6 -4
  190. package/dist/src/sync/index.d.ts.map +1 -1
  191. package/dist/src/sync/index.js +4 -3
  192. package/dist/src/sync/index.js.map +1 -1
  193. package/dist/src/sync/interfaces.d.ts +18 -6
  194. package/dist/src/sync/interfaces.d.ts.map +1 -1
  195. package/dist/src/sync/mailbox.d.ts +21 -3
  196. package/dist/src/sync/mailbox.d.ts.map +1 -1
  197. package/dist/src/sync/mailbox.js +55 -2
  198. package/dist/src/sync/mailbox.js.map +1 -1
  199. package/dist/src/sync/sync-awaiter.d.ts +34 -0
  200. package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
  201. package/dist/src/sync/sync-awaiter.js +124 -0
  202. package/dist/src/sync/sync-awaiter.js.map +1 -0
  203. package/dist/src/sync/sync-manager.d.ts +19 -5
  204. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  205. package/dist/src/sync/sync-manager.js +318 -33
  206. package/dist/src/sync/sync-manager.js.map +1 -1
  207. package/dist/src/sync/sync-operation.d.ts +3 -1
  208. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  209. package/dist/src/sync/sync-operation.js +5 -1
  210. package/dist/src/sync/sync-operation.js.map +1 -1
  211. package/dist/src/sync/types.d.ts +73 -1
  212. package/dist/src/sync/types.d.ts.map +1 -1
  213. package/dist/src/sync/types.js +10 -0
  214. package/dist/src/sync/types.js.map +1 -1
  215. package/dist/src/sync/utils.d.ts +11 -0
  216. package/dist/src/sync/utils.d.ts.map +1 -1
  217. package/dist/src/sync/utils.js +17 -0
  218. package/dist/src/sync/utils.js.map +1 -1
  219. package/dist/src/utils/reshuffle.d.ts +15 -5
  220. package/dist/src/utils/reshuffle.d.ts.map +1 -1
  221. package/dist/src/utils/reshuffle.js +29 -6
  222. package/dist/src/utils/reshuffle.js.map +1 -1
  223. package/package.json +8 -10
  224. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  225. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  226. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  227. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
@@ -1,108 +1,2 @@
1
- const tokenSub = /@([a-zA-Z0-9_]+)/g;
2
- const dtf = new Intl.DateTimeFormat();
3
- const formatMessage = (tagString, message, replacements) => {
4
- const meta = {};
5
- const uniqueTokens = [];
6
- let results;
7
- while ((results = tokenSub.exec(message)) !== null) {
8
- const tokenName = results[1];
9
- const index = uniqueTokens.indexOf(tokenName);
10
- if (index === -1) {
11
- uniqueTokens.push(tokenName);
12
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13
- const replacement = replacements[uniqueTokens.length - 1];
14
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
15
- meta[tokenName] = replacement;
16
- }
17
- }
18
- // replace
19
- for (const [key, value] of Object.entries(meta)) {
20
- let stringValue;
21
- if (!value) {
22
- stringValue = "null";
23
- }
24
- else if (typeof value === "string") {
25
- stringValue = value;
26
- }
27
- else if (typeof value === "object") {
28
- stringValue = JSON.stringify(value);
29
- }
30
- else if (typeof value === "function") {
31
- // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
32
- const name = value.name;
33
- stringValue = name ? `${name}()` : "anonymous()";
34
- }
35
- else {
36
- stringValue = String(value);
37
- }
38
- message = message.replaceAll(`@${key}`, stringValue);
39
- }
40
- if (tagString.length > 0) {
41
- message = `${tagString} ${message}`;
42
- }
43
- // timestamp
44
- const now = new Date();
45
- const timestamp = dtf.format(now);
46
- meta["timestamp"] = timestamp;
47
- return [message, meta];
48
- };
49
- const LOG_LEVELS = {
50
- verbose: 0,
51
- debug: 1,
52
- info: 2,
53
- warn: 3,
54
- error: 4,
55
- };
56
- export class ConsoleLogger {
57
- #tags;
58
- #tagString;
59
- #level = LOG_LEVELS.info;
60
- errorHandler;
61
- constructor(tags, handler) {
62
- this.#tags = tags || [];
63
- this.#tagString = this.#tags.map((tag) => `[${tag}]`).join("");
64
- this.errorHandler = handler ?? (() => { });
65
- }
66
- get level() {
67
- return Object.keys(LOG_LEVELS).find((key) => LOG_LEVELS[key] === this.#level);
68
- }
69
- set level(value) {
70
- this.#level = LOG_LEVELS[value];
71
- }
72
- child(tags) {
73
- const logger = new ConsoleLogger([...this.#tags, ...tags], this.errorHandler);
74
- logger.level = this.level;
75
- return logger;
76
- }
77
- verbose(message, ...replacements) {
78
- if (this.#level <= LOG_LEVELS.verbose) {
79
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
80
- console.debug(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
81
- }
82
- }
83
- debug(message, ...replacements) {
84
- if (this.#level <= LOG_LEVELS.debug) {
85
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
86
- console.debug(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
87
- }
88
- }
89
- info(message, ...replacements) {
90
- if (this.#level <= LOG_LEVELS.info) {
91
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
92
- console.info(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
93
- }
94
- }
95
- warn(message, ...replacements) {
96
- if (this.#level <= LOG_LEVELS.warn) {
97
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
98
- console.warn(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
99
- }
100
- }
101
- error(message, ...replacements) {
102
- if (this.#level <= LOG_LEVELS.error) {
103
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
104
- console.error(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
105
- }
106
- }
107
- }
1
+ export { ConsoleLogger } from "document-model/core";
108
2
  //# sourceMappingURL=console.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logging/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logging/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,12 +1,2 @@
1
- export type LoggerErrorHandler = (...data: any[]) => void;
2
- export type ILogger = {
3
- level: "verbose" | "debug" | "info" | "warn" | "error";
4
- verbose: (message: string, ...replacements: any[]) => void;
5
- debug: (message: string, ...replacements: any[]) => void;
6
- info: (message: string, ...replacements: any[]) => void;
7
- warn: (message: string, ...replacements: any[]) => void;
8
- error: (message: string, ...replacements: any[]) => void;
9
- errorHandler: LoggerErrorHandler;
10
- child: (tags: string[]) => ILogger;
11
- };
1
+ export type { ILogger, LoggerErrorHandler } from "document-model/core";
12
2
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEvD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEzD,YAAY,EAAE,kBAAkB,CAAC;IAEjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;CACpC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { IRelationalDb, IRelationalDbProcessor, IRelationalQueryBuilder, OperationWithContext, ProcessorFilter, RelationalDbProcessorClass } from "@powerhousedao/reactor";
2
+ declare const IS_RELATIONAL_DB_PROCESSOR: unique symbol;
3
+ /**
4
+ * Base class for relational db processors that require a relational database storage.
5
+ * This class abstracts database initialization, migration management, and resource cleanup,
6
+ * allowing derived classes to focus on business logic.
7
+ */
8
+ export declare abstract class RelationalDbProcessor<TDatabaseSchema = unknown> implements IRelationalDbProcessor<TDatabaseSchema> {
9
+ protected _namespace: string;
10
+ protected _filter: ProcessorFilter;
11
+ protected relationalDb: IRelationalDb<TDatabaseSchema>;
12
+ constructor(_namespace: string, _filter: ProcessorFilter, relationalDb: IRelationalDb<TDatabaseSchema>);
13
+ static [IS_RELATIONAL_DB_PROCESSOR]: boolean;
14
+ /**
15
+ * Returns the namespace for a given drive id.
16
+ * This method can be overridden by derived classes to provide a custom namespace.
17
+ */
18
+ static getNamespace(driveId: string): string;
19
+ static query<Schema>(this: RelationalDbProcessorClass<Schema>, driveId: string, db: IRelationalDb<any>): IRelationalQueryBuilder<Schema>;
20
+ /**
21
+ * Processes a list of operations with context.
22
+ * Called when operations match this processor's filter.
23
+ */
24
+ abstract onOperations(operations: OperationWithContext[]): Promise<void>;
25
+ /**
26
+ * Returns the filter for the processor.
27
+ * This method can be overridden by derived classes to provide a custom filter.
28
+ */
29
+ get filter(): ProcessorFilter;
30
+ /**
31
+ * Returns the namespace used by the processor.
32
+ */
33
+ get namespace(): string;
34
+ get query(): IRelationalQueryBuilder<TDatabaseSchema>;
35
+ /**
36
+ * Abstract method that derived classes must implement.
37
+ * This method is meant to be called on subclasses to initialize and upgrade the database.
38
+ */
39
+ abstract initAndUpgrade(): Promise<void>;
40
+ /**
41
+ * Called when the processor is disconnected.
42
+ * This method is meant to be overridden by subclasses to clean up resources.
43
+ */
44
+ abstract onDisconnect(): Promise<void>;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=relational-db-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relational-db-processor.d.ts","sourceRoot":"","sources":["../../../../src/processors/relational/relational-db-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAGhC,QAAA,MAAM,0BAA0B,eAA8C,CAAC;AAE/E;;;;GAIG;AACH,8BAAsB,qBAAqB,CAAC,eAAe,GAAG,OAAO,CACnE,YAAW,sBAAsB,CAAC,eAAe,CAAC;IAGhD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,OAAO,EAAE,eAAe;IAClC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;gBAF5C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;IAGxD,MAAM,CAAC,CAAC,0BAA0B,CAAC,UAAQ;IAE3C;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C,MAAM,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,EACxC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,GACrB,uBAAuB,CAAC,MAAM,CAAC;IAIlC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAExE;;;OAGG;IACH,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAEpD;IAED;;;OAGG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CACvC"}
@@ -0,0 +1,45 @@
1
+ import { relationalDbToQueryBuilder } from "./utils.js";
2
+ const IS_RELATIONAL_DB_PROCESSOR = Symbol.for("ph.IS_RELATIONAL_DB_PROCESSOR");
3
+ /**
4
+ * Base class for relational db processors that require a relational database storage.
5
+ * This class abstracts database initialization, migration management, and resource cleanup,
6
+ * allowing derived classes to focus on business logic.
7
+ */
8
+ export class RelationalDbProcessor {
9
+ _namespace;
10
+ _filter;
11
+ relationalDb;
12
+ constructor(_namespace, _filter, relationalDb) {
13
+ this._namespace = _namespace;
14
+ this._filter = _filter;
15
+ this.relationalDb = relationalDb;
16
+ }
17
+ static [IS_RELATIONAL_DB_PROCESSOR] = true;
18
+ /**
19
+ * Returns the namespace for a given drive id.
20
+ * This method can be overridden by derived classes to provide a custom namespace.
21
+ */
22
+ static getNamespace(driveId) {
23
+ return `${this.name}_${driveId.replaceAll("-", "_")}`;
24
+ }
25
+ static query(driveId, db) {
26
+ return db.queryNamespace(this.getNamespace(driveId));
27
+ }
28
+ /**
29
+ * Returns the filter for the processor.
30
+ * This method can be overridden by derived classes to provide a custom filter.
31
+ */
32
+ get filter() {
33
+ return this._filter;
34
+ }
35
+ /**
36
+ * Returns the namespace used by the processor.
37
+ */
38
+ get namespace() {
39
+ return this._namespace;
40
+ }
41
+ get query() {
42
+ return relationalDbToQueryBuilder(this.relationalDb);
43
+ }
44
+ }
45
+ //# sourceMappingURL=relational-db-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relational-db-processor.js","sourceRoot":"","sources":["../../../../src/processors/relational/relational-db-processor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,OAAgB,qBAAqB;IAI7B;IACA;IACA;IAHZ,YACY,UAAkB,EAClB,OAAwB,EACxB,YAA4C;QAF5C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAiB;QACxB,iBAAY,GAAZ,YAAY,CAAgC;IACrD,CAAC;IAEJ,MAAM,CAAC,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,CAEV,OAAe,EACf,EAAsB;QAEtB,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAQD;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { IProcessor, ProcessorFilter } from "@powerhousedao/reactor";
2
+ import type { Kysely, QueryCreator } from "kysely";
3
+ import type { RelationalDbProcessor } from "./relational-db-processor.js";
4
+ export type IRelationalQueryMethods = "selectFrom" | "selectNoFrom" | "with" | "withRecursive";
5
+ export type IRelationalQueryBuilder<Schema = unknown> = Pick<QueryCreator<Schema>, IRelationalQueryMethods> & {
6
+ withSchema: (schema: string) => IRelationalQueryBuilder<Schema>;
7
+ };
8
+ export type IBaseRelationalDb<Schema = unknown> = Kysely<Schema>;
9
+ /**
10
+ * The standardized relational database interface for relational db processors.
11
+ * This abstraction provides type-safe database operations while hiding the underlying
12
+ * database framework implementation details.
13
+ **/
14
+ export type IRelationalDb<Schema = unknown> = IBaseRelationalDb<Schema> & {
15
+ createNamespace<NamespaceSchema>(namespace: string): Promise<IRelationalDb<ExtractProcessorSchemaOrSelf<NamespaceSchema>>>;
16
+ queryNamespace<NamespaceSchema>(namespace: string): IRelationalQueryBuilder<NamespaceSchema>;
17
+ };
18
+ export interface IRelationalDbProcessor<TDatabaseSchema = unknown> extends IProcessor {
19
+ namespace: string;
20
+ query: IRelationalQueryBuilder<TDatabaseSchema>;
21
+ filter: ProcessorFilter;
22
+ initAndUpgrade(): Promise<void>;
23
+ }
24
+ export type ExtractProcessorSchemaOrSelf<TProcessor> = TProcessor extends RelationalDbProcessor<infer TSchema> ? TSchema : TProcessor;
25
+ export type RelationalDbProcessorClass<TSchema> = typeof RelationalDbProcessor<TSchema>;
26
+ export type HashAlgorithms = "fnv1a";
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/processors/relational/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,cAAc,GACd,MAAM,GACN,eAAe,CAAC;AAEpB,MAAM,MAAM,uBAAuB,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAC1D,YAAY,CAAC,MAAM,CAAC,EACpB,uBAAuB,CACxB,GAAG;IACF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjE;;;;IAII;AACJ,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG;IACxE,eAAe,CAAC,eAAe,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzE,cAAc,CAAC,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB,uBAAuB,CAAC,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,sBAAsB,CAAC,eAAe,GAAG,OAAO,CAC/D,SAAQ,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,4BAA4B,CAAC,UAAU,IACjD,UAAU,SAAS,qBAAqB,CAAC,MAAM,OAAO,CAAC,GACnD,OAAO,GACP,UAAU,CAAC;AAEjB,MAAM,MAAM,0BAA0B,CAAC,OAAO,IAC5C,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/processors/relational/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import type { IBaseRelationalDb, IRelationalDb, IRelationalQueryBuilder } from "@powerhousedao/reactor";
2
+ /**
3
+ * Hashes a string to a lowercase base-26 string.
4
+ * @param str The string to hash.
5
+ * @param length The length of the hash. Defaults to 10.
6
+ * @param algorithm The hashing algorithm to use. Defaults to "fnv1a".
7
+ * @returns The hashed string.
8
+ */
9
+ export declare function hashNamespace(str: string, length?: number): string;
10
+ /**
11
+ * Creates a RelationalDb instance with namespace support.
12
+ * @param baseDb The base RelationalDb instance to enhance.
13
+ * @param baseOptions The default options for namespace creation. Hashes namespace by default.
14
+ * @returns The enhanced RelationalDb instance.
15
+ */
16
+ export declare function createRelationalDb<Schema>(baseDb: IBaseRelationalDb<Schema>, baseOptions?: NamespaceOptions): IRelationalDb<Schema>;
17
+ type NamespaceOptions = {
18
+ hashNamespace?: boolean;
19
+ };
20
+ export declare function createNamespacedDb<Schema>(db: IBaseRelationalDb<any>, namespace: string, options?: NamespaceOptions): Promise<IRelationalDb<Schema>>;
21
+ export declare function createNamespacedQueryBuilder<Schema>(db: IBaseRelationalDb<any>, namespace: string, options?: NamespaceOptions): IRelationalQueryBuilder<Schema>;
22
+ /**
23
+ * Returns a query builder for a RelationalDb instance.
24
+ * @param query The RelationalDb instance to convert.
25
+ * @returns The IRelationalQueryBuilder instance.
26
+ */
27
+ export declare function relationalDbToQueryBuilder<TSchema>(query: IBaseRelationalDb<TSchema>): IRelationalQueryBuilder<TSchema>;
28
+ export {};
29
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/processors/relational/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAMhC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAK,UAMrD;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EACvC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACjC,WAAW,CAAC,EAAE,gBAAgB,GAC7B,aAAa,CAAC,MAAM,CAAC,CAwBvB;AAED,KAAK,gBAAgB,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAC7C,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAOhC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EACjD,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,uBAAuB,CAAC,MAAM,CAAC,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAChD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAChC,uBAAuB,CAAC,OAAO,CAAC,CASlC"}
@@ -0,0 +1,67 @@
1
+ import fnv1a from "@sindresorhus/fnv1a";
2
+ const SUPPORTED_SIZES = [32, 64, 128, 256, 512, 1024];
3
+ const LOG2_26 = Math.log2(26); //
4
+ /**
5
+ * Hashes a string to a lowercase base-26 string.
6
+ * @param str The string to hash.
7
+ * @param length The length of the hash. Defaults to 10.
8
+ * @param algorithm The hashing algorithm to use. Defaults to "fnv1a".
9
+ * @returns The hashed string.
10
+ */
11
+ export function hashNamespace(str, length = 10) {
12
+ const requiredBits = Math.ceil(length * LOG2_26);
13
+ const bitSize = SUPPORTED_SIZES.find((size) => size && size >= requiredBits) ?? 1024;
14
+ const hash = fnv1a(str, { size: bitSize });
15
+ return toBase26(hash, length);
16
+ }
17
+ // converts hash to lowercase letters
18
+ function toBase26(num, length = 10) {
19
+ const alphabet = "abcdefghijklmnopqrstuvwxyz";
20
+ let out = "";
21
+ while (num > 0n && out.length < length) {
22
+ out = alphabet[Number(num % 26n)] + out;
23
+ num /= 26n;
24
+ }
25
+ return out.padStart(length, "a"); // optional padding
26
+ }
27
+ /**
28
+ * Creates a RelationalDb instance with namespace support.
29
+ * @param baseDb The base RelationalDb instance to enhance.
30
+ * @param baseOptions The default options for namespace creation. Hashes namespace by default.
31
+ * @returns The enhanced RelationalDb instance.
32
+ */
33
+ export function createRelationalDb(baseDb, baseOptions) {
34
+ const relationalDb = baseDb;
35
+ relationalDb.createNamespace = (namespace, options) => createNamespacedDb(baseDb, namespace, options ?? baseOptions);
36
+ relationalDb.queryNamespace = (namespace, options) => createNamespacedQueryBuilder(baseDb, namespace, options ?? baseOptions);
37
+ return relationalDb;
38
+ }
39
+ export async function createNamespacedDb(db, namespace, options) {
40
+ // hash the namespace to avoid too long namespaces
41
+ const shouldHash = options?.hashNamespace ?? true;
42
+ const hashValue = shouldHash ? hashNamespace(namespace) : namespace;
43
+ await db.schema.createSchema(hashValue).ifNotExists().execute();
44
+ const schemaRelationalDb = db.withSchema(hashValue);
45
+ return schemaRelationalDb;
46
+ }
47
+ export function createNamespacedQueryBuilder(db, namespace, options) {
48
+ const shouldHash = options?.hashNamespace ?? true;
49
+ const hashValue = shouldHash ? hashNamespace(namespace) : namespace;
50
+ const namespacedDb = db.withSchema(hashValue);
51
+ return relationalDbToQueryBuilder(namespacedDb);
52
+ }
53
+ /**
54
+ * Returns a query builder for a RelationalDb instance.
55
+ * @param query The RelationalDb instance to convert.
56
+ * @returns The IRelationalQueryBuilder instance.
57
+ */
58
+ export function relationalDbToQueryBuilder(query) {
59
+ return {
60
+ selectFrom: query.selectFrom.bind(query),
61
+ selectNoFrom: query.selectNoFrom.bind(query),
62
+ with: query.with.bind(query),
63
+ withRecursive: query.withRecursive.bind(query),
64
+ withSchema: (schema) => relationalDbToQueryBuilder(query.withSchema(schema)),
65
+ };
66
+ }
67
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/processors/relational/utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
+ import type { IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
2
+ import type { IRelationalDb, OperationWithContext } from "@powerhousedao/reactor";
1
3
  import type { PHDocumentHeader } from "document-model";
2
- import type { OperationWithContext } from "../storage/interfaces.js";
4
+ export type TempProcessorAppToBeRemoved = "connect" | "switchboard";
5
+ export interface IProcessorHostModule {
6
+ analyticsStore: IAnalyticsStore;
7
+ relationalDb: IRelationalDb;
8
+ processorApp: TempProcessorAppToBeRemoved;
9
+ config?: Map<string, unknown>;
10
+ }
3
11
  /**
4
12
  * Filter for matching operations to processors.
5
13
  * All fields are optional arrays - when provided, operations must match at least one value in each specified field.
@@ -37,7 +45,7 @@ export type ProcessorRecord = {
37
45
  * A factory function that creates processor records for a given drive.
38
46
  * Called once per drive when the drive is first detected or when the factory is registered.
39
47
  */
40
- export type ProcessorFactory = (driveHeader: PHDocumentHeader) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
48
+ export type ProcessorFactory = (driveHeader: PHDocumentHeader, processorApp?: TempProcessorAppToBeRemoved) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
41
49
  /**
42
50
  * Manages processor creation and destruction based on drive operations.
43
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,gBAAgB,KAC1B,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC3D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,2BAA2B,CAAC;IAC1C,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,YAAY,CAAC,EAAE,2BAA2B,KACvC,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAKjE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAEjE;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,oBAAoB,GACvB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,oBAAoB,GACvB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAe1E;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CA0BT"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAKjE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAEjE;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,oBAAoB,GACvB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,oBAAoB,GACvB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAe1E;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CA2BT"}
@@ -49,7 +49,8 @@ export function matchesFilter(op, filter) {
49
49
  }
50
50
  }
51
51
  if (filter.documentId && filter.documentId.length > 0) {
52
- if (!filter.documentId.includes(op.context.documentId)) {
52
+ const hasWildcard = filter.documentId.includes("*");
53
+ if (!hasWildcard && !filter.documentId.includes(op.context.documentId)) {
53
54
  return false;
54
55
  }
55
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAIA,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAExD,MAAM,UAAU,eAAe,CAAC,EAAwB;IACtD,OAAO,CACL,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB;QAC9C,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,mBAAmB,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAwB;IACtD,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAwB;IAExB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAGjD,CAAC;IACF,OAAO,KAAK,CAAC,MAAsC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,EAAwB;IAExB,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAgC,CAAC;IACnE,OAAO,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO;QACL,EAAE,EAAE,OAAO;QACX,YAAY,EAAE,mBAAmB;QACjC,GAAG,EAAE;YACH,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;SACV;QACD,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAwB,EACxB,MAAuB;IAEvB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAIA,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAExD,MAAM,UAAU,eAAe,CAAC,EAAwB;IACtD,OAAO,CACL,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB;QAC9C,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,mBAAmB,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAwB;IACtD,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAwB;IAExB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAGjD,CAAC;IACF,OAAO,KAAK,CAAC,MAAsC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,EAAwB;IAExB,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAgC,CAAC;IACnE,OAAO,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO;QACL,EAAE,EAAE,OAAO;QACX,YAAY,EAAE,mBAAmB;QACjC,GAAG,EAAE;YACH,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;SACV;QACD,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAwB,EACxB,MAAuB;IAEvB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -18,6 +18,7 @@ export declare class InMemoryQueue implements IQueue {
18
18
  private jobIndex;
19
19
  private isBlocked;
20
20
  private onDrainedCallback?;
21
+ private isPausedFlag;
21
22
  constructor(eventBus: IEventBus);
22
23
  private toErrorInfo;
23
24
  /**
@@ -77,5 +78,29 @@ export declare class InMemoryQueue implements IQueue {
77
78
  * Unblocks the queue from accepting new jobs.
78
79
  */
79
80
  unblock(): void;
81
+ /**
82
+ * Pauses job dequeuing. Jobs can still be enqueued but dequeueNext() will return null.
83
+ */
84
+ pause(): void;
85
+ /**
86
+ * Resumes job dequeuing and emits JOB_AVAILABLE events for pending jobs to wake up executors.
87
+ */
88
+ resume(): Promise<void>;
89
+ /**
90
+ * Returns whether job dequeuing is paused.
91
+ */
92
+ get paused(): boolean;
93
+ /**
94
+ * Returns all pending jobs across all queues.
95
+ */
96
+ getPendingJobs(): Job[];
97
+ /**
98
+ * Returns a map of document IDs to sets of executing job IDs.
99
+ */
100
+ getExecutingJobIds(): Map<string, Set<string>>;
101
+ /**
102
+ * Returns a job by ID from the job index.
103
+ */
104
+ getJob(jobId: string): Job | undefined;
80
105
  }
81
106
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AAG9E;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,MAAM;IAU9B,OAAO,CAAC,QAAQ;IAT5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAa;gBAEnB,QAAQ,EAAE,SAAS;IAEvC,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAS/B,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BtC,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAiDtC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAqDtE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCvC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAOrB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC/D;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAUvB;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export class InMemoryQueue {
16
16
  jobIndex = new Map();
17
17
  isBlocked = false;
18
18
  onDrainedCallback;
19
+ isPausedFlag = false;
19
20
  constructor(eventBus) {
20
21
  this.eventBus = eventBus;
21
22
  }
@@ -164,6 +165,9 @@ export class InMemoryQueue {
164
165
  if (signal?.aborted) {
165
166
  return Promise.reject(new Error("Operation aborted"));
166
167
  }
168
+ if (this.isPausedFlag) {
169
+ return Promise.resolve(null);
170
+ }
167
171
  // Find the first non-empty queue for a document that's not currently executing
168
172
  for (const [queueKey, queue] of this.queues.entries()) {
169
173
  if (queue.length > 0) {
@@ -380,5 +384,57 @@ export class InMemoryQueue {
380
384
  this.isBlocked = false;
381
385
  this.onDrainedCallback = undefined;
382
386
  }
387
+ /**
388
+ * Pauses job dequeuing. Jobs can still be enqueued but dequeueNext() will return null.
389
+ */
390
+ pause() {
391
+ this.isPausedFlag = true;
392
+ }
393
+ /**
394
+ * Resumes job dequeuing and emits JOB_AVAILABLE events for pending jobs to wake up executors.
395
+ */
396
+ async resume() {
397
+ this.isPausedFlag = false;
398
+ // Emit JOB_AVAILABLE for each queue with pending jobs to wake up the executor manager
399
+ for (const [, queue] of this.queues.entries()) {
400
+ if (queue.length > 0) {
401
+ const job = queue[0];
402
+ await this.eventBus.emit(QueueEventTypes.JOB_AVAILABLE, {
403
+ documentId: job.documentId,
404
+ scope: job.scope,
405
+ branch: job.branch,
406
+ jobId: job.id,
407
+ });
408
+ }
409
+ }
410
+ }
411
+ /**
412
+ * Returns whether job dequeuing is paused.
413
+ */
414
+ get paused() {
415
+ return this.isPausedFlag;
416
+ }
417
+ /**
418
+ * Returns all pending jobs across all queues.
419
+ */
420
+ getPendingJobs() {
421
+ const jobs = [];
422
+ for (const queue of this.queues.values()) {
423
+ jobs.push(...queue);
424
+ }
425
+ return jobs;
426
+ }
427
+ /**
428
+ * Returns a map of document IDs to sets of executing job IDs.
429
+ */
430
+ getExecutingJobIds() {
431
+ return new Map(Array.from(this.docIdToJobId.entries()).map(([k, v]) => [k, new Set(v)]));
432
+ }
433
+ /**
434
+ * Returns a job by ID from the job index.
435
+ */
436
+ getJob(jobId) {
437
+ return this.jobIndex.get(jobId);
438
+ }
383
439
  }
384
440
  //# sourceMappingURL=queue.js.map