@procedures/client 0.35.0 → 0.36.0

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 (120) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapters/http/server/handler.d.ts.map +1 -1
  4. package/dist/adapters/http/server/handler.js +17 -3
  5. package/dist/adapters/http/server/handler.js.map +1 -1
  6. package/dist/adapters/port/transport.d.ts.map +1 -1
  7. package/dist/adapters/port/transport.js +2 -0
  8. package/dist/adapters/port/transport.js.map +1 -1
  9. package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
  10. package/dist/adapters/websocket/server/transport.js +2 -0
  11. package/dist/adapters/websocket/server/transport.js.map +1 -1
  12. package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -1
  13. package/dist/adapters/websocket/shared/rpc.js +14 -5
  14. package/dist/adapters/websocket/shared/rpc.js.map +1 -1
  15. package/dist/browser.d.ts +6 -4
  16. package/dist/browser.d.ts.map +1 -1
  17. package/dist/browser.js +4 -1
  18. package/dist/browser.js.map +1 -1
  19. package/dist/client/errors/index.d.ts +1 -1
  20. package/dist/client/errors/index.d.ts.map +1 -1
  21. package/dist/client/errors/index.js +1 -1
  22. package/dist/client/errors/index.js.map +1 -1
  23. package/dist/client/errors/registry.d.ts +10 -0
  24. package/dist/client/errors/registry.d.ts.map +1 -1
  25. package/dist/client/errors/registry.js +12 -0
  26. package/dist/client/errors/registry.js.map +1 -1
  27. package/dist/client/index.d.ts +1 -1
  28. package/dist/client/index.d.ts.map +1 -1
  29. package/dist/client/index.js +1 -1
  30. package/dist/client/index.js.map +1 -1
  31. package/dist/events/bus.d.ts.map +1 -1
  32. package/dist/events/bus.js +5 -1
  33. package/dist/events/bus.js.map +1 -1
  34. package/dist/events/index.d.ts +1 -1
  35. package/dist/events/index.d.ts.map +1 -1
  36. package/dist/events/publisher.d.ts +18 -2
  37. package/dist/events/publisher.d.ts.map +1 -1
  38. package/dist/events/publisher.js +142 -25
  39. package/dist/events/publisher.js.map +1 -1
  40. package/dist/events/recheck.d.ts +27 -5
  41. package/dist/events/recheck.d.ts.map +1 -1
  42. package/dist/events/recheck.js +11 -10
  43. package/dist/events/recheck.js.map +1 -1
  44. package/dist/procedures/collection/admission.d.ts +26 -7
  45. package/dist/procedures/collection/admission.d.ts.map +1 -1
  46. package/dist/procedures/collection/admission.js +39 -7
  47. package/dist/procedures/collection/admission.js.map +1 -1
  48. package/dist/procedures/collection/changes.d.ts +28 -4
  49. package/dist/procedures/collection/changes.d.ts.map +1 -1
  50. package/dist/procedures/collection/changes.js +50 -6
  51. package/dist/procedures/collection/changes.js.map +1 -1
  52. package/dist/procedures/collection/hint-filter.d.ts +143 -0
  53. package/dist/procedures/collection/hint-filter.d.ts.map +1 -0
  54. package/dist/procedures/collection/hint-filter.js +311 -0
  55. package/dist/procedures/collection/hint-filter.js.map +1 -0
  56. package/dist/procedures/collection/index.d.ts +2 -0
  57. package/dist/procedures/collection/index.d.ts.map +1 -1
  58. package/dist/procedures/collection/index.js +2 -0
  59. package/dist/procedures/collection/index.js.map +1 -1
  60. package/dist/procedures/collection/procedures.d.ts +2 -2
  61. package/dist/procedures/collection/procedures.d.ts.map +1 -1
  62. package/dist/procedures/collection/procedures.js +6 -4
  63. package/dist/procedures/collection/procedures.js.map +1 -1
  64. package/dist/procedures/index.d.ts +2 -2
  65. package/dist/procedures/index.d.ts.map +1 -1
  66. package/dist/procedures/index.js +3 -1
  67. package/dist/procedures/index.js.map +1 -1
  68. package/dist/server/error-policy.d.ts +96 -0
  69. package/dist/server/error-policy.d.ts.map +1 -0
  70. package/dist/server/error-policy.js +196 -0
  71. package/dist/server/error-policy.js.map +1 -0
  72. package/dist/server/error-response.d.ts +30 -0
  73. package/dist/server/error-response.d.ts.map +1 -0
  74. package/dist/server/error-response.js +90 -0
  75. package/dist/server/error-response.js.map +1 -0
  76. package/dist/server/index.d.ts +2 -0
  77. package/dist/server/index.d.ts.map +1 -1
  78. package/dist/server/index.js +1 -0
  79. package/dist/server/index.js.map +1 -1
  80. package/dist/server/last-resort.d.ts +17 -0
  81. package/dist/server/last-resort.d.ts.map +1 -0
  82. package/dist/server/last-resort.js +19 -0
  83. package/dist/server/last-resort.js.map +1 -0
  84. package/dist/server/procedure-server.d.ts +3 -11
  85. package/dist/server/procedure-server.d.ts.map +1 -1
  86. package/dist/server/procedure-server.js +7 -42
  87. package/dist/server/procedure-server.js.map +1 -1
  88. package/dist/server/server.d.ts +43 -1
  89. package/dist/server/server.d.ts.map +1 -1
  90. package/dist/server/server.js +39 -2
  91. package/dist/server/server.js.map +1 -1
  92. package/dist/server/types.d.ts +12 -0
  93. package/dist/server/types.d.ts.map +1 -1
  94. package/dist/server/types.js.map +1 -1
  95. package/package.json +1 -1
  96. package/src/adapters/http/server/handler.ts +18 -3
  97. package/src/adapters/port/transport.ts +2 -0
  98. package/src/adapters/websocket/server/transport.ts +2 -0
  99. package/src/adapters/websocket/shared/rpc.ts +14 -5
  100. package/src/browser.ts +11 -0
  101. package/src/client/errors/index.ts +1 -0
  102. package/src/client/errors/registry.ts +13 -0
  103. package/src/client/index.ts +1 -0
  104. package/src/events/bus.ts +6 -1
  105. package/src/events/index.ts +1 -1
  106. package/src/events/publisher.ts +150 -26
  107. package/src/events/recheck.ts +38 -13
  108. package/src/procedures/collection/admission.ts +50 -9
  109. package/src/procedures/collection/changes.ts +68 -7
  110. package/src/procedures/collection/hint-filter.ts +376 -0
  111. package/src/procedures/collection/index.ts +3 -0
  112. package/src/procedures/collection/procedures.ts +8 -6
  113. package/src/procedures/index.ts +5 -0
  114. package/src/server/error-policy.ts +263 -0
  115. package/src/server/error-response.ts +91 -0
  116. package/src/server/index.ts +2 -0
  117. package/src/server/last-resort.ts +23 -0
  118. package/src/server/procedure-server.ts +8 -41
  119. package/src/server/server.ts +73 -3
  120. package/src/server/types.ts +13 -0
