@spine-event-engine/server 2.0.0-snapshot.2 → 2.0.0-snapshot.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +225 -518
  2. package/REFERENCE.md +498 -49
  3. package/dist/browser/browser-server.d.ts +95 -0
  4. package/dist/browser/browser-server.d.ts.map +1 -0
  5. package/dist/{server → browser}/browser-server.js +93 -7
  6. package/dist/browser/browser-server.js.map +1 -0
  7. package/dist/browser/durable-subscription-bindings.d.ts.map +1 -0
  8. package/dist/browser/durable-subscription-bindings.js.map +1 -0
  9. package/dist/browser/index.d.ts +12 -0
  10. package/dist/browser/index.d.ts.map +1 -0
  11. package/dist/browser/index.js +24 -0
  12. package/dist/browser/index.js.map +1 -0
  13. package/dist/browser/options.d.ts +183 -0
  14. package/dist/browser/options.d.ts.map +1 -0
  15. package/dist/browser/options.js +15 -0
  16. package/dist/browser/options.js.map +1 -0
  17. package/dist/bus/command-bus.d.ts +2 -0
  18. package/dist/bus/command-bus.d.ts.map +1 -1
  19. package/dist/bus/command-bus.js +36 -1
  20. package/dist/bus/command-bus.js.map +1 -1
  21. package/dist/bus/event-dispatcher-registry.d.ts +2 -2
  22. package/dist/bus/event-dispatcher-registry.js +3 -3
  23. package/dist/bus/event-dispatcher-registry.js.map +1 -1
  24. package/dist/context/bounded-context.d.ts +238 -83
  25. package/dist/context/bounded-context.d.ts.map +1 -1
  26. package/dist/context/bounded-context.js +1083 -286
  27. package/dist/context/bounded-context.js.map +1 -1
  28. package/dist/context/effective-tenant.d.ts +9 -0
  29. package/dist/context/effective-tenant.d.ts.map +1 -0
  30. package/dist/context/effective-tenant.js +58 -0
  31. package/dist/context/effective-tenant.js.map +1 -0
  32. package/dist/context/entity-inbox.d.ts.map +1 -1
  33. package/dist/context/entity-inbox.js +24 -17
  34. package/dist/context/entity-inbox.js.map +1 -1
  35. package/dist/context/local-inbox-handoff.d.ts +7 -3
  36. package/dist/context/local-inbox-handoff.d.ts.map +1 -1
  37. package/dist/context/local-inbox-handoff.js +32 -26
  38. package/dist/context/local-inbox-handoff.js.map +1 -1
  39. package/dist/context/projection-handoff.d.ts.map +1 -1
  40. package/dist/context/projection-handoff.js +36 -31
  41. package/dist/context/projection-handoff.js.map +1 -1
  42. package/dist/context/tenant-index.d.ts.map +1 -1
  43. package/dist/context/tenant-index.js +72 -2
  44. package/dist/context/tenant-index.js.map +1 -1
  45. package/dist/delivery/delivery-ports.d.ts +14 -4
  46. package/dist/delivery/delivery-ports.d.ts.map +1 -1
  47. package/dist/delivery/delivery.d.ts +19 -21
  48. package/dist/delivery/delivery.d.ts.map +1 -1
  49. package/dist/delivery/delivery.js +541 -158
  50. package/dist/delivery/delivery.js.map +1 -1
  51. package/dist/delivery/inbox-storage.d.ts +12 -3
  52. package/dist/delivery/inbox-storage.d.ts.map +1 -1
  53. package/dist/delivery/inbox-storage.js +160 -67
  54. package/dist/delivery/inbox-storage.js.map +1 -1
  55. package/dist/delivery/inbox.d.ts +9 -0
  56. package/dist/delivery/inbox.d.ts.map +1 -1
  57. package/dist/delivery/inbox.js +11 -0
  58. package/dist/delivery/inbox.js.map +1 -1
  59. package/dist/delivery/sharded-work-registry.d.ts.map +1 -1
  60. package/dist/delivery/sharded-work-registry.js +2 -1
  61. package/dist/delivery/sharded-work-registry.js.map +1 -1
  62. package/dist/entity/entity-metadata.d.ts +14 -5
  63. package/dist/entity/entity-metadata.d.ts.map +1 -1
  64. package/dist/entity/entity-metadata.js +38 -2
  65. package/dist/entity/entity-metadata.js.map +1 -1
  66. package/dist/entity/entity-storage-descriptor.d.ts +25 -5
  67. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -1
  68. package/dist/entity/entity-storage-descriptor.js +69 -23
  69. package/dist/entity/entity-storage-descriptor.js.map +1 -1
  70. package/dist/entity/entity-transaction.d.ts +46 -42
  71. package/dist/entity/entity-transaction.d.ts.map +1 -1
  72. package/dist/entity/entity-transaction.js +130 -35
  73. package/dist/entity/entity-transaction.js.map +1 -1
  74. package/dist/entity/entity.d.ts +243 -98
  75. package/dist/entity/entity.d.ts.map +1 -1
  76. package/dist/entity/entity.js +405 -226
  77. package/dist/entity/entity.js.map +1 -1
  78. package/dist/entity/spec-scanner.d.ts +13 -1
  79. package/dist/entity/spec-scanner.d.ts.map +1 -1
  80. package/dist/entity/spec-scanner.js +20 -3
  81. package/dist/entity/spec-scanner.js.map +1 -1
  82. package/dist/handler/command-registration-readiness.d.ts +6 -6
  83. package/dist/handler/command-registration-readiness.d.ts.map +1 -1
  84. package/dist/handler/command-registration-readiness.js +4 -2
  85. package/dist/handler/command-registration-readiness.js.map +1 -1
  86. package/dist/handler/declared-rejections.d.ts +11 -0
  87. package/dist/handler/declared-rejections.d.ts.map +1 -0
  88. package/dist/handler/declared-rejections.js +34 -0
  89. package/dist/handler/declared-rejections.js.map +1 -0
  90. package/dist/handler/event-registration-readiness.d.ts +13 -56
  91. package/dist/handler/event-registration-readiness.d.ts.map +1 -1
  92. package/dist/handler/event-registration-readiness.js +23 -43
  93. package/dist/handler/event-registration-readiness.js.map +1 -1
  94. package/dist/handler/generated-handler-registry.d.ts +72 -33
  95. package/dist/handler/generated-handler-registry.d.ts.map +1 -1
  96. package/dist/handler/generated-handler-registry.js +421 -43
  97. package/dist/handler/generated-handler-registry.js.map +1 -1
  98. package/dist/handler/generated-registry-discovery.d.ts.map +1 -1
  99. package/dist/handler/generated-registry-discovery.js +2 -4
  100. package/dist/handler/generated-registry-discovery.js.map +1 -1
  101. package/dist/handler/handler-decorators.d.ts +91 -37
  102. package/dist/handler/handler-decorators.d.ts.map +1 -1
  103. package/dist/handler/handler-decorators.js +124 -31
  104. package/dist/handler/handler-decorators.js.map +1 -1
  105. package/dist/handler/handler-metadata.d.ts +105 -60
  106. package/dist/handler/handler-metadata.d.ts.map +1 -1
  107. package/dist/handler/handler-metadata.js +275 -57
  108. package/dist/handler/handler-metadata.js.map +1 -1
  109. package/dist/handler/registration-readiness-metadata.d.ts +4 -0
  110. package/dist/handler/registration-readiness-metadata.d.ts.map +1 -1
  111. package/dist/handler/registration-readiness-metadata.js +84 -2
  112. package/dist/handler/registration-readiness-metadata.js.map +1 -1
  113. package/dist/handler/standalone.d.ts +25 -0
  114. package/dist/handler/standalone.d.ts.map +1 -0
  115. package/dist/handler/standalone.js +38 -0
  116. package/dist/handler/standalone.js.map +1 -0
  117. package/dist/index.d.ts +9 -9
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +3 -3
  120. package/dist/index.js.map +1 -1
  121. package/dist/repository/command-routing.d.ts +63 -10
  122. package/dist/repository/command-routing.d.ts.map +1 -1
  123. package/dist/repository/command-routing.js +41 -8
  124. package/dist/repository/command-routing.js.map +1 -1
  125. package/dist/repository/event-routing.d.ts +64 -9
  126. package/dist/repository/event-routing.d.ts.map +1 -1
  127. package/dist/repository/event-routing.js +42 -7
  128. package/dist/repository/event-routing.js.map +1 -1
  129. package/dist/repository/primitive-id.d.ts +12 -23
  130. package/dist/repository/primitive-id.d.ts.map +1 -1
  131. package/dist/repository/primitive-id.js +2 -27
  132. package/dist/repository/primitive-id.js.map +1 -1
  133. package/dist/repository/repository.d.ts +317 -87
  134. package/dist/repository/repository.d.ts.map +1 -1
  135. package/dist/repository/repository.js +3746 -856
  136. package/dist/repository/repository.js.map +1 -1
  137. package/dist/repository/state-update-routing.d.ts +67 -8
  138. package/dist/repository/state-update-routing.d.ts.map +1 -1
  139. package/dist/repository/state-update-routing.js +45 -6
  140. package/dist/repository/state-update-routing.js.map +1 -1
  141. package/dist/runtime/runtime.js +1 -1
  142. package/dist/runtime/runtime.js.map +1 -1
  143. package/dist/runtime/signal-metadata.d.ts +22 -47
  144. package/dist/runtime/signal-metadata.d.ts.map +1 -1
  145. package/dist/runtime/signal-metadata.js +34 -69
  146. package/dist/runtime/signal-metadata.js.map +1 -1
  147. package/dist/runtime/signal-publisher.d.ts +144 -0
  148. package/dist/runtime/signal-publisher.d.ts.map +1 -0
  149. package/dist/runtime/signal-publisher.js +248 -0
  150. package/dist/runtime/signal-publisher.js.map +1 -0
  151. package/dist/runtime/standalone-handler-runtime.d.ts +130 -0
  152. package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -0
  153. package/dist/runtime/standalone-handler-runtime.js +382 -0
  154. package/dist/runtime/standalone-handler-runtime.js.map +1 -0
  155. package/dist/server/environment-attachment.d.ts.map +1 -1
  156. package/dist/server/environment-attachment.js +2 -1
  157. package/dist/server/environment-attachment.js.map +1 -1
  158. package/dist/server/environment-delivery-worker.d.ts.map +1 -1
  159. package/dist/server/environment-delivery-worker.js +21 -12
  160. package/dist/server/environment-delivery-worker.js.map +1 -1
  161. package/dist/server/managed-server-application.d.ts +4 -1
  162. package/dist/server/managed-server-application.d.ts.map +1 -1
  163. package/dist/server/managed-server-application.js +2 -2
  164. package/dist/server/managed-server-application.js.map +1 -1
  165. package/dist/server/node-coordinator.js +2 -2
  166. package/dist/server/node-coordinator.js.map +1 -1
  167. package/dist/server/server-log.d.ts.map +1 -1
  168. package/dist/server/server-log.js +4 -0
  169. package/dist/server/server-log.js.map +1 -1
  170. package/dist/server/server.d.ts +9 -177
  171. package/dist/server/server.d.ts.map +1 -1
  172. package/dist/server/server.js +428 -178
  173. package/dist/server/server.js.map +1 -1
  174. package/dist/services/query-reader.d.ts +19 -0
  175. package/dist/services/query-reader.d.ts.map +1 -0
  176. package/dist/services/query-reader.js +43 -0
  177. package/dist/services/query-reader.js.map +1 -0
  178. package/dist/services/registered-targets.d.ts +73 -0
  179. package/dist/services/registered-targets.d.ts.map +1 -0
  180. package/dist/services/registered-targets.js +127 -0
  181. package/dist/services/registered-targets.js.map +1 -0
  182. package/dist/services/spine-services.d.ts +26 -12
  183. package/dist/services/spine-services.d.ts.map +1 -1
  184. package/dist/services/spine-services.js +1047 -969
  185. package/dist/services/spine-services.js.map +1 -1
  186. package/dist/spi/delivery.d.ts +5 -0
  187. package/dist/spi/delivery.d.ts.map +1 -0
  188. package/dist/spi/delivery.js +18 -0
  189. package/dist/spi/delivery.js.map +1 -0
  190. package/dist/spi/handler-registry.d.ts +8 -0
  191. package/dist/spi/handler-registry.d.ts.map +1 -0
  192. package/dist/spi/handler-registry.js +15 -0
  193. package/dist/spi/handler-registry.js.map +1 -0
  194. package/dist/stand/stand.d.ts +73 -1
  195. package/dist/stand/stand.d.ts.map +1 -1
  196. package/dist/stand/stand.js +221 -48
  197. package/dist/stand/stand.js.map +1 -1
  198. package/dist/stand/subscription-observer.d.ts.map +1 -1
  199. package/dist/stand/subscription-observer.js +5 -12
  200. package/dist/stand/subscription-observer.js.map +1 -1
  201. package/dist/stand/subscription-registry.js +1 -1
  202. package/dist/stand/subscription-registry.js.map +1 -1
  203. package/dist/testing/index.d.ts +25 -3
  204. package/dist/testing/index.d.ts.map +1 -1
  205. package/dist/testing/index.js +23 -3
  206. package/dist/testing/index.js.map +1 -1
  207. package/dist/tsconfig.tsbuildinfo +1 -1
  208. package/package.json +33 -23
  209. package/dist/handler/build-time-handler-analyzer.d.ts +0 -150
  210. package/dist/handler/build-time-handler-analyzer.d.ts.map +0 -1
  211. package/dist/handler/build-time-handler-analyzer.js +0 -1101
  212. package/dist/handler/build-time-handler-analyzer.js.map +0 -1
  213. package/dist/handler/generated-registry-writer.d.ts +0 -58
  214. package/dist/handler/generated-registry-writer.d.ts.map +0 -1
  215. package/dist/handler/generated-registry-writer.js +0 -458
  216. package/dist/handler/generated-registry-writer.js.map +0 -1
  217. package/dist/handler/handler-codegen.d.ts +0 -48
  218. package/dist/handler/handler-codegen.d.ts.map +0 -1
  219. package/dist/handler/handler-codegen.js +0 -214
  220. package/dist/handler/handler-codegen.js.map +0 -1
  221. package/dist/server/browser-server.d.ts +0 -49
  222. package/dist/server/browser-server.d.ts.map +0 -1
  223. package/dist/server/browser-server.js.map +0 -1
  224. package/dist/server/durable-subscription-bindings.d.ts.map +0 -1
  225. package/dist/server/durable-subscription-bindings.js.map +0 -1
  226. /package/dist/{server → browser}/durable-subscription-bindings.d.ts +0 -0
  227. /package/dist/{server → browser}/durable-subscription-bindings.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"command-routing.js","sourceRoot":"","sources":["../../src/repository/command-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA6C,MAAM,0BAA0B,CAAC;AAErF,OAAO,EACL,mBAAmB,GAKpB,MAAM,2BAA2B,CAAC;AAuBnC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAwC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB,kBAAkB;IAElB;;OAEG;IACH;QACE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAoB,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,cAAc,EAAM,CAAC;IAClC,CAAC;IAuBD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,aAA8E,EAC9E,GAAqB;QAErB,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,KAAK,CACvB,KAAK,EACL,aAAa,EACb,GAAG,EACH,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAAqB;QAClC,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,mBAAmB,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAK/B,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,CAAK,OAA2B;QACnC,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAA4B,CAAC;IAC/D,CAAC;IACD,QAAQ,CACN,OAAuC;QAEvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAoB,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"command-routing.js","sourceRoot":"","sources":["../../src/repository/command-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA6C,MAAM,0BAA0B,CAAC;AAOrF,OAAO,EACL,mBAAmB,GAKpB,MAAM,2BAA2B,CAAC;AAmCnC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAwC,CAAC;AAC1E,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAgC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IASzB,kBAAkB;IAElB;;;;OAIG;IACH,YAAoB,UAAuB;QACzC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAoB,CAAC,CAAC;QACxE,IAAI,UAAU,KAAK,SAAS;YAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAqBD;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,UAAuB;QAEvB,OAAO,IAAI,cAAc,CAAiB,UAAU,CAAC,CAAC;IACxD,CAAC;IAiCD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,aAA8E,EAC9E,GAAqB;QAErB,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,KAAK,CACvB,KAAK,EACL,aAAa,EACb,GAAG,EACH,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAAgD;QAC7D,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,mBAAmB,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAgC/B,MAAM,CAAC,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,OAA2B;QACpC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,OAAuC;QAEvC,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAA4B,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CACN,OAAwE;QAExE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAoB,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAA4B,CAAC,CAAC;IAC7F,CAAC;CACF,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { MessageShape } from "@bufbuild/protobuf";
2
2
  import { type MessageInterface, type MessageSchema } from "@spine-event-engine/core";
3
3
  import type { EventContext } from "@spine-event-engine/proto";
4
+ import type { RepositoryEntityType, RepositoryReadQueries, RepositoryEntityId } from "./repository.js";
4
5
  import { type InterfaceRouteSchemas, type InterfaceRouteMessage, type RoutingDeclarationSnapshot, type RoutingDeclarationState } from "./routing-declarations.js";
5
6
  /**
6
7
  * Calculates target Entity IDs for one Event admission.
@@ -10,53 +11,84 @@ import { type InterfaceRouteSchemas, type InterfaceRouteMessage, type RoutingDec
10
11
  *
11
12
  * @typeParam Id Entity ID type used by the receiving repository.
12
13
  * @typeParam Schema Generated Event message schema.
14
+ * @typeParam EntityType Registered application Entity class for repository reads.
13
15
  * @param message Unpacked Event message.
14
16
  * @param context Normalized Event context. When the signal omits its context,
15
17
  * the framework supplies the default generated `EventContext` value.
16
- * @returns Up to 1,000 target Entity IDs. The framework validates the complete
18
+ * @param repository Invocation-scoped read-only access to the receiving repository.
19
+ * @returns All target Entity IDs. The framework validates the complete
17
20
  * result, copies and stable-deduplicates its IDs, and freezes the accepted
18
21
  * plan. An empty array deliberately suppresses delivery to this repository.
19
22
  */
20
- export type EventRoute<Id, Schema extends MessageSchema = MessageSchema> = (message: MessageShape<Schema>, context: EventContext) => readonly Id[];
23
+ export type EventRoute<Id, Schema extends MessageSchema = MessageSchema, EntityType extends RepositoryEntityType = RepositoryEntityType> = (message: MessageShape<Schema>, context: EventContext, repository: RepositoryReadQueries<EntityType>) => readonly Id[] | Promise<readonly Id[]>;
24
+ /**
25
+ * Stores mutable Event declarations before repository construction.
26
+ *
27
+ * @typeParam Id Target Entity ID type.
28
+ */
21
29
  type State<Id> = RoutingDeclarationState<EventRoute<Id>>;
22
30
  /**
23
31
  * Mutable Event route declarations snapshotted by repository construction.
32
+ *
33
+ * @typeParam Id Entity ID type used by the receiving repository.
34
+ * @typeParam EntityType Registered application Entity class for repository reads.
24
35
  */
25
- export declare class EventRouting<Id> {
36
+ export declare class EventRouting<Id, EntityType extends RepositoryEntityType = RepositoryEntityType> {
37
+ /**
38
+ * Records the selected Entity class in emitted declarations so a different
39
+ * repository class fails type checking. This adds no runtime field.
40
+ *
41
+ * @param entity Entity class type checked at assignment.
42
+ * @returns The same Entity class type for the assignment check.
43
+ */
44
+ protected readonly entityClassType: (entity: EntityType) => EntityType;
26
45
  /**
27
46
  * Creates empty mutable Event route declarations.
47
+ *
48
+ * @param entityType Application Entity constructor, when class-aware.
28
49
  */
29
50
  private constructor();
30
51
  /**
31
52
  * Creates empty Event route declarations.
32
53
  *
33
- * @typeParam Id Entity ID type used by the receiving repository.
54
+ * @typeParam EntityType Registered application Entity class inferred from the supplied constructor.
55
+ * @param entityType Application Entity constructor for typed repository reads.
34
56
  * @returns Mutable Event route declarations.
35
57
  */
58
+ static create<EntityType extends RepositoryEntityType>(entityType: EntityType): EventRouting<RepositoryEntityId<EntityType>, EntityType>;
59
+ /**
60
+ * Creates ID-only Event route declarations.
61
+ *
62
+ * @typeParam Id Target Entity ID type.
63
+ * @returns Mutable route declarations.
64
+ */
36
65
  static create<Id>(): EventRouting<Id>;
37
66
  /**
38
67
  * Registers a route for one exact generated Event schema.
39
68
  *
69
+ * @typeParam Schema Generated Event schema.
40
70
  * @param schemaOrToken Generated Event schema.
41
71
  * @param via Route that calculates target Entity IDs.
42
72
  * @returns These mutable route declarations.
43
73
  */
44
- route<Schema extends MessageSchema>(schemaOrToken: Schema, via: EventRoute<Id, Schema>): this;
74
+ route<Schema extends MessageSchema>(schemaOrToken: Schema, via: EventRoute<Id, Schema, EntityType>): this;
45
75
  /**
46
76
  * Registers a route for a nominal Event message-interface token.
47
77
  *
78
+ * @typeParam TInterface Declared Event interface.
79
+ * @typeParam Schemas Schemas implementing the interface.
48
80
  * @param schemaOrToken Generated Event message-interface token.
49
81
  * @param via Route that calculates target Entity IDs.
50
82
  * @returns These mutable route declarations.
51
83
  */
52
- route<TInterface extends object, Schemas extends InterfaceRouteSchemas>(schemaOrToken: MessageInterface<TInterface, Schemas>, via: (message: InterfaceRouteMessage<TInterface, Schemas>, context: EventContext) => readonly Id[]): this;
84
+ route<TInterface extends object, Schemas extends InterfaceRouteSchemas>(schemaOrToken: MessageInterface<TInterface, Schemas>, via: (message: InterfaceRouteMessage<TInterface, Schemas>, context: EventContext, repository: RepositoryReadQueries<EntityType>) => readonly Id[] | Promise<readonly Id[]>): this;
53
85
  /**
54
86
  * Replaces the producer-aware default Event route.
55
87
  *
56
88
  * @param via Route that calculates target Entity IDs.
57
89
  * @returns These mutable route declarations.
58
90
  */
59
- replaceDefault(via: EventRoute<Id>): this;
91
+ replaceDefault(via: EventRoute<Id, MessageSchema, EntityType>): this;
60
92
  }
61
93
  /**
62
94
  * Internal access to Event-routing declaration state.
@@ -64,8 +96,31 @@ export declare class EventRouting<Id> {
64
96
  * @internal
65
97
  */
66
98
  export declare const EventRoutingInternals: Readonly<{
67
- state<Id>(routing: EventRouting<Id>): State<Id>;
68
- snapshot<Id>(routing: EventRouting<Id> | undefined): RoutingDeclarationSnapshot<EventRoute<Id>>;
99
+ /**
100
+ * Returns the Entity constructor selected for class-aware declarations, if any.
101
+ *
102
+ * @param routing Route declarations, when configured.
103
+ * @returns Selected Entity constructor, if any.
104
+ */
105
+ entityType(routing: object | undefined): RepositoryEntityType | undefined;
106
+ /**
107
+ * Finds mutable Event declaration state.
108
+ *
109
+ * @typeParam Id Target Entity ID type.
110
+ * @typeParam EntityType Selected application Entity class.
111
+ * @param routing Route declarations.
112
+ * @returns Mutable declaration state.
113
+ */
114
+ state<Id, EntityType extends RepositoryEntityType>(routing: EventRouting<Id, EntityType>): State<Id>;
115
+ /**
116
+ * Copies declarations for repository construction.
117
+ *
118
+ * @typeParam Id Target Entity ID type.
119
+ * @typeParam EntityType Selected application Entity class.
120
+ * @param routing Route declarations, when configured.
121
+ * @returns Immutable declaration snapshot.
122
+ */
123
+ snapshot<Id, EntityType extends RepositoryEntityType>(routing: EventRouting<Id, EntityType> | EventRouting<Id> | undefined): RoutingDeclarationSnapshot<EventRoute<Id>>;
69
124
  }>;
70
125
  export {};
71
126
  //# sourceMappingURL=event-routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-routing.d.ts","sourceRoot":"","sources":["../../src/repository/event-routing.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,CAAC,EAAE,EAAE,MAAM,SAAS,aAAa,GAAG,aAAa,IAAI,CACzE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,YAAY,KAClB,SAAS,EAAE,EAAE,CAAC;AAEnB,KAAK,KAAK,CAAC,EAAE,IAAI,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAGzD;;GAEG;AACH,qBAAa,YAAY,CAAC,EAAE;IAG1B;;OAEG;IACH,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;IAIrC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,SAAS,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI;IAE7F;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,SAAS,MAAM,EAAE,OAAO,SAAS,qBAAqB,EACpE,aAAa,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,EACpD,GAAG,EAAE,CACH,OAAO,EAAE,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,YAAY,KAClB,SAAS,EAAE,EAAE,GACjB,IAAI;IAuCP;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI;CAK1C;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC;IAC3C,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;CACjG,CAUC,CAAC"}
1
+ {"version":3,"file":"event-routing.d.ts","sourceRoot":"","sources":["../../src/repository/event-routing.ts"],"names":[],"mappings":"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"}
@@ -14,25 +14,35 @@
14
14
  import {} from "@spine-event-engine/core";
15
15
  import { RoutingDeclarations, } from "./routing-declarations.js";
16
16
  const states = new WeakMap();
17
+ const routingEntityTypes = new WeakMap();
17
18
  /**
18
19
  * Mutable Event route declarations snapshotted by repository construction.
20
+ *
21
+ * @typeParam Id Entity ID type used by the receiving repository.
22
+ * @typeParam EntityType Registered application Entity class for repository reads.
19
23
  */
20
24
  export class EventRouting {
21
25
  // prettier-ignore
22
26
  /**
23
27
  * Creates empty mutable Event route declarations.
28
+ *
29
+ * @param entityType Application Entity constructor, when class-aware.
24
30
  */
25
- constructor() {
31
+ constructor(entityType) {
26
32
  states.set(this, RoutingDeclarations.create());
33
+ if (entityType !== undefined)
34
+ routingEntityTypes.set(this, entityType);
27
35
  }
28
36
  /**
29
- * Creates empty Event route declarations.
37
+ * Creates mutable Event route declarations for either factory overload.
30
38
  *
31
- * @typeParam Id Entity ID type used by the receiving repository.
32
- * @returns Mutable Event route declarations.
39
+ * @typeParam Id Target Entity ID type.
40
+ * @typeParam EntityType Selected application Entity class.
41
+ * @param entityType Application Entity constructor, when class-aware.
42
+ * @returns Mutable route declarations.
33
43
  */
34
- static create() {
35
- return new EventRouting();
44
+ static create(entityType) {
45
+ return new EventRouting(entityType);
36
46
  }
37
47
  /**
38
48
  * Registers an exact generated Event-schema route or a nominal message-interface route.
@@ -83,14 +93,39 @@ export class EventRouting {
83
93
  * @internal
84
94
  */
85
95
  export const EventRoutingInternals = Object.freeze({
96
+ /**
97
+ * Returns the Entity constructor selected for class-aware declarations, if any.
98
+ *
99
+ * @param routing Route declarations, when configured.
100
+ * @returns Selected Entity constructor, if any.
101
+ */
102
+ entityType(routing) {
103
+ return routing === undefined ? undefined : routingEntityTypes.get(routing);
104
+ },
105
+ /**
106
+ * Finds mutable Event declaration state.
107
+ *
108
+ * @typeParam Id Target Entity ID type.
109
+ * @typeParam EntityType Selected application Entity class.
110
+ * @param routing Route declarations.
111
+ * @returns Mutable declaration state.
112
+ */
86
113
  state(routing) {
87
114
  return states.get(routing);
88
115
  },
116
+ /**
117
+ * Copies declarations for repository construction.
118
+ *
119
+ * @typeParam Id Target Entity ID type.
120
+ * @typeParam EntityType Selected application Entity class.
121
+ * @param routing Route declarations, when configured.
122
+ * @returns Immutable declaration snapshot.
123
+ */
89
124
  snapshot(routing) {
90
125
  if (routing === undefined) {
91
126
  return RoutingDeclarations.snapshot(RoutingDeclarations.create());
92
127
  }
93
- return RoutingDeclarations.snapshot(EventRoutingInternals.state(routing));
128
+ return RoutingDeclarations.snapshot(states.get(routing));
94
129
  },
95
130
  });
96
131
  //# sourceMappingURL=event-routing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-routing.js","sourceRoot":"","sources":["../../src/repository/event-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA6C,MAAM,0BAA0B,CAAC;AAErF,OAAO,EACL,mBAAmB,GAKpB,MAAM,2BAA2B,CAAC;AAuBnC,MAAM,MAAM,GAAG,IAAI,OAAO,EAA0B,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB,kBAAkB;IAElB;;OAEG;IACH;QACE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAkB,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,YAAY,EAAM,CAAC;IAChC,CAAC;IA0BD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,aAA8E,EAC9E,GAAmB;QAEnB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,KAAK,CACvB,KAAK,EACL,aAAa,EACb,GAAG,EACH,kDAAkD,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAAmB;QAChC,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAC/F,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAG7B,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,CAAK,OAAyB;QACjC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IACD,QAAQ,CAAK,OAAqC;QAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAkB,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"event-routing.js","sourceRoot":"","sources":["../../src/repository/event-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA6C,MAAM,0BAA0B,CAAC;AAOrF,OAAO,EACL,mBAAmB,GAKpB,MAAM,2BAA2B,CAAC;AAmCnC,MAAM,MAAM,GAAG,IAAI,OAAO,EAA0B,CAAC;AACrD,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAgC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IASvB,kBAAkB;IAElB;;;;OAIG;IACH,YAAoB,UAAuB;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAkB,CAAC,CAAC;QAC/D,IAAI,UAAU,KAAK,SAAS;YAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAqBD;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,UAAuB;QAEvB,OAAO,IAAI,YAAY,CAAiB,UAAU,CAAC,CAAC;IACtD,CAAC;IAiCD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,aAA8E,EAC9E,GAAmB;QAEnB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,KAAK,CACvB,KAAK,EACL,aAAa,EACb,GAAG,EACH,kDAAkD,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAA8C;QAC3D,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAC/F,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAgC7B,MAAM,CAAC,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,OAA2B;QACpC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,OAAqC;QAErC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CACN,OAAoE;QAEpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAkB,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAc,CAAC,CAAC;IACxE,CAAC;CACF,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type Message } from "@bufbuild/protobuf";
1
2
  import { type Any } from "@bufbuild/protobuf/wkt";
2
3
  /**
3
4
  * Represents a scalar value that may identify an entity.
@@ -37,43 +38,31 @@ export interface PrimitiveIdCodec {
37
38
  unpack(id: Any | undefined): PrimitiveId | undefined;
38
39
  }
39
40
  /**
40
- * Describes the type name and scalar value of a message-shaped identifier.
41
+ * A generated Protobuf message that identifies an entity.
42
+ *
43
+ * The message is validated against the Entity state ID-field schema at the
44
+ * routing boundary. Its complete declared field set is the identifier.
41
45
  */
42
- export interface MessageId {
46
+ export interface MessageId extends Message {
43
47
  /**
44
- * Declares the fully-qualified Protobuf message type name.
48
+ * Fully qualified Protobuf message type name.
45
49
  */
46
50
  readonly $typeName: string;
47
- /**
48
- * Holds the scalar identifier value.
49
- */
50
- readonly value: PrimitiveId;
51
51
  }
52
52
  /**
53
- * Reads and keys message-shaped entity identifiers.
53
+ * Reads message-shaped entity identifiers.
54
54
  */
55
55
  export interface MessageIdCodec {
56
56
  /**
57
- * Reads a message-shaped identifier from an unknown value.
57
+ * Performs shallow message-shape recognition for an unknown identifier.
58
+ *
59
+ * Repository routing validates the recognized message against its target
60
+ * schema before durable use.
58
61
  *
59
62
  * @param value Value to inspect.
60
63
  * @returns Identifier, or `undefined` when the value is malformed.
61
64
  */
62
65
  read(value: unknown): MessageId | undefined;
63
- /**
64
- * Reads the scalar value from a message-shaped identifier.
65
- *
66
- * @param value Value to inspect.
67
- * @returns Scalar identifier, or `undefined` when the value is malformed.
68
- */
69
- readValue(value: unknown): PrimitiveId | undefined;
70
- /**
71
- * Creates a stable storage key for a message-shaped identifier.
72
- *
73
- * @param id Identifier to encode.
74
- * @returns Stable key that distinguishes message type and scalar value type.
75
- */
76
- key(id: MessageId): string;
77
66
  }
78
67
  /**
79
68
  * Provides the default scalar identifier codec.
@@ -1 +1 @@
1
- {"version":3,"file":"primitive-id.d.ts","sourceRoot":"","sources":["../../src/repository/primitive-id.ts"],"names":[],"mappings":"AAeA,OAAO,EAML,KAAK,GAAG,EACT,MAAM,wBAAwB,CAAC;AAIhC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAG/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAE9C;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAEpD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IAGxB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAG7B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAEnD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,gBAsCzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAmBvB,CAAC"}
1
+ {"version":3,"file":"primitive-id.d.ts","sourceRoot":"","sources":["../../src/repository/primitive-id.ts"],"names":[],"mappings":"AAcA,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAML,KAAK,GAAG,EACT,MAAM,wBAAwB,CAAC;AAIhC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAG/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAE9C;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAEpD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAU,SAAQ,OAAO;IAGxC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAG7B;;;;;;;;OAQG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,gBAsCzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAIvB,CAAC"}
@@ -57,19 +57,6 @@ export const MessageIds = Object.freeze({
57
57
  read(value) {
58
58
  return IdValues.message(value);
59
59
  },
60
- readValue(value) {
61
- return IdValues.message(value)?.value;
62
- },
63
- key(id) {
64
- return JSON.stringify({
65
- type: "message",
66
- typeName: id.$typeName,
67
- value: {
68
- type: typeof id.value,
69
- value: id.value,
70
- },
71
- });
72
- },
73
60
  });
74
61
  /**
75
62
  * Validates and decodes values shared by identifier codecs.
@@ -88,23 +75,11 @@ const IdValues = Object.freeze({
88
75
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
89
76
  return false;
90
77
  }
91
- const keys = Object.keys(value);
92
- return (keys.length === 2 &&
93
- keys.includes("$typeName") &&
94
- keys.includes("value") &&
78
+ return (Object.hasOwn(value, "$typeName") &&
95
79
  typeof value.$typeName === "string");
96
80
  },
97
81
  message(value) {
98
- if (!IdValues.isMessage(value)) {
99
- return undefined;
100
- }
101
- const id = PrimitiveIds.readFinite(value.value);
102
- return id === undefined
103
- ? undefined
104
- : {
105
- $typeName: value.$typeName,
106
- value: id,
107
- };
82
+ return IdValues.isMessage(value) ? value : undefined;
108
83
  },
109
84
  });
110
85
  //# sourceMappingURL=primitive-id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitive-id.js","sourceRoot":"","sources":["../../src/repository/primitive-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitive-id.js","sourceRoot":"","sources":["../../src/repository/primitive-id.ts"],"names":[],"mappings":"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"}