@nwire/forge 0.7.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 (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -0
  3. package/dist/__tests__/actor-methods.test.d.ts +9 -0
  4. package/dist/__tests__/actor-methods.test.d.ts.map +1 -0
  5. package/dist/__tests__/actor-methods.test.js +210 -0
  6. package/dist/__tests__/actor-methods.test.js.map +1 -0
  7. package/dist/__tests__/actor-schema-bound.test.d.ts +6 -0
  8. package/dist/__tests__/actor-schema-bound.test.d.ts.map +1 -0
  9. package/dist/__tests__/actor-schema-bound.test.js +112 -0
  10. package/dist/__tests__/actor-schema-bound.test.js.map +1 -0
  11. package/dist/__tests__/app-capabilities.test.d.ts +19 -0
  12. package/dist/__tests__/app-capabilities.test.d.ts.map +1 -0
  13. package/dist/__tests__/app-capabilities.test.js +57 -0
  14. package/dist/__tests__/app-capabilities.test.js.map +1 -0
  15. package/dist/__tests__/cli-runner.test.d.ts +6 -0
  16. package/dist/__tests__/cli-runner.test.d.ts.map +1 -0
  17. package/dist/__tests__/cli-runner.test.js +158 -0
  18. package/dist/__tests__/cli-runner.test.js.map +1 -0
  19. package/dist/__tests__/create-app.test.d.ts +18 -0
  20. package/dist/__tests__/create-app.test.d.ts.map +1 -0
  21. package/dist/__tests__/create-app.test.js +189 -0
  22. package/dist/__tests__/create-app.test.js.map +1 -0
  23. package/dist/__tests__/cross-service-bus.test.d.ts +8 -0
  24. package/dist/__tests__/cross-service-bus.test.d.ts.map +1 -0
  25. package/dist/__tests__/cross-service-bus.test.js +139 -0
  26. package/dist/__tests__/cross-service-bus.test.js.map +1 -0
  27. package/dist/__tests__/define-schema.test.d.ts +5 -0
  28. package/dist/__tests__/define-schema.test.d.ts.map +1 -0
  29. package/dist/__tests__/define-schema.test.js +83 -0
  30. package/dist/__tests__/define-schema.test.js.map +1 -0
  31. package/dist/__tests__/dev-logger.test.d.ts +9 -0
  32. package/dist/__tests__/dev-logger.test.d.ts.map +1 -0
  33. package/dist/__tests__/dev-logger.test.js +126 -0
  34. package/dist/__tests__/dev-logger.test.js.map +1 -0
  35. package/dist/__tests__/external-call.test.d.ts +14 -0
  36. package/dist/__tests__/external-call.test.d.ts.map +1 -0
  37. package/dist/__tests__/external-call.test.js +99 -0
  38. package/dist/__tests__/external-call.test.js.map +1 -0
  39. package/dist/__tests__/framework-events.test.d.ts +13 -0
  40. package/dist/__tests__/framework-events.test.d.ts.map +1 -0
  41. package/dist/__tests__/framework-events.test.js +204 -0
  42. package/dist/__tests__/framework-events.test.js.map +1 -0
  43. package/dist/__tests__/inline-handler.test.d.ts +8 -0
  44. package/dist/__tests__/inline-handler.test.d.ts.map +1 -0
  45. package/dist/__tests__/inline-handler.test.js +101 -0
  46. package/dist/__tests__/inline-handler.test.js.map +1 -0
  47. package/dist/__tests__/lifecycle-logging.test.d.ts +12 -0
  48. package/dist/__tests__/lifecycle-logging.test.d.ts.map +1 -0
  49. package/dist/__tests__/lifecycle-logging.test.js +112 -0
  50. package/dist/__tests__/lifecycle-logging.test.js.map +1 -0
  51. package/dist/__tests__/middleware.test.d.ts +7 -0
  52. package/dist/__tests__/middleware.test.d.ts.map +1 -0
  53. package/dist/__tests__/middleware.test.js +109 -0
  54. package/dist/__tests__/middleware.test.js.map +1 -0
  55. package/dist/__tests__/module-needs.test.d.ts +10 -0
  56. package/dist/__tests__/module-needs.test.d.ts.map +1 -0
  57. package/dist/__tests__/module-needs.test.js +77 -0
  58. package/dist/__tests__/module-needs.test.js.map +1 -0
  59. package/dist/__tests__/module-topo-sort.test.d.ts +15 -0
  60. package/dist/__tests__/module-topo-sort.test.d.ts.map +1 -0
  61. package/dist/__tests__/module-topo-sort.test.js +105 -0
  62. package/dist/__tests__/module-topo-sort.test.js.map +1 -0
  63. package/dist/__tests__/multi-tenancy.test.d.ts +10 -0
  64. package/dist/__tests__/multi-tenancy.test.d.ts.map +1 -0
  65. package/dist/__tests__/multi-tenancy.test.js +122 -0
  66. package/dist/__tests__/multi-tenancy.test.js.map +1 -0
  67. package/dist/__tests__/needs-topology.test.d.ts +11 -0
  68. package/dist/__tests__/needs-topology.test.d.ts.map +1 -0
  69. package/dist/__tests__/needs-topology.test.js +82 -0
  70. package/dist/__tests__/needs-topology.test.js.map +1 -0
  71. package/dist/__tests__/plugin-closure.test.d.ts +15 -0
  72. package/dist/__tests__/plugin-closure.test.d.ts.map +1 -0
  73. package/dist/__tests__/plugin-closure.test.js +140 -0
  74. package/dist/__tests__/plugin-closure.test.js.map +1 -0
  75. package/dist/__tests__/plugin.test.d.ts +10 -0
  76. package/dist/__tests__/plugin.test.d.ts.map +1 -0
  77. package/dist/__tests__/plugin.test.js +225 -0
  78. package/dist/__tests__/plugin.test.js.map +1 -0
  79. package/dist/__tests__/primitives.test.d.ts +9 -0
  80. package/dist/__tests__/primitives.test.d.ts.map +1 -0
  81. package/dist/__tests__/primitives.test.js +434 -0
  82. package/dist/__tests__/primitives.test.js.map +1 -0
  83. package/dist/__tests__/production-readiness.test.d.ts +22 -0
  84. package/dist/__tests__/production-readiness.test.d.ts.map +1 -0
  85. package/dist/__tests__/production-readiness.test.js +196 -0
  86. package/dist/__tests__/production-readiness.test.js.map +1 -0
  87. package/dist/__tests__/provider.test.d.ts +6 -0
  88. package/dist/__tests__/provider.test.d.ts.map +1 -0
  89. package/dist/__tests__/provider.test.js +122 -0
  90. package/dist/__tests__/provider.test.js.map +1 -0
  91. package/dist/__tests__/public-marker.test.d.ts +7 -0
  92. package/dist/__tests__/public-marker.test.d.ts.map +1 -0
  93. package/dist/__tests__/public-marker.test.js +54 -0
  94. package/dist/__tests__/public-marker.test.js.map +1 -0
  95. package/dist/__tests__/retry-dlq.test.d.ts +6 -0
  96. package/dist/__tests__/retry-dlq.test.d.ts.map +1 -0
  97. package/dist/__tests__/retry-dlq.test.js +68 -0
  98. package/dist/__tests__/retry-dlq.test.js.map +1 -0
  99. package/dist/__tests__/validate.test.d.ts +5 -0
  100. package/dist/__tests__/validate.test.d.ts.map +1 -0
  101. package/dist/__tests__/validate.test.js +53 -0
  102. package/dist/__tests__/validate.test.js.map +1 -0
  103. package/dist/__tests__/workflow-saga.test.d.ts +7 -0
  104. package/dist/__tests__/workflow-saga.test.d.ts.map +1 -0
  105. package/dist/__tests__/workflow-saga.test.js +239 -0
  106. package/dist/__tests__/workflow-saga.test.js.map +1 -0
  107. package/dist/actor-store.d.ts +83 -0
  108. package/dist/actor-store.d.ts.map +1 -0
  109. package/dist/actor-store.js +85 -0
  110. package/dist/actor-store.js.map +1 -0
  111. package/dist/cli-runner.d.ts +46 -0
  112. package/dist/cli-runner.d.ts.map +1 -0
  113. package/dist/cli-runner.js +164 -0
  114. package/dist/cli-runner.js.map +1 -0
  115. package/dist/create-app.d.ts +131 -0
  116. package/dist/create-app.d.ts.map +1 -0
  117. package/dist/create-app.js +593 -0
  118. package/dist/create-app.js.map +1 -0
  119. package/dist/define-action.d.ts +148 -0
  120. package/dist/define-action.d.ts.map +1 -0
  121. package/dist/define-action.js +52 -0
  122. package/dist/define-action.js.map +1 -0
  123. package/dist/define-actor.d.ts +302 -0
  124. package/dist/define-actor.d.ts.map +1 -0
  125. package/dist/define-actor.js +294 -0
  126. package/dist/define-actor.js.map +1 -0
  127. package/dist/define-app.d.ts +104 -0
  128. package/dist/define-app.d.ts.map +1 -0
  129. package/dist/define-app.js +49 -0
  130. package/dist/define-app.js.map +1 -0
  131. package/dist/define-cron.d.ts +50 -0
  132. package/dist/define-cron.d.ts.map +1 -0
  133. package/dist/define-cron.js +34 -0
  134. package/dist/define-cron.js.map +1 -0
  135. package/dist/define-error.d.ts +10 -0
  136. package/dist/define-error.d.ts.map +1 -0
  137. package/dist/define-error.js +10 -0
  138. package/dist/define-error.js.map +1 -0
  139. package/dist/define-external-call.d.ts +85 -0
  140. package/dist/define-external-call.d.ts.map +1 -0
  141. package/dist/define-external-call.js +38 -0
  142. package/dist/define-external-call.js.map +1 -0
  143. package/dist/define-handler.d.ts +98 -0
  144. package/dist/define-handler.d.ts.map +1 -0
  145. package/dist/define-handler.js +29 -0
  146. package/dist/define-handler.js.map +1 -0
  147. package/dist/define-inbound-webhook.d.ts +82 -0
  148. package/dist/define-inbound-webhook.d.ts.map +1 -0
  149. package/dist/define-inbound-webhook.js +42 -0
  150. package/dist/define-inbound-webhook.js.map +1 -0
  151. package/dist/define-inbox.d.ts +40 -0
  152. package/dist/define-inbox.d.ts.map +1 -0
  153. package/dist/define-inbox.js +31 -0
  154. package/dist/define-inbox.js.map +1 -0
  155. package/dist/define-initializer.d.ts +54 -0
  156. package/dist/define-initializer.d.ts.map +1 -0
  157. package/dist/define-initializer.js +38 -0
  158. package/dist/define-initializer.js.map +1 -0
  159. package/dist/define-middleware.d.ts +8 -0
  160. package/dist/define-middleware.d.ts.map +1 -0
  161. package/dist/define-middleware.js +8 -0
  162. package/dist/define-middleware.js.map +1 -0
  163. package/dist/define-model.d.ts +10 -0
  164. package/dist/define-model.d.ts.map +1 -0
  165. package/dist/define-model.js +13 -0
  166. package/dist/define-model.js.map +1 -0
  167. package/dist/define-module.d.ts +157 -0
  168. package/dist/define-module.d.ts.map +1 -0
  169. package/dist/define-module.js +60 -0
  170. package/dist/define-module.js.map +1 -0
  171. package/dist/define-outbox.d.ts +47 -0
  172. package/dist/define-outbox.d.ts.map +1 -0
  173. package/dist/define-outbox.js +36 -0
  174. package/dist/define-outbox.js.map +1 -0
  175. package/dist/define-plugin.d.ts +171 -0
  176. package/dist/define-plugin.d.ts.map +1 -0
  177. package/dist/define-plugin.js +134 -0
  178. package/dist/define-plugin.js.map +1 -0
  179. package/dist/define-projection.d.ts +56 -0
  180. package/dist/define-projection.d.ts.map +1 -0
  181. package/dist/define-projection.js +44 -0
  182. package/dist/define-projection.js.map +1 -0
  183. package/dist/define-provider.d.ts +49 -0
  184. package/dist/define-provider.d.ts.map +1 -0
  185. package/dist/define-provider.js +45 -0
  186. package/dist/define-provider.js.map +1 -0
  187. package/dist/define-query.d.ts +50 -0
  188. package/dist/define-query.d.ts.map +1 -0
  189. package/dist/define-query.js +33 -0
  190. package/dist/define-query.js.map +1 -0
  191. package/dist/define-resolver.d.ts +111 -0
  192. package/dist/define-resolver.d.ts.map +1 -0
  193. package/dist/define-resolver.js +146 -0
  194. package/dist/define-resolver.js.map +1 -0
  195. package/dist/define-schema.d.ts +88 -0
  196. package/dist/define-schema.d.ts.map +1 -0
  197. package/dist/define-schema.js +72 -0
  198. package/dist/define-schema.js.map +1 -0
  199. package/dist/define-workflow.d.ts +193 -0
  200. package/dist/define-workflow.d.ts.map +1 -0
  201. package/dist/define-workflow.js +345 -0
  202. package/dist/define-workflow.js.map +1 -0
  203. package/dist/dev-logger.d.ts +41 -0
  204. package/dist/dev-logger.d.ts.map +1 -0
  205. package/dist/dev-logger.js +135 -0
  206. package/dist/dev-logger.js.map +1 -0
  207. package/dist/event-message.d.ts +37 -0
  208. package/dist/event-message.d.ts.map +1 -0
  209. package/dist/event-message.js +51 -0
  210. package/dist/event-message.js.map +1 -0
  211. package/dist/foundation.d.ts +14 -0
  212. package/dist/foundation.d.ts.map +1 -0
  213. package/dist/foundation.js +14 -0
  214. package/dist/foundation.js.map +1 -0
  215. package/dist/framework-event-bus.d.ts +13 -0
  216. package/dist/framework-event-bus.d.ts.map +1 -0
  217. package/dist/framework-event-bus.js +13 -0
  218. package/dist/framework-event-bus.js.map +1 -0
  219. package/dist/framework-events.d.ts +121 -0
  220. package/dist/framework-events.d.ts.map +1 -0
  221. package/dist/framework-events.js +67 -0
  222. package/dist/framework-events.js.map +1 -0
  223. package/dist/index.d.ts +53 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +61 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/module-surface.d.ts +47 -0
  228. package/dist/module-surface.d.ts.map +1 -0
  229. package/dist/module-surface.js +65 -0
  230. package/dist/module-surface.js.map +1 -0
  231. package/dist/projection-store.d.ts +26 -0
  232. package/dist/projection-store.d.ts.map +1 -0
  233. package/dist/projection-store.js +28 -0
  234. package/dist/projection-store.js.map +1 -0
  235. package/dist/public-marker.d.ts +35 -0
  236. package/dist/public-marker.d.ts.map +1 -0
  237. package/dist/public-marker.js +45 -0
  238. package/dist/public-marker.js.map +1 -0
  239. package/dist/response.d.ts +8 -0
  240. package/dist/response.d.ts.map +1 -0
  241. package/dist/response.js +8 -0
  242. package/dist/response.js.map +1 -0
  243. package/dist/runtime.d.ts +497 -0
  244. package/dist/runtime.d.ts.map +1 -0
  245. package/dist/runtime.js +1083 -0
  246. package/dist/runtime.js.map +1 -0
  247. package/dist/validate.d.ts +33 -0
  248. package/dist/validate.d.ts.map +1 -0
  249. package/dist/validate.js +48 -0
  250. package/dist/validate.js.map +1 -0
  251. package/dist/when.d.ts +101 -0
  252. package/dist/when.d.ts.map +1 -0
  253. package/dist/when.js +57 -0
  254. package/dist/when.js.map +1 -0
  255. package/dist/workflow-timer-store.d.ts +78 -0
  256. package/dist/workflow-timer-store.d.ts.map +1 -0
  257. package/dist/workflow-timer-store.js +56 -0
  258. package/dist/workflow-timer-store.js.map +1 -0
  259. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../../src/__tests__/plugin.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,YAAY,GAEb,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE;YACnC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;gBACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChC,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAKjF,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACzD,IAAI,CAAU,SAAS,EAAE,GAAG,EAAE;gBAC5B,MAAM,OAAO,GAAY;oBACvB,KAAK,EAAE,CAAC;oBACR,IAAI;wBACF,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;oBACrB,CAAC;iBACF,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,YAAY,CAAC;YACxB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAU,SAAS,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;gBACzB,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO,EAAE,CAAC,aAAa,CAAC;SACzB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE;YACnC,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,EAAE,EAAE;oBACb,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACxB,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACvB,OAAO,CAAC,CAAC;gBACX,CAAC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,cAAc,GAAG,WAAW,CAAC;YACjC,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE;YAC/B,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,EAAE,EAAE;wBACF,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;4BACrB,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;yBAC3D;qBACF;iBACF;gBACD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;aACtB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAA4B;SACtF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAwC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE;YACxC,UAAU,EAAE;gBACV,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;oBACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClD,CAAC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,OAAO,EAAE;gBACP,YAAY,CAAC,GAAG,EAAE;oBAChB,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,MAAM,EAAE,CAAC,IAAI,CAAC;oBACd,MAAM,EAAE,CAAC,cAAc,CAAC;iBACzB,CAAC;aACH;YACD,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE;YAC1B,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE;YAC1B,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE;YAClC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;YAC3B,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE;YAC9B,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE;YAChC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,oEAAoE;QACpE,6CAA6C;QAC7C,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE;YACxC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;gBACtB,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,GAA2B,IAAI,CAAC;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7B,IAAI,GAAG,GAAG,CAAC,OAAO,CAAkB,aAAa,CAAC,CAAC;gBACnD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC,WAAW,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Forge contract tests — verify the public surface and the runtime end-to-end.
3
+ *
4
+ * Each test exercises one design rule. If a test fails, it likely means a
5
+ * design rule changed and either the docs or the runtime need to be brought
6
+ * back in sync.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=primitives.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/primitives.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,434 @@
1
+ /**
2
+ * Forge contract tests — verify the public surface and the runtime end-to-end.
3
+ *
4
+ * Each test exercises one design rule. If a test fails, it likely means a
5
+ * design rule changed and either the docs or the runtime need to be brought
6
+ * back in sync.
7
+ */
8
+ import { describe, it, expect, beforeEach } from "vitest";
9
+ import { z } from "zod";
10
+ import { defineEvent } from "@nwire/messages";
11
+ import * as forge from "../foundation.js";
12
+ const { defineAction, defineActor, defineHandler, eventFactory, defineWorkflow, Runtime, parseDelay, InMemoryActorStore, } = forge;
13
+ const SubmitInput = z.object({
14
+ submissionId: z.string(),
15
+ studentId: z.string(),
16
+ answer: z.string(),
17
+ });
18
+ const FlagInput = z.object({
19
+ submissionId: z.string(),
20
+ confidence: z.number(),
21
+ });
22
+ const SubmissionSchema = z.object({
23
+ submissionId: z.string(),
24
+ studentId: z.string(),
25
+ answer: z.string(),
26
+ confidence: z.number().optional(),
27
+ verdict: z.enum(["correct", "incorrect", "partial"]).optional(),
28
+ gradedAt: z.string().optional(),
29
+ });
30
+ const submitAnswer = defineAction({
31
+ name: "submissions.submit-answer",
32
+ schema: SubmitInput,
33
+ description: "Avi submits his answer to an exercise.",
34
+ });
35
+ const flagForReview = defineAction({
36
+ name: "submissions.flag-for-review",
37
+ schema: FlagInput,
38
+ });
39
+ const sendReviewReminder = defineAction({
40
+ name: "submissions.send-review-reminder",
41
+ schema: z.object({ submissionId: z.string() }),
42
+ });
43
+ const AnswerSubmittedEventDef = defineEvent({
44
+ name: "submissions.answer-submitted",
45
+ schema: z.object({
46
+ submissionId: z.string(),
47
+ studentId: z.string(),
48
+ answer: z.string(),
49
+ submittedAt: z.string().datetime(),
50
+ }),
51
+ });
52
+ const AnswerSubmitted = eventFactory(AnswerSubmittedEventDef);
53
+ const AnswerFlaggedEventDef = defineEvent({
54
+ name: "submissions.answer-flagged",
55
+ schema: z.object({
56
+ submissionId: z.string(),
57
+ studentId: z.string(),
58
+ confidence: z.number(),
59
+ flaggedAt: z.string().datetime(),
60
+ }),
61
+ });
62
+ const AnswerFlagged = eventFactory(AnswerFlaggedEventDef);
63
+ const AnswerGradedEventDef = defineEvent({
64
+ name: "submissions.answer-graded",
65
+ schema: z.object({
66
+ submissionId: z.string(),
67
+ verdict: z.enum(["correct", "incorrect", "partial"]),
68
+ confidence: z.number(),
69
+ gradedAt: z.string().datetime(),
70
+ }),
71
+ });
72
+ const AnswerGraded = eventFactory(AnswerGradedEventDef);
73
+ describe("eventFactory", () => {
74
+ it("produces an EventMessage with validated payload", () => {
75
+ const msg = AnswerSubmitted({
76
+ submissionId: "sub-1",
77
+ studentId: "avi",
78
+ answer: "ה",
79
+ submittedAt: "2026-05-10T10:00:00Z",
80
+ });
81
+ expect(msg.eventName).toBe("submissions.answer-submitted");
82
+ expect(msg.payload.submissionId).toBe("sub-1");
83
+ });
84
+ it("throws on invalid payload (parse, not safeParse)", () => {
85
+ expect(() => AnswerSubmitted({
86
+ submissionId: "sub-1",
87
+ studentId: "avi",
88
+ answer: "ה",
89
+ submittedAt: "not-a-date",
90
+ })).toThrow();
91
+ });
92
+ it("exposes definition + name for introspection", () => {
93
+ expect(AnswerSubmitted.name).toBe("submissions.answer-submitted");
94
+ expect(AnswerSubmitted.definition).toBe(AnswerSubmittedEventDef);
95
+ });
96
+ });
97
+ describe("defineActor (validation at definition time)", () => {
98
+ it("rejects an actor whose initial state is not declared", () => {
99
+ expect(() => defineActor("bogus", {
100
+ schema: z.object({}),
101
+ key: "id",
102
+ initial: "never-declared",
103
+ states: { other: {} },
104
+ })).toThrow(/initial state/);
105
+ });
106
+ it("rejects a final state that also declares event reactions", () => {
107
+ expect(() => defineActor("bogus", {
108
+ schema: z.object({}),
109
+ key: "id",
110
+ initial: "a",
111
+ states: {
112
+ a: {},
113
+ b: {
114
+ final: true,
115
+ on: { something: { target: "a" } },
116
+ },
117
+ },
118
+ })).toThrow(/final state/);
119
+ });
120
+ it("builds an event index for O(1) dispatch", () => {
121
+ const Submission = defineActor("submission", {
122
+ schema: SubmissionSchema,
123
+ key: "submissionId",
124
+ initial: "submitted",
125
+ states: {
126
+ submitted: {
127
+ on: {
128
+ [AnswerFlagged.name]: {
129
+ target: "under-review",
130
+ assign: (_, e) => ({ confidence: e.confidence }),
131
+ },
132
+ },
133
+ },
134
+ "under-review": {},
135
+ graded: { final: true },
136
+ },
137
+ });
138
+ expect(Submission.eventIndex.has(AnswerFlagged.name)).toBe(true);
139
+ expect(Submission.eventIndex.get(AnswerFlagged.name)?.[0]?.state).toBe("submitted");
140
+ });
141
+ });
142
+ describe("Runtime end-to-end (handler returns events → actor reacts)", () => {
143
+ let runtime;
144
+ let store;
145
+ beforeEach(() => {
146
+ store = new InMemoryActorStore();
147
+ runtime = new Runtime({ actorStore: store });
148
+ });
149
+ it("dispatches an action, runs the handler, applies returned event to actor", async () => {
150
+ const Submission = defineActor("submission", {
151
+ schema: SubmissionSchema,
152
+ key: "submissionId",
153
+ initial: "submitted",
154
+ states: {
155
+ submitted: {
156
+ on: {
157
+ [AnswerSubmitted.name]: {
158
+ assign: (_, event) => {
159
+ const e = event;
160
+ return {
161
+ submissionId: e.submissionId,
162
+ studentId: e.studentId,
163
+ answer: e.answer,
164
+ };
165
+ },
166
+ },
167
+ [AnswerFlagged.name]: {
168
+ target: "under-review",
169
+ assign: (_, event) => ({
170
+ confidence: event.confidence,
171
+ }),
172
+ },
173
+ },
174
+ },
175
+ "under-review": {
176
+ after: {
177
+ "3d": sendReviewReminder.name,
178
+ },
179
+ },
180
+ graded: { final: true },
181
+ },
182
+ });
183
+ const handler = defineHandler(submitAnswer, async (input) => {
184
+ return AnswerSubmitted({
185
+ submissionId: input.submissionId,
186
+ studentId: input.studentId,
187
+ answer: input.answer,
188
+ submittedAt: "2026-05-10T10:00:00Z",
189
+ });
190
+ });
191
+ runtime.registerActor(Submission);
192
+ runtime.registerHandler(handler);
193
+ await runtime.dispatch(submitAnswer, {
194
+ submissionId: "sub-1",
195
+ studentId: "avi",
196
+ answer: "ה",
197
+ });
198
+ const stored = await store.load("submission", "sub-1");
199
+ expect(stored).not.toBeNull();
200
+ expect(stored?.state).toBe("submitted");
201
+ expect((stored?.data).studentId).toBe("avi");
202
+ });
203
+ it("transitions state via target + schedules `after` timers on entry", async () => {
204
+ const Submission = defineActor("submission", {
205
+ schema: SubmissionSchema,
206
+ key: "submissionId",
207
+ initial: "submitted",
208
+ states: {
209
+ submitted: {
210
+ on: {
211
+ [AnswerSubmitted.name]: {
212
+ assign: (_, event) => {
213
+ const e = event;
214
+ return { submissionId: e.submissionId, studentId: e.studentId, answer: e.answer };
215
+ },
216
+ },
217
+ [AnswerFlagged.name]: {
218
+ target: "under-review",
219
+ assign: (_, event) => ({
220
+ confidence: event.confidence,
221
+ }),
222
+ },
223
+ },
224
+ },
225
+ "under-review": {
226
+ after: { "3d": sendReviewReminder.name },
227
+ },
228
+ graded: { final: true },
229
+ },
230
+ });
231
+ runtime.registerActor(Submission);
232
+ runtime.registerHandler(defineHandler(submitAnswer, async (input) => AnswerSubmitted({
233
+ submissionId: input.submissionId,
234
+ studentId: input.studentId,
235
+ answer: input.answer,
236
+ submittedAt: "2026-05-10T10:00:00Z",
237
+ })));
238
+ runtime.registerHandler(defineHandler(flagForReview, async (input) => AnswerFlagged({
239
+ submissionId: input.submissionId,
240
+ studentId: "avi",
241
+ confidence: input.confidence,
242
+ flaggedAt: "2026-05-10T10:01:00Z",
243
+ })));
244
+ await runtime.dispatch(submitAnswer, {
245
+ submissionId: "sub-1",
246
+ studentId: "avi",
247
+ answer: "ה",
248
+ });
249
+ await runtime.dispatch(flagForReview, {
250
+ submissionId: "sub-1",
251
+ confidence: 0.4,
252
+ });
253
+ const stored = await store.load("submission", "sub-1");
254
+ expect(stored?.state).toBe("under-review");
255
+ expect((stored?.data).confidence).toBe(0.4);
256
+ expect(stored?.activeTimers["3d"]).toBeDefined();
257
+ expect(stored?.activeTimers["3d"]?.action).toBe(sendReviewReminder.name);
258
+ });
259
+ it("cancels old timers on state exit (timers belong to the state, not the actor)", async () => {
260
+ const Submission = defineActor("submission", {
261
+ schema: SubmissionSchema,
262
+ key: "submissionId",
263
+ initial: "submitted",
264
+ states: {
265
+ submitted: {
266
+ on: {
267
+ [AnswerSubmitted.name]: {
268
+ assign: (_, event) => {
269
+ const e = event;
270
+ return { submissionId: e.submissionId, studentId: e.studentId, answer: e.answer };
271
+ },
272
+ },
273
+ [AnswerFlagged.name]: {
274
+ target: "under-review",
275
+ assign: (_, event) => ({
276
+ confidence: event.confidence,
277
+ }),
278
+ },
279
+ },
280
+ },
281
+ "under-review": {
282
+ after: { "3d": sendReviewReminder.name },
283
+ on: {
284
+ [AnswerGraded.name]: {
285
+ target: "graded",
286
+ assign: (_, event) => {
287
+ const e = event;
288
+ return {
289
+ verdict: e.verdict,
290
+ gradedAt: e.gradedAt,
291
+ };
292
+ },
293
+ },
294
+ },
295
+ },
296
+ graded: { final: true },
297
+ },
298
+ });
299
+ runtime.registerActor(Submission);
300
+ runtime.registerHandler(defineHandler(submitAnswer, async (input) => AnswerSubmitted({
301
+ submissionId: input.submissionId,
302
+ studentId: input.studentId,
303
+ answer: input.answer,
304
+ submittedAt: "2026-05-10T10:00:00Z",
305
+ })));
306
+ runtime.registerHandler(defineHandler(flagForReview, async (input) => AnswerFlagged({
307
+ submissionId: input.submissionId,
308
+ studentId: "avi",
309
+ confidence: input.confidence,
310
+ flaggedAt: "2026-05-10T10:01:00Z",
311
+ })));
312
+ const gradeAction = defineAction({
313
+ name: "submissions.grade",
314
+ schema: z.object({ submissionId: z.string() }),
315
+ });
316
+ runtime.registerHandler(defineHandler(gradeAction, async (input) => AnswerGraded({
317
+ submissionId: input.submissionId,
318
+ verdict: "correct",
319
+ confidence: 0.95,
320
+ gradedAt: "2026-05-10T11:00:00Z",
321
+ })));
322
+ await runtime.dispatch(submitAnswer, {
323
+ submissionId: "sub-1",
324
+ studentId: "avi",
325
+ answer: "ה",
326
+ });
327
+ await runtime.dispatch(flagForReview, { submissionId: "sub-1", confidence: 0.4 });
328
+ await runtime.dispatch(gradeAction, { submissionId: "sub-1" });
329
+ const stored = await store.load("submission", "sub-1");
330
+ expect(stored?.state).toBe("graded");
331
+ expect(Object.keys(stored?.activeTimers ?? {})).toHaveLength(0);
332
+ });
333
+ it("routes workflow `on()` subscriptions to anyone's events (cross-cutting)", async () => {
334
+ const seen = [];
335
+ const Submission = defineActor("submission", {
336
+ schema: SubmissionSchema,
337
+ key: "submissionId",
338
+ initial: "submitted",
339
+ states: {
340
+ submitted: {
341
+ on: {
342
+ [AnswerSubmitted.name]: {
343
+ assign: (_, event) => {
344
+ const e = event;
345
+ return { submissionId: e.submissionId, studentId: e.studentId, answer: e.answer };
346
+ },
347
+ },
348
+ },
349
+ },
350
+ graded: { final: true },
351
+ },
352
+ });
353
+ runtime.registerActor(Submission);
354
+ runtime.registerHandler(defineHandler(submitAnswer, async (input) => AnswerSubmitted({
355
+ submissionId: input.submissionId,
356
+ studentId: input.studentId,
357
+ answer: input.answer,
358
+ submittedAt: "2026-05-10T10:00:00Z",
359
+ })));
360
+ const workflow = defineWorkflow("submissions.observe-submitted", ({ on }) => {
361
+ on(AnswerSubmittedEventDef, (event) => {
362
+ seen.push(event.submissionId);
363
+ });
364
+ });
365
+ runtime.registerWorkflow(workflow);
366
+ await runtime.dispatch(submitAnswer, {
367
+ submissionId: "sub-1",
368
+ studentId: "avi",
369
+ answer: "ה",
370
+ });
371
+ expect(seen).toEqual(["sub-1"]);
372
+ });
373
+ it("skips actors whose current state has no reaction to the event (silent)", async () => {
374
+ const Submission = defineActor("submission", {
375
+ schema: SubmissionSchema,
376
+ key: "submissionId",
377
+ initial: "submitted",
378
+ states: {
379
+ submitted: {
380
+ on: {
381
+ [AnswerSubmitted.name]: {
382
+ assign: (_, event) => {
383
+ const e = event;
384
+ return { submissionId: e.submissionId, studentId: e.studentId, answer: e.answer };
385
+ },
386
+ },
387
+ },
388
+ },
389
+ graded: { final: true },
390
+ },
391
+ });
392
+ runtime.registerActor(Submission);
393
+ runtime.registerHandler(defineHandler(submitAnswer, async (input) => AnswerSubmitted({
394
+ submissionId: input.submissionId,
395
+ studentId: input.studentId,
396
+ answer: input.answer,
397
+ submittedAt: "2026-05-10T10:00:00Z",
398
+ })));
399
+ // Dispatch flag-for-review while submission is in 'submitted'; current
400
+ // state has no reaction to AnswerFlagged → silently skipped, actor
401
+ // state unchanged.
402
+ runtime.registerHandler(defineHandler(flagForReview, async (input) => AnswerFlagged({
403
+ submissionId: input.submissionId,
404
+ studentId: "avi",
405
+ confidence: input.confidence,
406
+ flaggedAt: "2026-05-10T10:01:00Z",
407
+ })));
408
+ await runtime.dispatch(submitAnswer, {
409
+ submissionId: "sub-1",
410
+ studentId: "avi",
411
+ answer: "ה",
412
+ });
413
+ const before = await store.load("submission", "sub-1");
414
+ await runtime.dispatch(flagForReview, { submissionId: "sub-1", confidence: 0.4 });
415
+ const after = await store.load("submission", "sub-1");
416
+ expect(after?.state).toBe(before?.state);
417
+ });
418
+ });
419
+ describe("parseDelay", () => {
420
+ it("parses suffixed durations", () => {
421
+ expect(parseDelay("500ms")).toBe(500);
422
+ expect(parseDelay("90s")).toBe(90_000);
423
+ expect(parseDelay("5m")).toBe(300_000);
424
+ expect(parseDelay("4h")).toBe(14_400_000);
425
+ expect(parseDelay("3d")).toBe(259_200_000);
426
+ });
427
+ it("treats unit-less numbers as milliseconds", () => {
428
+ expect(parseDelay("1500")).toBe(1500);
429
+ });
430
+ it("throws on garbage", () => {
431
+ expect(() => parseDelay("not-a-duration")).toThrow();
432
+ });
433
+ });
434
+ //# sourceMappingURL=primitives.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.test.js","sourceRoot":"","sources":["../../src/__tests__/primitives.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Production-readiness audit — L4 forge runtime properties teams must
3
+ * trust before adopting workflows + projections in prod.
4
+ *
5
+ * Each test pins a real-world invariant:
6
+ *
7
+ * 1. Workflow correlation respects envelope.tenant (no cross-tenant
8
+ * saga bleed).
9
+ * 2. Plugin shutdown error isolation — one bad plugin's shutdown error
10
+ * doesn't prevent other plugins from cleaning up.
11
+ * 3. Projection state is deterministic — replaying the same event log
12
+ * against a fresh projection store rebuilds an identical view.
13
+ * 4. Cascade integrity — when a workflow handler dispatches another
14
+ * action, downstream events emit exactly once (not duplicated by
15
+ * the parent dispatch's event-publish loop).
16
+ *
17
+ * Actor restart durability is verified at the store layer (see
18
+ * `nwire-store-mongo`, `nwire-store-file`); a round-trip integration
19
+ * test belongs there, not in this file.
20
+ */
21
+ export {};
22
+ //# sourceMappingURL=production-readiness.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production-readiness.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/production-readiness.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}