@@ -4,8 +4,10 @@
4
4
  * `admission` of `createCollectionProcedures()` gives the rules as data:
5
5
  *
6
6
  * - `admit` examines each row `{ id, value }` that a read gives. It has the shape of `AdmitItem`,
7
- * the output filter of a host. The change events with values give it the same rows for each
8
- * subscriber, so the reads and the events obey one rule.
7
+ * the output filter of a host. The publisher of the change events gives it the rows of each
8
+ * event for each subscriber (roadmap CLI-78). Thus the reads and the events obey one rule.
9
+ * - `admitsAll` tells that `admit` admits each row of a partition for a call. The events of such a
10
+ * subscriber then pass without the filter of each row.
9
11
  * - `guard` examines each write `{ op, id, doc, prev }` before the storage changes. A refused write
10
12
  * gets `FORBIDDEN` with the reason `write-not-allowed`.
11
13
  * - `versionOf` gives the version of a stored item (roadmap CLI-55). With it, a guarded write
@@ -16,8 +18,11 @@
16
18
  * (`admittedStorage()`). Each read and each write of each procedure goes through this view.
17
19
  *
18
20
  * - A refused row is absent: `get` gives undefined, `has` gives false, and the lists, `size`,
19
- * `find` and `changes` do not have it. A delta of `changes` puts the id of a refused row in
20
- * `deleted`, so a copy of the caller drops it.
21
+ * `find` and `changes` do not have it.
22
+ * - A delta of `changes` gives only ids that the caller can read (roadmap CLI-78). The view
23
+ * does not know which rows the caller read before the delta. Thus a delta with a refused row or
24
+ * with a deleted row becomes a full answer of the admitted rows. The copy of the caller then
25
+ * drops each other row. When `admitsAll` admits the caller, the delta stays as it is.
21
26
  * - An error of `admit` fails the read. It does not hide the rows, so a sync does not delete them.
22
27
  * - The guard reads the stored item before the write. With `versionOf`, the write expects the
23
28
  * version of that item (roadmap CLI-16). A change of another writer between the read and the
