effectable 1.0.0 → 1.1.0-canary.10

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 (71) hide show
  1. package/README.md +9 -3
  2. package/build/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/build/bootstrap/bootstrap.js +18 -8
  4. package/build/bootstrap/bootstrap.js.map +1 -1
  5. package/build/bootstrap/types.d.ts +11 -3
  6. package/build/bootstrap/types.d.ts.map +1 -1
  7. package/build/component/Component.d.ts.map +1 -1
  8. package/build/component/Component.js +16 -4
  9. package/build/component/Component.js.map +1 -1
  10. package/build/component/GraphRuntime.d.ts +254 -24
  11. package/build/component/GraphRuntime.d.ts.map +1 -1
  12. package/build/component/GraphRuntime.js +1136 -239
  13. package/build/component/GraphRuntime.js.map +1 -1
  14. package/build/component/context.d.ts +3 -11
  15. package/build/component/context.d.ts.map +1 -1
  16. package/build/component/context.js +24 -23
  17. package/build/component/context.js.map +1 -1
  18. package/build/component/h.d.ts +14 -6
  19. package/build/component/h.d.ts.map +1 -1
  20. package/build/component/h.js +19 -1
  21. package/build/component/h.js.map +1 -1
  22. package/build/component/lifecycle.d.ts +11 -2
  23. package/build/component/lifecycle.d.ts.map +1 -1
  24. package/build/component/lifecycle.js +21 -4
  25. package/build/component/lifecycle.js.map +1 -1
  26. package/build/component/refs.d.ts +7 -5
  27. package/build/component/refs.d.ts.map +1 -1
  28. package/build/component/refs.js +45 -22
  29. package/build/component/refs.js.map +1 -1
  30. package/build/component/types.d.ts +16 -5
  31. package/build/component/types.d.ts.map +1 -1
  32. package/build/component/types.js.map +1 -1
  33. package/build/connect/connect.d.ts.map +1 -1
  34. package/build/connect/connect.js +143 -44
  35. package/build/connect/connect.js.map +1 -1
  36. package/build/connect/types.d.ts +2 -2
  37. package/build/connect/types.d.ts.map +1 -1
  38. package/build/runtime/BusDecorators.d.ts +6 -0
  39. package/build/runtime/BusDecorators.d.ts.map +1 -1
  40. package/build/runtime/BusDecorators.js +126 -56
  41. package/build/runtime/BusDecorators.js.map +1 -1
  42. package/build/runtime/CommandBus.d.ts +1 -1
  43. package/build/runtime/CommandBus.d.ts.map +1 -1
  44. package/build/runtime/CommandBus.js +6 -3
  45. package/build/runtime/CommandBus.js.map +1 -1
  46. package/build/runtime/EventBus.d.ts.map +1 -1
  47. package/build/runtime/EventBus.js +11 -3
  48. package/build/runtime/EventBus.js.map +1 -1
  49. package/build/runtime/HandleRegistry.d.ts +2 -1
  50. package/build/runtime/HandleRegistry.d.ts.map +1 -1
  51. package/build/runtime/HandleRegistry.js +38 -7
  52. package/build/runtime/HandleRegistry.js.map +1 -1
  53. package/build/runtime/QueryBus.d.ts +1 -1
  54. package/build/runtime/QueryBus.d.ts.map +1 -1
  55. package/build/runtime/QueryBus.js +6 -3
  56. package/build/runtime/QueryBus.js.map +1 -1
  57. package/build/store/createStore.d.ts +2 -2
  58. package/build/store/createStore.d.ts.map +1 -1
  59. package/build/store/createStore.js +31 -4
  60. package/build/store/createStore.js.map +1 -1
  61. package/build/store/middleware.d.ts +16 -1
  62. package/build/store/middleware.d.ts.map +1 -1
  63. package/build/store/middleware.js +28 -16
  64. package/build/store/middleware.js.map +1 -1
  65. package/build/store/selector.d.ts.map +1 -1
  66. package/build/store/selector.js +6 -2
  67. package/build/store/selector.js.map +1 -1
  68. package/build/store/types.d.ts +11 -4
  69. package/build/store/types.d.ts.map +1 -1
  70. package/build/store/types.js.map +1 -1
  71. package/package.json +10 -3
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/connect/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CACzD,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,KACL,CAAC,CAAC;AAEP;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CACxE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,KACL,OAAO,CAAC;AAEb;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAEjH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAC/D,MAAM,EACN,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAC1D,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACnC,8BAA8B,CAAC,CAAC,CAAC,GACjC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAEzB;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,SAAS;IAC9E,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACnF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,CAChC,CAAC,GAAG,OAAO,EACX,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,IACrE,KAAK,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC;AAEhC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/connect/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CACzD,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,KACL,CAAC,CAAC;AAEP;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CACzE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,KACL,OAAO,CAAC;AAEb;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAEjH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAC/D,MAAM,EACN,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAC1D,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACnC,8BAA8B,CAAC,CAAC,CAAC,GACjC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAEzB;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,SAAS;IAC9E,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACnF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,CAChC,CAAC,GAAG,OAAO,EACX,CAAC,GAAG,OAAO,EACX,SAAS,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,IACrE,KAAK,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC;AAEhC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
@@ -89,6 +89,9 @@ export declare function instanceUsesRuntimeBusDecorators(instance: object): bool
89
89
  export declare function wireRuntimeBusesIfDecorated<TCommand extends RuntimeCommand, TQuery extends RuntimeQuery, TEvent extends RuntimeEvent>(instance: object, buses: RuntimeBusesBundle<TCommand, TQuery, TEvent>): (() => void) | null;
90
90
  /**
91
91
  * Injects buses into `@Use*Bus` fields and registers `@OnCommand` / `@OnQuery` / `@OnEvent` handlers.
92
+ * Registration is transactional: if a handler registration or validation throws, all prior registrations
93
+ * are unwound in reverse order and the wiring error is rethrown. The returned disposer is idempotent
94
+ * and continues cleanup even if an individual disposer throws.
92
95
  *
93
96
  * @template TCommand
94
97
  * @template TQuery
@@ -101,6 +104,9 @@ export declare function wireRuntimeBuses<TCommand extends RuntimeCommand, TQuery
101
104
  /**
102
105
  * Wires multiple instances to one bus bundle: calls {@link wireRuntimeBuses} for each.
103
106
  * Order in `instances` defines wiring order; the disposer unregisters in reverse order.
107
+ * Wiring is transactional: if a later instance fails to wire, all earlier instances are unwound
108
+ * in reverse order. The returned disposer is idempotent and continues cleanup even if an
109
+ * individual disposer throws.
104
110
  *
105
111
  * @template TCommand
106
112
  * @template TQuery
@@ -1 +1 @@
1
- {"version":3,"file":"BusDecorators.d.ts","sourceRoot":"","sources":["../../src/runtime/BusDecorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAIV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAC;AA0BjB;;;;GAIG;AACH,wBAAgB,aAAa,IAAK,iBAAiB,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAK,iBAAiB,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAK,iBAAiB,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAO/D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAO3D;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,MAAM,SAAS,YAAY,GAAG,YAAY;IAE1C,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,MAAM,SAAS,YAAY,GAAG,YAAY,KACtC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAMjD;AAqCD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAClD,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAMrB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAClD,MAAM,IAAI,CAsEZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EACnD,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,IAAI,CAWZ"}
1
+ {"version":3,"file":"BusDecorators.d.ts","sourceRoot":"","sources":["../../src/runtime/BusDecorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAIV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAC;AA0BjB;;;;GAIG;AACH,wBAAgB,aAAa,IAAK,iBAAiB,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAK,iBAAiB,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAK,iBAAiB,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAO/D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAO3D;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,MAAM,SAAS,YAAY,GAAG,YAAY;IAE1C,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,MAAM,SAAS,YAAY,GAAG,YAAY,KACtC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAMjD;AAqCD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAClD,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAMrB;AAkCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAClD,MAAM,IAAI,CAkGZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,YAAY,EAC3B,MAAM,SAAS,YAAY,EAE3B,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EACnD,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,IAAI,CAgCZ"}
@@ -33,12 +33,12 @@ const ON_QUERY_ENTRIES = 'effectable:runtime:OnQuery:entries';
33
33
  const ON_EVENT_ENTRIES = 'effectable:runtime:OnEvent:entries';
34
34
  function appendPropKey(ctor, metaKey, propertyKey) {
35
35
  const key = String(propertyKey);
36
- const current = Reflect.getMetadata(metaKey, ctor);
36
+ const current = Reflect.getOwnMetadata(metaKey, ctor);
37
37
  const next = typeof current === 'undefined' ? [key] : [...current, key];
38
38
  Reflect.defineMetadata(metaKey, next, ctor);
39
39
  }
40
40
  function appendHandlerEntry(ctor, metaKey, entry) {
41
- const current = Reflect.getMetadata(metaKey, ctor);
41
+ const current = Reflect.getOwnMetadata(metaKey, ctor);
42
42
  const next = typeof current === 'undefined' ? [entry] : [...current, entry];
43
43
  Reflect.defineMetadata(metaKey, next, ctor);
44
44
  }
@@ -130,11 +130,11 @@ function createRuntimeBuses() {
130
130
  };
131
131
  }
132
132
  function getStringPropKeys(ctor, metaKey) {
133
- const own = Reflect.getMetadata(metaKey, ctor);
133
+ const own = Reflect.getOwnMetadata(metaKey, ctor);
134
134
  return typeof own === 'undefined' ? [] : [...own];
135
135
  }
136
136
  function getHandlerEntries(ctor, metaKey) {
137
- const own = Reflect.getMetadata(metaKey, ctor);
137
+ const own = Reflect.getOwnMetadata(metaKey, ctor);
138
138
  return typeof own === 'undefined' ? [] : [...own];
139
139
  }
140
140
  /**
@@ -203,8 +203,30 @@ function assignBusProps(instance, ctor, metaKey, value) {
203
203
  record[key] = value;
204
204
  }
205
205
  }
206
+ /**
207
+ * Unwinds disposers in reverse order, continuing even if one throws.
208
+ * Returns primary error (if any) and optional cleanup errors.
209
+ *
210
+ * @param {Array<() => void>} disposers - disposers in registration order
211
+ * @returns {{ primaryError?: Error; cleanupErrors: Error[] }} unwinding result
212
+ */
213
+ function unwindDisposers(disposers) {
214
+ const cleanupErrors = [];
215
+ for (let i = disposers.length - 1; i >= 0; i -= 1) {
216
+ try {
217
+ disposers[i]();
218
+ }
219
+ catch (err) {
220
+ cleanupErrors.push(err instanceof Error ? err : new Error(String(err)));
221
+ }
222
+ }
223
+ return { cleanupErrors };
224
+ }
206
225
  /**
207
226
  * Injects buses into `@Use*Bus` fields and registers `@OnCommand` / `@OnQuery` / `@OnEvent` handlers.
227
+ * Registration is transactional: if a handler registration or validation throws, all prior registrations
228
+ * are unwound in reverse order and the wiring error is rethrown. The returned disposer is idempotent
229
+ * and continues cleanup even if an individual disposer throws.
208
230
  *
209
231
  * @template TCommand
210
232
  * @template TQuery
@@ -217,68 +239,98 @@ function wireRuntimeBuses(instance, buses) {
217
239
  const leafCtor = instance.constructor;
218
240
  const ctorChain = getConstructorChainLeafFirst(leafCtor);
219
241
  const disposers = [];
220
- // Base → leaf: last assign wins when field names collide.
221
- for (let i = ctorChain.length - 1; i >= 0; i -= 1) {
222
- const ctor = ctorChain[i];
223
- assignBusProps(instance, ctor, USE_COMMAND_BUS_PROPS, buses.commandBus);
224
- assignBusProps(instance, ctor, USE_QUERY_BUS_PROPS, buses.queryBus);
225
- assignBusProps(instance, ctor, USE_EVENT_BUS_PROPS, buses.eventBus);
226
- }
227
- const mergedCommand = new Map();
228
- const mergedQuery = new Map();
229
- const mergedEvent = new Map();
230
- for (let i = ctorChain.length - 1; i >= 0; i -= 1) {
231
- const ctor = ctorChain[i];
232
- for (const { type, method } of getHandlerEntries(ctor, ON_COMMAND_ENTRIES)) {
233
- mergedCommand.set(type, method);
242
+ try {
243
+ // Base → leaf: last assign wins when field names collide.
244
+ for (let i = ctorChain.length - 1; i >= 0; i -= 1) {
245
+ const ctor = ctorChain[i];
246
+ assignBusProps(instance, ctor, USE_COMMAND_BUS_PROPS, buses.commandBus);
247
+ assignBusProps(instance, ctor, USE_QUERY_BUS_PROPS, buses.queryBus);
248
+ assignBusProps(instance, ctor, USE_EVENT_BUS_PROPS, buses.eventBus);
234
249
  }
235
- for (const { type, method } of getHandlerEntries(ctor, ON_QUERY_ENTRIES)) {
236
- mergedQuery.set(type, method);
250
+ const mergedCommand = new Map();
251
+ const mergedQuery = new Map();
252
+ // EventBus is fan-out: keep every distinct method for a type (unlike Command/Query).
253
+ const mergedEvent = new Map();
254
+ for (let i = ctorChain.length - 1; i >= 0; i -= 1) {
255
+ const ctor = ctorChain[i];
256
+ for (const { type, method } of getHandlerEntries(ctor, ON_COMMAND_ENTRIES)) {
257
+ mergedCommand.set(type, method);
258
+ }
259
+ for (const { type, method } of getHandlerEntries(ctor, ON_QUERY_ENTRIES)) {
260
+ mergedQuery.set(type, method);
261
+ }
262
+ for (const { type, method } of getHandlerEntries(ctor, ON_EVENT_ENTRIES)) {
263
+ const existing = mergedEvent.get(type);
264
+ if (typeof existing === 'undefined') {
265
+ mergedEvent.set(type, [method]);
266
+ }
267
+ else if (!existing.includes(method)) {
268
+ existing.push(method);
269
+ }
270
+ }
237
271
  }
238
- for (const { type, method } of getHandlerEntries(ctor, ON_EVENT_ENTRIES)) {
239
- mergedEvent.set(type, method);
272
+ const record = instance;
273
+ for (const [type, method] of mergedCommand) {
274
+ const raw = record[method];
275
+ if (typeof raw !== 'function') {
276
+ throw new Error(`wireRuntimeBuses: OnCommand handler is not a function: ${method}`);
277
+ }
278
+ const handler = (command) => {
279
+ return raw.call(instance, command);
280
+ };
281
+ disposers.push(buses.commandBus.register(type, handler));
240
282
  }
241
- }
242
- const record = instance;
243
- for (const [type, method] of mergedCommand) {
244
- const raw = record[method];
245
- if (typeof raw !== 'function') {
246
- throw new Error(`wireRuntimeBuses: OnCommand handler is not a function: ${method}`);
283
+ for (const [type, method] of mergedQuery) {
284
+ const raw = record[method];
285
+ if (typeof raw !== 'function') {
286
+ throw new Error(`wireRuntimeBuses: OnQuery handler is not a function: ${method}`);
287
+ }
288
+ const handler = (query) => {
289
+ return raw.call(instance, query);
290
+ };
291
+ disposers.push(buses.queryBus.register(type, handler));
247
292
  }
248
- const handler = (command) => {
249
- return raw.call(instance, command);
250
- };
251
- disposers.push(buses.commandBus.register(type, handler));
252
- }
253
- for (const [type, method] of mergedQuery) {
254
- const raw = record[method];
255
- if (typeof raw !== 'function') {
256
- throw new Error(`wireRuntimeBuses: OnQuery handler is not a function: ${method}`);
293
+ for (const [type, methods] of mergedEvent) {
294
+ for (const method of methods) {
295
+ const raw = record[method];
296
+ if (typeof raw !== 'function') {
297
+ throw new Error(`wireRuntimeBuses: OnEvent handler is not a function: ${method}`);
298
+ }
299
+ const handler = (event) => {
300
+ raw.call(instance, event);
301
+ };
302
+ disposers.push(buses.eventBus.subscribe(type, handler));
303
+ }
257
304
  }
258
- const handler = (query) => {
259
- return raw.call(instance, query);
260
- };
261
- disposers.push(buses.queryBus.register(type, handler));
262
305
  }
263
- for (const [type, method] of mergedEvent) {
264
- const raw = record[method];
265
- if (typeof raw !== 'function') {
266
- throw new Error(`wireRuntimeBuses: OnEvent handler is not a function: ${method}`);
306
+ catch (wiringError) {
307
+ const { cleanupErrors } = unwindDisposers(disposers);
308
+ const primary = wiringError instanceof Error ? wiringError : new Error(String(wiringError));
309
+ if (cleanupErrors.length > 0) {
310
+ primary.cleanupErrors = cleanupErrors;
267
311
  }
268
- const handler = (event) => {
269
- raw.call(instance, event);
270
- };
271
- disposers.push(buses.eventBus.subscribe(type, handler));
312
+ throw primary;
272
313
  }
314
+ let disposed = false;
273
315
  return () => {
274
- for (const dispose of disposers.reverse()) {
275
- dispose();
316
+ if (disposed) {
317
+ return;
318
+ }
319
+ disposed = true;
320
+ const { cleanupErrors } = unwindDisposers(disposers);
321
+ if (cleanupErrors.length > 0) {
322
+ const aggregateError = new Error(`wireRuntimeBuses: disposer cleanup encountered ${cleanupErrors.length} error(s)`);
323
+ aggregateError.cleanupErrors = cleanupErrors;
324
+ throw aggregateError;
276
325
  }
277
326
  };
278
327
  }
279
328
  /**
280
329
  * Wires multiple instances to one bus bundle: calls {@link wireRuntimeBuses} for each.
281
330
  * Order in `instances` defines wiring order; the disposer unregisters in reverse order.
331
+ * Wiring is transactional: if a later instance fails to wire, all earlier instances are unwound
332
+ * in reverse order. The returned disposer is idempotent and continues cleanup even if an
333
+ * individual disposer throws.
282
334
  *
283
335
  * @template TCommand
284
336
  * @template TQuery
@@ -289,13 +341,31 @@ function wireRuntimeBuses(instance, buses) {
289
341
  */