@@ -69,8 +74,9 @@ function withoutValue(conflict) {
69
74
  * @param storage - The storage of the call: of the collection, or of its partition
70
75
  * @param admission - The rules of the collection
71
76
  * @param ctx - The context of the call. The rules get its invocation.
77
+ * @param partition - The partition of the call. `admitsAll` gets it.
72
78
  */
73
- export function admittedStorage(storage, admission, ctx) {
79
+ export function admittedStorage(storage, admission, ctx, partition) {
74
80
  const admit = admission?.admit;
75
81
  const guard = admission?.guard;
76
82
  if (!admit && !guard)
@@ -159,6 +165,25 @@ export function admittedStorage(storage, admission, ctx) {
159
165
  return error;
160
166
  return new VersionConflictError(kept, error instanceof Error ? error.message : undefined);
161
167
  };
168
+ /** This function tells if `admitsAll` admits the caller. An error gives false. */
169
+ const readsAll = async () => {
170
+ if (!admission?.admitsAll || invocation === undefined)
171
+ return false;
172
+ try {
173
+ return (await admission.admitsAll(invocation, partition)) === true;
174
+ }
175
+ catch {
176
+ return false;
177
+ }
178
+ };
179
+ /** The full answer of `changes`: each admitted row, at a version that the rows include. */
180
+ const fullAnswer = async () => {
181
+ const all = await storage.getChangesSince(undefined);
182
+ if (all.full)
183
+ return { version: all.version, full: true, changed: await admitted(all.changed), deleted: [] };
184
+ // A log that does not give all rows: the rows, read after the version, include that version
185
+ return { version: all.version, full: true, changed: await entries(), deleted: [] };
186
+ };
162
187
  const view = {
163
188
  async get(id) {
164
189
  const value = await storage.get(id);
@@ -258,10 +283,17 @@ export function admittedStorage(storage, admission, ctx) {
258
283
  const changed = await admitted(changes.changed);
259
284
  if (changes.full)
260
285
  return { ...changes, changed };
261
- // A delta: the copy of the caller drops each refused row
262
286
  const kept = new Set(changed.map(([id]) => id));
263
287
  const refused = changes.changed.filter(([id]) => !kept.has(id)).map(([id]) => id);
264
- return { ...changes, changed, deleted: [...changes.deleted, ...refused] };
288
+ // A delta of admitted rows only gives no id that the caller cannot read
289
+ if (refused.length === 0 && changes.deleted.length === 0)
290
+ return { ...changes, changed };
291
+ // A caller that reads each row of the partition gets the delta as before (roadmap CLI-78)
292
+ if (await readsAll())
293
+ return { ...changes, changed, deleted: [...changes.deleted, ...refused] };
294
+ // The view does not know if the caller read a refused or a deleted row before. A full answer
295
+ // gives no other id, and the copy of the caller drops each row that it cannot read.
296
+ return fullAnswer();
265
297
  };
266
298
  }
267
299
  if (storage.query) {
@@ -1 +1 @@
1
- {"version":3,"file":"admission.js","sourceRoot":"","sources":["../../../src/procedures/collection/admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,eAAe,EAAmC,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAA8F,MAAM,YAAY,CAAC;AAElJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAwC,MAAM,mBAAmB,CAAC;AAgFnH,yFAAyF;AACzF,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,8BAA8B;AAC9B,SAAS,YAAY,CAAC,GAAqB,EAAE,KAAsB;IACjE,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,kDAAkD,KAAK,CAAC,EAAE,QAAQ,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACxJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAA0C;IACvE,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,SAAS,CAAC,2DAA2D,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAA0C,EAAE,GAAqB,EAAE,EAAU,EAAE,KAAc;IAC3H,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AACvF,CAAC;AAED,kGAAkG;AAClG,SAAS,YAAY,CAAC,QAAyB;IAC7C,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACvJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAI,OAA6B,EAAE,SAA0C,EAAE,GAAqB;IACjI,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IACrC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,kFAAkF;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAc,EAAoB,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACtG,wDAAwD;IACxD,MAAM,QAAQ,GAAG,KAAK,EAAE,OAA2B,EAA+B,EAAE;QAClF,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,8GAA8G;IAC9G,MAAM,OAAO,GAAG,KAAK,IAAiC,EAAE;QACtD,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QACtI,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,4EAA4E;IAC5E,MAAM,MAAM,GAAG,KAAK,EAAE,MAAkC,EAAiB,EAAE;QACzE,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI;gBAAE,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC,CAAC;IACF;;;OAGG;IACH,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,IAAa,EAA6B,EAAE;QAC9E,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC,CAAC;IACF,2FAA2F;IAC3F,MAAM,WAAW,GAAG,CAAC,OAA4C,EAAE,IAAa,EAAuC,EAAE;QACvH,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC3D,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC;IACnF,CAAC,CAAC;IACF,wGAAwG;IACxG,MAAM,YAAY,GAAG,CAAC,OAA6C,EAAE,GAAsB,EAAE,MAAsB,EAAwC,EAAE;QAC3J,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAmC,EAAE,CAAC;QACjD,KAAK,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC/F,CAAC,CAAC;IACF;;;OAGG;IACH,MAAM,OAAO,GAAG,KAAK,EAAK,KAAuB,EAAc,EAAE;QAC/D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IACF,6EAA6E;IAC7E,MAAM,oBAAoB,GAAG,KAAK,EAAE,KAAc,EAAoB,EAAE;QACtE,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAC/J,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACjF,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEF,MAAM,IAAI,GAAyB;QACjC,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,KAAK,CAAC,MAAM;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzG,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YAC1B,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO;YACtB,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAO;YACjB,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,sGAAsG;YACtG,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YAC9H,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAiB,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;YAC3B,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzG,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO;YAC5B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAiB,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,MAAoB,EAAE,OAA6B;YACzE,MAAM,KAAK,GAAG,KAAK,EAAE,IAAa,EAAE,GAAY,EAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAqC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAA2B,CAAC,CAAC;YACjK,CAAC;YACD,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,0CAA0C;YAC1C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACzC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAM,CAAC;YAC1C,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvB,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,eAAe,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7E,sHAAsH;YACtH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;KAC7B,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAW,EAAE,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,EAAE,KAAc,EAA8B,EAAE;YAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;YACjD,yDAAyD;YACzD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAC5E,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,QAAyB,EAAE,OAA6B,EAAE,MAA2B,EAAE,EAAE;YAC3G,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;YACpK,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACnE,8GAA8G;QAC9G,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,QAAyB,EAAE,OAA6B,EAAE,MAA2B,EAAE,EAAE;YAC3G,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;YAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC,UAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5I,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;YACrH,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mGAAmG;AACnG,SAAS,UAAU,CAAC,MAAsC;IACxD,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3G,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,aAAa,CAC1B,MAAoE,EACpE,QAAsE,EACtE,OAA4B,EAC5B,IAAY,EACZ,UAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;QACpF,+EAA+E;QAC/E,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;gBAAE,OAAO,GAAG,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"admission.js","sourceRoot":"","sources":["../../../src/procedures/collection/admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,eAAe,EAAmC,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAA8F,MAAM,YAAY,CAAC;AAElJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAwC,MAAM,mBAAmB,CAAC;AA6FnH,yFAAyF;AACzF,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,8BAA8B;AAC9B,SAAS,YAAY,CAAC,GAAqB,EAAE,KAAsB;IACjE,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,kDAAkD,KAAK,CAAC,EAAE,QAAQ,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACxJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAA0C;IACvE,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,SAAS,CAAC,2DAA2D,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAA0C,EAAE,GAAqB,EAAE,EAAU,EAAE,KAAc;IAC3H,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AACvF,CAAC;AAED,kGAAkG;AAClG,SAAS,YAAY,CAAC,QAAyB;IAC7C,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACvJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAI,OAA6B,EAAE,SAA0C,EAAE,GAAqB,EAAE,SAAkB;IACrJ,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IACrC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,kFAAkF;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAc,EAAoB,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACtG,wDAAwD;IACxD,MAAM,QAAQ,GAAG,KAAK,EAAE,OAA2B,EAA+B,EAAE;QAClF,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,8GAA8G;IAC9G,MAAM,OAAO,GAAG,KAAK,IAAiC,EAAE;QACtD,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QACtI,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,4EAA4E;IAC5E,MAAM,MAAM,GAAG,KAAK,EAAE,MAAkC,EAAiB,EAAE;QACzE,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI;gBAAE,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC,CAAC;IACF;;;OAGG;IACH,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,IAAa,EAA6B,EAAE;QAC9E,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC,CAAC;IACF,2FAA2F;IAC3F,MAAM,WAAW,GAAG,CAAC,OAA4C,EAAE,IAAa,EAAuC,EAAE;QACvH,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC3D,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC;IACnF,CAAC,CAAC;IACF,wGAAwG;IACxG,MAAM,YAAY,GAAG,CAAC,OAA6C,EAAE,GAAsB,EAAE,MAAsB,EAAwC,EAAE;QAC3J,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAmC,EAAE,CAAC;QACjD,KAAK,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC/F,CAAC,CAAC;IACF;;;OAGG;IACH,MAAM,OAAO,GAAG,KAAK,EAAK,KAAuB,EAAc,EAAE;QAC/D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IACF,6EAA6E;IAC7E,MAAM,oBAAoB,GAAG,KAAK,EAAE,KAAc,EAAoB,EAAE;QACtE,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAC/J,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACjF,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEF,kFAAkF;IAClF,MAAM,QAAQ,GAAG,KAAK,IAAsB,EAAE;QAC5C,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,2FAA2F;IAC3F,MAAM,UAAU,GAAG,KAAK,IAAgC,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,eAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC7G,4FAA4F;QAC5F,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAyB;QACjC,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,KAAK,CAAC,MAAM;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzG,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YAC1B,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO;YACtB,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAO;YACjB,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,sGAAsG;YACtG,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YAC9H,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAiB,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;YAC3B,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzG,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO;YAC5B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAiB,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,MAAoB,EAAE,OAA6B;YACzE,MAAM,KAAK,GAAG,KAAK,EAAE,IAAa,EAAE,GAAY,EAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAqC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAA2B,CAAC,CAAC;YACjK,CAAC;YACD,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,0CAA0C;YAC1C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACzC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAM,CAAC;YAC1C,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvB,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,eAAe,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7E,sHAAsH;YACtH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;KAC7B,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAW,EAAE,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,EAAE,KAAc,EAA8B,EAAE;YAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAClF,wEAAwE;YACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;YACzF,0FAA0F;YAC1F,IAAI,MAAM,QAAQ,EAAE;gBAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YAChG,6FAA6F;YAC7F,oFAAoF;YACpF,OAAO,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,QAAyB,EAAE,OAA6B,EAAE,MAA2B,EAAE,EAAE;YAC3G,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,KAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;YACpK,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACnE,8GAA8G;QAC9G,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,QAAyB,EAAE,OAA6B,EAAE,MAA2B,EAAE,EAAE;YAC3G,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;YAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC,UAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5I,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;YACrH,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mGAAmG;AACnG,SAAS,UAAU,CAAC,MAAsC;IACxD,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3G,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,aAAa,CAC1B,MAAoE,EACpE,QAAsE,EACtE,OAA4B,EAC5B,IAAY,EACZ,UAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;QACpF,+EAA+E;QAC/E,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;gBAAE,OAAO,GAAG,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -22,10 +22,14 @@
22
22
  * listens to the topic, the procedures publish nothing, and the chain stops.
23
23
  * - The publishes of one storage and one topic run one at a time, in the order of the writes. A
24
24
  * write resolves after its event is on the bus. A failed publish never fails the write.
25
+ * - With the rule `admission.admit`, the publisher filters the ids of each event for each
26
+ * subscriber (roadmap CLI-78, `hint-filter.ts`). The event carries the rows after the changes,
27
+ * from the change log. While a subscriber has a filter, each write first reads the rows before
28
+ * it (`getBatch`). Thus a row that leaves the rule reaches that subscriber as a delete.
25
29
  */
26
30
  import type { EventBus } from "../../events/types.js";
27
- import type { AdmitItem } from "../invoke.js";
28
31
  import type { StorageChanges } from "./storage.js";
32
+ import type { CollectionAdmission } from "./admission.js";
29
33
  import type { RepositoryProvider } from "../types.js";
30
34
  /**
31
35
  * The change event of the writes of a collection, on the topic `collections.<name>` (roadmap
@@ -51,8 +55,26 @@ export interface CollectionChangeEvent {
51
55
  readonly id: string;
52
56
  readonly value: unknown;
53
57
  }> | undefined;
54
- /** With the option `values`: the changed ids whose values the filter refused. Read them with `changes`. */
58
+ /**
59
+ * With the option `values`: the changed ids whose values the output filter of the host refused.
60
+ * Read them with `changes`. A row that the rule of the rows refuses is not in the event (roadmap CLI-78).
61
+ */
55
62
  readonly withheld?: readonly string[] | undefined;
63
+ /**
64
+ * The version of each changed item, as `versionOf(id)` of the storage gives it (roadmap CLI-77).
65
+ * A publisher that knows the versions sets it, for example `watchStorageChanges()` of
66
+ * `@procedures/mongo`. Without it, read the versions with `changes`. A deleted id has no version.
67
+ */
68
+ readonly versions?: ReadonlyArray<{
69
+ readonly id: string;
70
+ readonly version: string;
71
+ }> | undefined;
72
+ /**
73
+ * True: read the collection in full, with `changes` and no `since` (roadmap CLI-77). A publisher
74
+ * sets it when it cannot tell what changed, for example `watchStorageChanges()` of
75
+ * `@procedures/mongo` after it lost its resume token. A read since the cursor can miss changes.
76
+ */
77
+ readonly reset?: boolean | undefined;
56
78
  /** The origin of the writes, when one origin made all the changes of the event. */
57
79
  readonly origin?: string | undefined;
58
80
  }
@@ -71,6 +93,8 @@ export declare function collectionTopicReads(topic: string, repository?: Reposit
71
93
  /** The part of a storage that the change events read. */
72
94
  interface ChangeLog {
73
95
  getChangesSince?(since?: string): Promise<StorageChanges<unknown>>;
96
+ /** The stored items of the ids: the rows before a write, for the row filter of the subscribers (roadmap CLI-78). */
97
+ getBatch?(ids: string[]): Promise<Map<string, unknown>>;
74
98
  }
75
99
  /**
76
100
  * This function runs a write of a collection procedure, and then publishes the change event of
@@ -85,9 +109,9 @@ interface ChangeLog {
85
109
  * @param origin - The origin of the write
86
110
  * @param write - The write
87
111
  * @param values - True: the events carry the values, for the output filter of each subscriber
88
- * @param admit - The rule of the rows of the collection: each subscriber applies it to the values (roadmap CLI-41)
112
+ * @param admission - The rules of the rows of the collection: each subscriber applies `admit` to the rows of the event (roadmap CLI-41, CLI-78)
89
113
  */
90
- export declare function writeWithChangeEvent<R>(bus: EventBus | undefined, storage: object & ChangeLog, topic: string | undefined, ids: readonly string[] | "*", origin: string | undefined, write: () => Promise<R>, values?: boolean, admit?: AdmitItem): Promise<R>;
114
+ export declare function writeWithChangeEvent<R>(bus: EventBus | undefined, storage: object & ChangeLog, topic: string | undefined, ids: readonly string[] | "*", origin: string | undefined, write: () => Promise<R>, values?: boolean, admission?: CollectionAdmission): Promise<R>;
91
115
  /**
92
116
  * This function starts the chain of the events of a storage at the version of a call of
93
117
  * `changes`, when the chain has no version. The subscriber that made the call then applies the
@@ -1 +1 @@
1
- {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../../src/procedures/collection/changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAC9F,2GAA2G;IAC3G,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,MAAM,EAAE,CAGtG;AAED,yDAAyD;AACzD,UAAU,SAAS;IACjB,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CACpE;AA4HD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,GAAG,EAAE,QAAQ,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACvB,MAAM,UAAQ,EACd,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7H"}
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../../src/procedures/collection/changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAC9F;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACjG;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,MAAM,EAAE,CAGtG;AAED,yDAAyD;AACzD,UAAU,SAAS;IACjB,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,oHAAoH;IACpH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD;AA0JD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,GAAG,EAAE,QAAQ,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACvB,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7H"}
@@ -22,8 +22,13 @@
22
22
  * listens to the topic, the procedures publish nothing, and the chain stops.
23
23
  * - The publishes of one storage and one topic run one at a time, in the order of the writes. A
24
24
  * write resolves after its event is on the bus. A failed publish never fails the write.
25
+ * - With the rule `admission.admit`, the publisher filters the ids of each event for each
26
+ * subscriber (roadmap CLI-78, `hint-filter.ts`). The event carries the rows after the changes,
27
+ * from the change log. While a subscriber has a filter, each write first reads the rows before
28
+ * it (`getBatch`). Thus a row that leaves the rule reaches that subscriber as a delete.
25
29
  */
26
30
  import { withRows } from "../../events/rows.js";
31
+ import { hasFilteredSubscriber, withHintImages } from "./hint-filter.js";
27
32
  import { collectionTopicTarget } from "./topic.js";
28
33
  export { collectionChangeTopic } from "./topic.js";
29
34
  /**
@@ -81,7 +86,8 @@ function hint(version, origin) {
81
86
  /**
82
87
  * The event of a delta with the values of the changed items. Each row `{ id, value }` passes the
83
88
  * output filter of each subscriber and the rule of the rows of the collection, and a refused row
84
- * goes from `values` to `withheld`.
89
+ * goes from `values` to `withheld`. The row filter of a subscriber (roadmap CLI-78) first takes the
90
+ * rows that the rule refuses out of the event. Thus only the output filter of the host withholds a row.
85
91
  */
86
92
  function withValues(event, entries, admit) {
87
93
  return withRows({ ...event, values: entries }, {
@@ -99,7 +105,8 @@ function withValues(event, entries, admit) {
99
105
  });
100
106
  }
101
107
  /** One publish: the event of the writes that ended since the last publish. */
102
- async function publish(chain, storage, bus, topic, values, admit) {
108
+ async function publish(chain, storage, bus, topic, values, admission) {
109
+ const admit = admission?.admit;
103
110
  const writes = chain.ended.splice(0);
104
111
  // An earlier publish told these writes
105
112
  if (writes.length === 0)
@@ -139,7 +146,35 @@ async function publish(chain, storage, bus, topic, values, admit) {
139
146
  deleted: changes.deleted,
140
147
  ...(origin !== undefined && { origin }),
141
148
  };
142
- bus.emit(topic, values ? withValues(event, changes.changed.map(([id, value]) => ({ id, value })), admit) : event);
149
+ const out = values ? withValues(event, changes.changed.map(([id, value]) => ({ id, value })), admit) : event;
150
+ // The rows of the event for the row filter of each subscriber (roadmap CLI-78)
151
+ bus.emit(topic, admit ? withHintImages(out, { after: afterOf(changes), before: beforeOf(writes), admission: admission }) : out);
152
+ }
153
+ /** The rows after the changes, from the change log: a changed id has its item, a deleted id has none. */
154
+ function afterOf(changes) {
155
+ const after = new Map();
156
+ for (const id of changes.deleted)
157
+ after.set(id, { found: false });
158
+ for (const [id, value] of changes.changed)
159
+ after.set(id, { found: true, value });
160
+ return after;
161
+ }
162
+ /**
163
+ * The rows before the changes: for each id, the read of the first write that read it. An id
164
+ * without a read is unknown, so the filter of a subscriber makes a hint without ids for it.
165
+ */
166
+ function beforeOf(writes) {
167
+ const before = new Map();
168
+ for (const write of writes) {
169
+ if (!write.before || write.ids === "*")
170
+ continue;
171
+ for (const id of write.ids) {
172
+ if (before.has(id))
173
+ continue;
174
+ before.set(id, write.before.has(id) ? { found: true, value: write.before.get(id) } : { found: false });
175
+ }
176
+ }
177
+ return before;
143
178
  }
144
179
  /**
145
180
  * This function runs a write of a collection procedure, and then publishes the change event of
@@ -154,19 +189,28 @@ async function publish(chain, storage, bus, topic, values, admit) {
154
189
  * @param origin - The origin of the write
155
190
  * @param write - The write
156
191
  * @param values - True: the events carry the values, for the output filter of each subscriber
157
- * @param admit - The rule of the rows of the collection: each subscriber applies it to the values (roadmap CLI-41)
192
+ * @param admission - The rules of the rows of the collection: each subscriber applies `admit` to the rows of the event (roadmap CLI-41, CLI-78)
158
193
  */
159
- export async function writeWithChangeEvent(bus, storage, topic, ids, origin, write, values = false, admit) {
194
+ export async function writeWithChangeEvent(bus, storage, topic, ids, origin, write, values = false, admission) {
160
195
  if (bus === undefined || topic === undefined)
161
196
  return write();
162
197
  const chain = chainOf(storage, topic);
163
198
  const started = { ids, origin, anchored: chain.anchor !== undefined };
199
+ // A subscriber with a row filter: the rows before the write tell it which rows left the rule (roadmap CLI-78)
200
+ if (admission?.admit && ids !== "*" && ids.length > 0 && storage.getBatch && hasFilteredSubscriber(bus, topic) && bus.hasSubscribers(topic)) {
201
+ try {
202
+ started.before = await storage.getBatch([...ids]);
203
+ }
204
+ catch {
205
+ // Without the rows before the write, the filter of a subscriber makes a hint without ids
206
+ }
207
+ }
164
208
  try {
165
209
  return await write();
166
210
  }
167
211
  finally {
168
212
  chain.ended.push(started);
169
- const run = chain.tail.then(() => publish(chain, storage, bus, topic, values, admit));
213
+ const run = chain.tail.then(() => publish(chain, storage, bus, topic, values, admission));
170
214
  chain.tail = run.catch(() => undefined);
171
215
  await chain.tail;
172
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../../src/procedures/collection/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../../src/procedures/collection/changes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * The row filter of the change events of a collection (roadmap CLI-78).
3
+ *
4
+ * A change event names the ids that changed. Before CLI-78, each subscriber of a topic got all the
5
+ * ids, so only a principal that reads the whole partition could subscribe. With CLI-78, the publisher
6
+ * filters each event row by row for each subscriber, with the rule of the rows of the collection
7
+ * (`admission.admit`). The reads apply the same rule (`admittedStorage()`).
8
+ *
9
+ * - The rule comes from the registry of the call: `createCollectionProcedures()` puts its rules on
10
+ * the metadata of its procedures. An event can also carry the rules in its images.
11
+ * - The rule examines the rows of the images of the event (`withHintImages()`): the row after the
12
+ * changes, and the row before them. The publisher does not read a storage.
13
+ * - A changed row that the rule admits stays in `changed`. A changed row that the rule refuses, or
14
+ * a deleted row, goes to `deleted` only when the rule admitted its row before the changes.
15
+ * Otherwise the subscriber does not get its id.
16
+ * - When an image is missing, or the rule fails, the subscriber gets a hint without ids and
17
+ * without `since`. It then reads the changes, through the rule of the reads.
18
+ * - An event without ids, and a `reset` event, pass without ids.
19
+ * - When the subscriber gets no id of an event, it gets no event. The `since` of its next event is
20
+ * then the `version` of the last event that it got. Thus it applies the next delta without a read.
21
+ * - `admission.admitsAll` tells that a subscriber reads each row of its partition. Its events then
22
+ * pass as before CLI-78, with no cost.
23
+ */
24
+ import type { Invocation } from "../invoke.js";
25
+ import type { AnyProcedure, ProcedureContext } from "../types.js";
26
+ import type { CollectionAdmission } from "./admission.js";
27
+ import type { EventBus } from "../../events/types.js";
28
+ /** The state of one row in an image: the stored item, or no item. */
29
+ export type HintRowState = {
30
+ readonly found: true;
31
+ readonly value: unknown;
32
+ } | {
33
+ readonly found: false;
34
+ };
35
+ /**
36
+ * The rows of a change event, for the row filter of each subscriber (roadmap CLI-78). A missing id
37
+ * in a map is unknown. The images are on a symbol key, so they stay in this process: JSON does
38
+ * not take them.
39
+ */
40
+ export interface HintImages {
41
+ /** The rows after the changes of the event, by id. */
42
+ readonly after?: ReadonlyMap<string, HintRowState> | undefined;
43
+ /** The rows before the changes of the event (at its `since`), by id. */
44
+ readonly before?: ReadonlyMap<string, HintRowState> | undefined;
45
+ /**
46
+ * The rules of the rows of the collection. The publisher uses the rules from its registry
47
+ * first, and these rules only when the registry has none.
48
+ */
49
+ readonly admission?: CollectionAdmission | undefined;
50
+ }
51
+ /**
52
+ * This function gives the event with its images, for the row filter of each subscriber (roadmap
53
+ * CLI-78). The images are not enumerable: a copy or a comparison of the event does not see them.
54
+ */
55
+ export declare function withHintImages<T extends object>(event: T, images: HintImages): T;
56
+ /** The images of an event, or undefined for an event without images. */
57
+ export declare function hintImagesOf(event: unknown): HintImages | undefined;
58
+ /**
59
+ * This function puts the rules of a collection on the metadata of its procedures, so the publisher
60
+ * of the events finds them in the registry. The key is not enumerable.
61
+ */
62
+ export declare function withCollectionRules(procedures: AnyProcedure[], admission: CollectionAdmission | undefined): AnyProcedure[];
63
+ /**
64
+ * The rules of a collection in the registry of a call. It gives the rules, or `null` for a
65
+ * collection without rules. It gives undefined when the registry does not know the procedures.
66
+ */
67
+ export declare function collectionRulesOf(ctx: ProcedureContext, collection: string): CollectionAdmission | null | undefined;
68
+ /**
69
+ * The invocation that the rules of a collection get for the events of one topic (roadmap CLI-78).
70
+ * It has the principal, the capability, the metadata and the signal of the subscription. Its path
71
+ * is the path of `changes` of the collection, and its input has the partition of the topic. Thus
72
+ * a rule that reads `invocation.input.partition` sees the same input as in a read of the topic.
73
+ *
74
+ * @param base - The invocation of the subscription
75
+ * @param ctx - The context of the subscription. Its registry gives the procedure of `changes`.
76
+ * @param collection - The collection of the topic
77
+ * @param partition - The partition that the topic names, before the resolver
78
+ */
79
+ export declare function collectionInvocation(base: Invocation | undefined, ctx: ProcedureContext, collection: string, partition: string | undefined): Invocation | undefined;
80
+ /**
81
+ * This function marks a topic of a bus: a subscription of the topic has a row filter. It gives the
82
+ * function that removes the mark. A second call of that function does nothing.
83
+ */
84
+ export declare function markFilteredTopic(bus: EventBus, topic: string): () => void;
85
+ /** True when a subscription of the topic of the bus has a row filter. */
86
+ export declare function hasFilteredSubscriber(bus: EventBus, topic: string): boolean;
87
+ /** The result of the filter for an event that the subscriber does not get. */
88
+ export declare const DROPPED: unique symbol;
89
+ /**
90
+ * The mode of a filter. `pass` gives each event as before CLI-78, and `filter` examines each row.
91
+ * `unknown` uses the rules of the images of each event.
92
+ */
93
+ export type HintFilterMode = "pass" | "filter" | "unknown";
94
+ /**
95
+ * The row filter of one topic of one subscription (roadmap CLI-78). The publisher gives each event
96
+ * of the topic to `apply()`, one at a time, in the order of the bus.
97
+ */
98
+ export declare class RowHintFilter {
99
+ /** The rules of the collection from the registry of the call. */
100
+ private readonly lookup;
101
+ /** The invocation of the topic (`collectionInvocation()`): the rules get it. */
102
+ readonly invocation: Invocation | undefined;
103
+ /** The partition of the topic: `admitsAll` gets it. */
104
+ private readonly partition;
105
+ /** The rules from the registry: undefined when the registry does not know the collection. */
106
+ private rules;
107
+ /** The result of `admitsAll` for one set of rules. */
108
+ private all;
109
+ /** The `version` of the last event of the chain, also of an event that the subscriber did not get. */
110
+ private head;
111
+ /** The `since` that the next event of the chain gets: the `version` of the last event that the subscriber got. */
112
+ private base;
113
+ /** The filters, one at a time. */
114
+ private tail;
115
+ constructor(
116
+ /** The rules of the collection from the registry of the call. */
117
+ lookup: () => CollectionAdmission | null | undefined,
118
+ /** The invocation of the topic (`collectionInvocation()`): the rules get it. */
119
+ invocation: Invocation | undefined,
120
+ /** The partition of the topic: `admitsAll` gets it. */
121
+ partition: string | undefined);
122
+ /** The mode of the filter, from the rules and from the last result of `admitsAll`. */
123
+ get mode(): HintFilterMode;
124
+ /**
125
+ * This function reads the rules again and asks `admitsAll` again: at the start of the
126
+ * subscription and at each re-check (roadmap CLI-44). It gives the new mode.
127
+ */
128
+ refresh(): Promise<HintFilterMode>;
129
+ /** This function forgets the chain: the next event keeps its own `since`. */
130
+ forget(): void;
131
+ /**
132
+ * The event for the subscriber. It gives undefined when the event passes as it is (no wait).
133
+ * Otherwise it gives a promise of the event for the subscriber, or of `DROPPED` for no event.
134
+ */
135
+ apply(data: unknown): Promise<unknown> | undefined;
136
+ /** The result of `admitsAll` for a set of rules. An error gives false. */
137
+ private admitsAll;
138
+ /** The filter of one event with the rule of the rows. */
139
+ private filter;
140
+ /** An event of the chain that the subscriber does not get: the next event keeps the `since` of the last one. */
141
+ private skip;
142
+ }
143
+ //# sourceMappingURL=hint-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hint-filter.d.ts","sourceRoot":"","sources":["../../../src/procedures/collection/hint-filter.ts"],"names":[],"mappings":"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"}