290
342
  function wireRuntimeBusesAll(buses, instances) {
291
343
  const disposers = [];
292
- for (let i = 0; i < instances.length; i += 1) {
293
- const instance = instances[i];
294
- disposers.push(wireRuntimeBuses(instance, buses));
344
+ try {
345
+ for (let i = 0; i < instances.length; i += 1) {
346
+ const instance = instances[i];
347
+ disposers.push(wireRuntimeBuses(instance, buses));
348
+ }
349
+ }
350
+ catch (wiringError) {
351
+ const { cleanupErrors } = unwindDisposers(disposers);
352
+ const primary = wiringError instanceof Error ? wiringError : new Error(String(wiringError));
353
+ if (cleanupErrors.length > 0) {
354
+ primary.cleanupErrors = cleanupErrors;
355
+ }
356
+ throw primary;
295
357
  }
358
+ let disposed = false;
296
359
  return () => {
297
- for (let j = disposers.length - 1; j >= 0; j -= 1) {
298
- disposers[j]();
360
+ if (disposed) {
361
+ return;
362
+ }
363
+ disposed = true;
364
+ const { cleanupErrors } = unwindDisposers(disposers);
365
+ if (cleanupErrors.length > 0) {
366
+ const aggregateError = new Error(`wireRuntimeBusesAll: disposer cleanup encountered ${cleanupErrors.length} error(s)`);
367
+ aggregateError.cleanupErrors = cleanupErrors;
368
+ throw aggregateError;
299
369
  }
300
370
  };
301
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BusDecorators.js","sourceRoot":"","sources":["../../src/runtime/BusDecorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BusDecorators.js","sourceRoot":"","sources":["../../src/runtime/BusDecorators.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export declare class CommandBus<TCommand extends RuntimeCommand = RuntimeCommand
14
14
  *
15
15
  * @param {TCommand['type']} commandType - command type
16
16
  * @param {CommandHandler<TCommand, TResult>} handler - command handler
17
- * @returns {() => void} unregister function
17
+ * @returns {() => void} unregister function; no-op if a different handler is now registered for the type
18
18
  * @throws {Error} if a handler is already registered
19
19
  */
20
20
  register<TResult>(commandType: TCommand['type'], handler: CommandHandler<TCommand, TResult>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBus.d.ts","sourceRoot":"","sources":["../../src/runtime/CommandBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,qBAAa,UAAU,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,GACzC,MAAM,IAAI;IAWb;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnE;;;;;OAKG;IACI,UAAU,CAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAIvD;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAGtB"}
1
+ {"version":3,"file":"CommandBus.d.ts","sourceRoot":"","sources":["../../src/runtime/CommandBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,qBAAa,UAAU,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,GACzC,MAAM,IAAI;IAcb;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnE;;;;;OAKG;IACI,UAAU,CAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAIvD;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAGtB"}
@@ -16,16 +16,19 @@ class CommandBus {
16
16
  *
17
17
  * @param {TCommand['type']} commandType - command type
18
18
  * @param {CommandHandler<TCommand, TResult>} handler - command handler
19
- * @returns {() => void} unregister function
19
+ * @returns {() => void} unregister function; no-op if a different handler is now registered for the type
20
20
  * @throws {Error} if a handler is already registered
21
21
  */
22
22
  register(commandType, handler) {
23
23
  if (this.handlers.has(commandType)) {
24
24
  throw new Error(`Command handler is already registered: ${commandType}`);
25
25
  }
26
- this.handlers.set(commandType, handler);
26
+ const registered = handler;
27
+ this.handlers.set(commandType, registered);
27
28
  return () => {
28
- this.unregister(commandType);
29
+ if (this.handlers.get(commandType) === registered) {
30
+ this.handlers.delete(commandType);
31
+ }
29
32
  };
30
33
  }
31
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBus.js","sourceRoot":"","sources":["../../src/runtime/CommandBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,UAAU;IACJ,QAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAEjF;;;;;;;OAOG;IACI,QAAQ,CACb,WAA6B,EAC7B,OAA0C;QAE1C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,OAA4C,CAAC,CAAC;QAC7E,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAW,OAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,WAA6B;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA5DD,gCA4DC"}
1
+ {"version":3,"file":"CommandBus.js","sourceRoot":"","sources":["../../src/runtime/CommandBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,UAAU;IACJ,QAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAEjF;;;;;;;OAOG;IACI,QAAQ,CACb,WAA6B,EAC7B,OAA0C;QAE1C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,UAAU,GAAG,OAA4C,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE;YACV,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,UAAU,EAAE,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAW,OAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,WAA6B;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA/DD,gCA+DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/runtime/EventBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D;;;;;OAKG;IACI,OAAO,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAapC;;;;;;OAMG;IACI,SAAS,CACd,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,MAAM,IAAI;IAcb;;;;;OAKG;IACI,YAAY,CAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IAO/D;;;;;;OAMG;IACI,WAAW,CAChB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,IAAI;IAYP;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAItB"}
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/runtime/EventBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D;;;;;OAKG;IACI,OAAO,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAsBpC;;;;;;OAMG;IACI,SAAS,CACd,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,MAAM,IAAI;IAcb;;;;;OAKG;IACI,YAAY,CAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IAO/D;;;;;;OAMG;IACI,WAAW,CAChB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,IAAI;IAYP;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAItB"}
@@ -19,13 +19,21 @@ class EventBus {
19
19
  * @returns {void}
20
20
  */
21
21
  publish(event) {
22
+ // Snapshot both sets before invoke so unsubscribe of a not-yet-called handler
23
+ // during this publish cannot silently skip that handler for the current event.
24
+ // Any-handlers must be snapshotted before typed handlers run: a typed handler
25
+ // that unsubscribes an any-handler would otherwise drop it for this event.
22
26
  const typedHandlers = this.handlersByType.get(event.type);
23
- if (typeof typedHandlers !== 'undefined') {
24
- for (const handler of typedHandlers) {
27
+ const typedSnapshot = typeof typedHandlers === 'undefined'
28
+ ? null
29
+ : [...typedHandlers];
30
+ const anySnapshot = [...this.anyHandlers];
31
+ if (typedSnapshot !== null) {
32
+ for (const handler of typedSnapshot) {
25
33
  handler(event);
26
34
  }
27
35
  }
28
- for (const handler of this.anyHandlers) {
36
+ for (const handler of anySnapshot) {
29
37
  handler(event);
30
38
  }
31
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventBus.js","sourceRoot":"","sources":["../../src/runtime/EventBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC9D,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE/D;;;;;OAKG;IACI,OAAO,CAAE,KAAa;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,OAAO,aAAa,KAAK,WAAW,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CACd,SAAyB,EACzB,OAA6B;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,WAAW;YAC7C,CAAC,CAAC,IAAI,GAAG,EAAwB;YACjC,CAAC,CAAC,OAAO,CAAC;QAEZ,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE7C,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAE,OAA6B;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAChB,SAAyB,EACzB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AA3FD,4BA2FC"}
1
+ {"version":3,"file":"EventBus.js","sourceRoot":"","sources":["../../src/runtime/EventBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC9D,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE/D;;;;;OAKG;IACI,OAAO,CAAE,KAAa;QAC3B,8EAA8E;QAC9E,+EAA+E;QAC/E,8EAA8E;QAC9E,2EAA2E;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,aAAa,KAAK,WAAW;YACxD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;QACvB,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CACd,SAAyB,EACzB,OAA6B;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,WAAW;YAC7C,CAAC,CAAC,IAAI,GAAG,EAAwB;YACjC,CAAC,CAAC,OAAO,CAAC;QAEZ,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE7C,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAE,OAA6B;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAChB,SAAyB,EACzB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AApGD,4BAoGC"}
@@ -56,6 +56,7 @@ export declare function UseRef(): PropertyDecorator;
56
56
  */
57
57
  export declare class HandleRegistry {
58
58
  private readonly handles;
59
+ private getInheritedMetadata;
59
60
  private buildRefHandle;
60
61
  private resolveHandleKey;
61
62
  /**
@@ -77,7 +78,7 @@ export declare class HandleRegistry {
77
78
  *
78
79
  * @param {string} key - handle key
79
80
  * @param {THandle} handle - imperative API object
80
- * @returns {() => void} unregister function
81
+ * @returns {() => void} unregister function; no-op if a different handle is now registered under the same key
81
82
  */
82
83
  register<THandle>(key: string, handle: THandle): () => void;
83
84
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HandleRegistry.d.ts","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,kBAAkB,CAAC;AAM1B,MAAM,MAAM,mBAAmB,CAAC,SAAS,GAAG,OAAO,IAC/C,MAAM,GACN,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAG,OAAO,EAC5C,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAC3C,cAAc,CAIhB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAK,eAAe,CAmBtD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,IAAK,iBAAiB,CAS3C;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;;;;OASG;IACI,YAAY,CAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,IAAI;IAMnD;;;;;;;;;OASG;IACI,QAAQ,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI;IAOnE;;;;;;;;OAQG;IACI,UAAU,CAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;OAOG;IACI,GAAG,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAItD;;;;;;;;;;OAUG;IACI,OAAO,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ9C;;;;;;;;OAQG;IACI,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;;;;OAOG;IACI,IAAI,IAAK,MAAM,EAAE;IAIxB;;;;;;;OAOG;IACI,KAAK,IAAK,IAAI;CAGtB"}
1
+ {"version":3,"file":"HandleRegistry.d.ts","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,kBAAkB,CAAC;AAM1B,MAAM,MAAM,mBAAmB,CAAC,SAAS,GAAG,OAAO,IAC/C,MAAM,GACN,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAG,OAAO,EAC5C,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAC3C,cAAc,CAIhB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAK,eAAe,CAmBtD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,IAAK,iBAAiB,CAS3C;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,cAAc;IAsDtB,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;;;;OASG;IACI,YAAY,CAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,IAAI;IAMnD;;;;;;;;;OASG;IACI,QAAQ,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI;IASnE;;;;;;;;OAQG;IACI,UAAU,CAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;OAOG;IACI,GAAG,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAItD;;;;;;;;;;OAUG;IACI,OAAO,CAAC,OAAO,EAAG,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ9C;;;;;;;;OAQG;IACI,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;;;;OAOG;IACI,IAAI,IAAK,MAAM,EAAE;IAIxB;;;;;;;OAOG;IACI,KAAK,IAAK,IAAI;CAGtB"}
@@ -62,7 +62,7 @@ function UseImperativeHandle() {
62
62
  return;
63
63
  }
64
64
  const ctor = target.constructor;
65
- const current = Reflect.getMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, ctor);
65
+ const current = Reflect.getOwnMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, ctor);
66
66
  const next = typeof current === 'undefined'
67
67
  ? new Set()
68
68
  : new Set(current);
@@ -89,6 +89,21 @@ function UseRef() {
89
89
  */
90
90
  class HandleRegistry {
91
91
  handles = new Map();
92
+ getInheritedMetadata(ctor, metaKey) {
93
+ let current = ctor;
94
+ while (current != null && typeof current === 'function') {
95
+ const value = Reflect.getOwnMetadata(metaKey, current);
96
+ if (value !== undefined) {
97
+ return value;
98
+ }
99
+ const next = Object.getPrototypeOf(current);
100
+ if (typeof next !== 'function' || next === null) {
101
+ break;
102
+ }
103
+ current = next;
104
+ }
105
+ return undefined;
106
+ }
92
107
  buildRefHandle(instance) {
93
108
  const ctor = instance !== null && typeof instance === 'object'
94
109
  ? instance.constructor
@@ -96,7 +111,7 @@ class HandleRegistry {
96
111
  if (typeof ctor !== 'function') {
97
112
  throw new Error('HandleRegistry.autoRegister: invalid instance');
98
113
  }
99
- const refPropertyKey = Reflect.getMetadata(USE_REF_PROPERTY_METADATA_KEY, ctor);
114
+ const refPropertyKey = this.getInheritedMetadata(ctor, USE_REF_PROPERTY_METADATA_KEY);
100
115
  if (typeof refPropertyKey === 'undefined') {
101
116
  throw new Error('HandleRegistry.autoRegister: missing ref property metadata (@UseRef)');
102
117
  }
@@ -104,8 +119,22 @@ class HandleRegistry {
104
119
  if (typeof ref !== 'object' || ref === null) {
105
120
  throw new Error('HandleRegistry.autoRegister: ref property is not an object');
106
121
  }
107
- const methodNames = Reflect.getMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, ctor);
108
- if (typeof methodNames === 'undefined' || methodNames.size === 0) {
122
+ const methodNames = new Set();
123
+ let current = ctor;
124
+ while (current != null && typeof current === 'function') {
125
+ const ownMethods = Reflect.getOwnMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, current);
126
+ if (ownMethods !== undefined) {
127
+ for (const methodName of ownMethods) {
128
+ methodNames.add(methodName);
129
+ }
130
+ }
131
+ const next = Object.getPrototypeOf(current);
132
+ if (typeof next !== 'function' || next === null) {
133
+ break;
134
+ }
135
+ current = next;
136
+ }
137
+ if (methodNames.size === 0) {
109
138
  throw new Error('HandleRegistry.autoRegister: no @UseImperativeHandle methods');
110
139
  }
111
140
  for (const methodName of methodNames) {
@@ -124,7 +153,7 @@ class HandleRegistry {
124
153
  if (typeof ctor !== 'function') {
125
154
  throw new Error('HandleRegistry.autoRegister: invalid instance');
126
155
  }
127
- const keyOrFactory = Reflect.getMetadata(USE_REF_METADATA_KEY, ctor);
156
+ const keyOrFactory = this.getInheritedMetadata(ctor, USE_REF_METADATA_KEY);
128
157
  if (typeof keyOrFactory === 'undefined') {
129
158
  throw new Error('HandleRegistry.autoRegister: missing @UseRef metadata');
130
159
  }
@@ -156,12 +185,14 @@ class HandleRegistry {
156
185
  *
157
186
  * @param {string} key - handle key
158
187
  * @param {THandle} handle - imperative API object
159
- * @returns {() => void} unregister function
188
+ * @returns {() => void} unregister function; no-op if a different handle is now registered under the same key
160
189
  */
161
190
  register(key, handle) {
162
191
  this.handles.set(key, handle);
163
192
  return () => {
164
- this.unregister(key);
193
+ if (this.handles.get(key) === handle) {
194
+ this.handles.delete(key);
195
+ }
165
196
  };
166
197
  }
167
198
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HandleRegistry.js","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleRegistry.js","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export declare class QueryBus<TQuery extends RuntimeQuery = RuntimeQuery> {
14
14
  *
15
15
  * @param {TQuery['type']} queryType - query type
16
16
  * @param {QueryHandler<TQuery, TResult>} handler - query handler
17
- * @returns {() => void} unregister function
17
+ * @returns {() => void} unregister function; no-op if a different handler is now registered for the type
18
18
  * @throws {Error} if a handler is already registered
19
19
  */
20
20
  register<TResult>(queryType: TQuery['type'], handler: QueryHandler<TQuery, TResult>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBus.d.ts","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAE7E;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,MAAM,IAAI;IAWb;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAG,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;;;;OAKG;IACI,UAAU,CAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;IAInD;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAGtB"}
1
+ {"version":3,"file":"QueryBus.d.ts","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAE7E;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,MAAM,IAAI;IAcb;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAG,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;;;;OAKG;IACI,UAAU,CAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;IAInD;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAGtB"}
@@ -16,16 +16,19 @@ class QueryBus {
16
16
  *
17
17
  * @param {TQuery['type']} queryType - query type
18
18
  * @param {QueryHandler<TQuery, TResult>} handler - query handler
19
- * @returns {() => void} unregister function
19
+ * @returns {() => void} unregister function; no-op if a different handler is now registered for the type
20
20
  * @throws {Error} if a handler is already registered
21
21
  */
22
22
  register(queryType, handler) {
23
23
  if (this.handlers.has(queryType)) {
24
24
  throw new Error(`Query handler is already registered: ${queryType}`);
25
25
  }
26
- this.handlers.set(queryType, handler);
26
+ const registered = handler;
27
+ this.handlers.set(queryType, registered);
27
28
  return () => {
28
- this.unregister(queryType);
29
+ if (this.handlers.get(queryType) === registered) {
30
+ this.handlers.delete(queryType);
31
+ }
29
32
  };
30
33
  }
31
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBus.js","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE7E;;;;;;;OAOG;IACI,QAAQ,CACb,SAAyB,EACzB,OAAsC;QAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAwC,CAAC,CAAC;QACvE,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAW,KAAa;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,SAAyB;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA5DD,4BA4DC"}
1
+ {"version":3,"file":"QueryBus.js","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE7E;;;;;;;OAOG;IACI,QAAQ,CACb,SAAyB,EACzB,OAAsC;QAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,OAAwC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE;YACV,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAW,KAAa;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,SAAyB;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA/DD,4BA+DC"}