@owlmeans/server-planning 0.1.18-rc.21 → 0.1.18-rc.22

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 (314) hide show
  1. package/README.md +24 -17
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/server-planning/SKILL.md +28 -28
  4. package/build/actions/apply-schema-request.d.ts +8 -0
  5. package/build/actions/apply-schema-request.d.ts.map +1 -0
  6. package/build/actions/apply-schema-request.js +31 -0
  7. package/build/actions/apply-schema-request.js.map +1 -0
  8. package/build/actions/commit.d.ts +3 -3
  9. package/build/actions/commit.d.ts.map +1 -1
  10. package/build/actions/commit.js +5 -4
  11. package/build/actions/commit.js.map +1 -1
  12. package/build/actions/define-schemas.d.ts +13 -0
  13. package/build/actions/define-schemas.d.ts.map +1 -0
  14. package/build/actions/define-schemas.js +28 -0
  15. package/build/actions/define-schemas.js.map +1 -0
  16. package/build/actions/execute.d.ts +8 -28
  17. package/build/actions/execute.d.ts.map +1 -1
  18. package/build/actions/execute.js +17 -101
  19. package/build/actions/execute.js.map +1 -1
  20. package/build/actions/execution/types.d.ts +34 -0
  21. package/build/actions/execution/types.d.ts.map +1 -0
  22. package/build/actions/execution/types.js +2 -0
  23. package/build/actions/execution/types.js.map +1 -0
  24. package/build/actions/execution.d.ts +4 -0
  25. package/build/actions/execution.d.ts.map +1 -0
  26. package/build/actions/execution.js +79 -0
  27. package/build/actions/execution.js.map +1 -0
  28. package/build/actions/get-card.d.ts +6 -0
  29. package/build/actions/get-card.d.ts.map +1 -0
  30. package/build/actions/get-card.js +9 -0
  31. package/build/actions/get-card.js.map +1 -0
  32. package/build/actions/get-specification.d.ts +6 -0
  33. package/build/actions/get-specification.d.ts.map +1 -0
  34. package/build/actions/get-specification.js +9 -0
  35. package/build/actions/get-specification.js.map +1 -0
  36. package/build/actions/index.d.ts +12 -3
  37. package/build/actions/index.d.ts.map +1 -1
  38. package/build/actions/index.js +11 -3
  39. package/build/actions/index.js.map +1 -1
  40. package/build/actions/links.d.ts +3 -3
  41. package/build/actions/links.d.ts.map +1 -1
  42. package/build/actions/links.js +6 -5
  43. package/build/actions/links.js.map +1 -1
  44. package/build/actions/list-card-specifications.d.ts +6 -0
  45. package/build/actions/list-card-specifications.d.ts.map +1 -0
  46. package/build/actions/list-card-specifications.js +11 -0
  47. package/build/actions/list-card-specifications.js.map +1 -0
  48. package/build/actions/list-card-transitions.d.ts +6 -0
  49. package/build/actions/list-card-transitions.d.ts.map +1 -0
  50. package/build/actions/list-card-transitions.js +11 -0
  51. package/build/actions/list-card-transitions.js.map +1 -0
  52. package/build/actions/list-cards.d.ts +6 -0
  53. package/build/actions/list-cards.d.ts.map +1 -0
  54. package/build/actions/list-cards.js +10 -0
  55. package/build/actions/list-cards.js.map +1 -0
  56. package/build/actions/list-schemas.d.ts +13 -0
  57. package/build/actions/list-schemas.d.ts.map +1 -0
  58. package/build/actions/list-schemas.js +20 -0
  59. package/build/actions/list-schemas.js.map +1 -0
  60. package/build/actions/{specs.d.ts → list-specification-revisions.d.ts} +1 -3
  61. package/build/actions/list-specification-revisions.d.ts.map +1 -0
  62. package/build/actions/list-specification-revisions.js +10 -0
  63. package/build/actions/list-specification-revisions.js.map +1 -0
  64. package/build/actions/summarize-cards.d.ts +6 -0
  65. package/build/actions/summarize-cards.d.ts.map +1 -0
  66. package/build/actions/summarize-cards.js +11 -0
  67. package/build/actions/summarize-cards.js.map +1 -0
  68. package/build/actions/transitions.d.ts +3 -3
  69. package/build/actions/transitions.d.ts.map +1 -1
  70. package/build/actions/transitions.js +4 -3
  71. package/build/actions/transitions.js.map +1 -1
  72. package/build/actions/types.d.ts +5 -3
  73. package/build/actions/types.d.ts.map +1 -1
  74. package/build/actions/watch.d.ts +2 -2
  75. package/build/actions/watch.d.ts.map +1 -1
  76. package/build/actions/watch.js +2 -2
  77. package/build/actions/watch.js.map +1 -1
  78. package/build/conformance/assert/types.d.ts +19 -0
  79. package/build/conformance/assert/types.d.ts.map +1 -0
  80. package/build/conformance/assert/types.js +2 -0
  81. package/build/conformance/assert/types.js.map +1 -0
  82. package/build/conformance/assert.d.ts +8 -13
  83. package/build/conformance/assert.d.ts.map +1 -1
  84. package/build/conformance/assert.js +41 -43
  85. package/build/conformance/assert.js.map +1 -1
  86. package/build/conformance/cases.d.ts.map +1 -1
  87. package/build/conformance/cases.js +86 -67
  88. package/build/conformance/cases.js.map +1 -1
  89. package/build/conformance/clock.d.ts +6 -0
  90. package/build/conformance/clock.d.ts.map +1 -0
  91. package/build/conformance/clock.js +12 -0
  92. package/build/conformance/clock.js.map +1 -0
  93. package/build/conformance/consts.d.ts +3 -1
  94. package/build/conformance/consts.d.ts.map +1 -1
  95. package/build/conformance/consts.js +84 -1
  96. package/build/conformance/consts.js.map +1 -1
  97. package/build/conformance/errors.d.ts +5 -0
  98. package/build/conformance/errors.d.ts.map +1 -0
  99. package/build/conformance/errors.js +8 -0
  100. package/build/conformance/errors.js.map +1 -0
  101. package/build/conformance/fixtures/types.d.ts +13 -0
  102. package/build/conformance/fixtures/types.d.ts.map +1 -0
  103. package/build/conformance/fixtures/types.js +2 -0
  104. package/build/conformance/fixtures/types.js.map +1 -0
  105. package/build/conformance/fixtures.d.ts +8 -8
  106. package/build/conformance/fixtures.d.ts.map +1 -1
  107. package/build/conformance/fixtures.js +24 -107
  108. package/build/conformance/fixtures.js.map +1 -1
  109. package/build/conformance/index.d.ts +3 -0
  110. package/build/conformance/index.d.ts.map +1 -1
  111. package/build/conformance/index.js +1 -0
  112. package/build/conformance/index.js.map +1 -1
  113. package/build/definitions.d.ts.map +1 -1
  114. package/build/definitions.js +9 -9
  115. package/build/definitions.js.map +1 -1
  116. package/build/executor/changes/types.d.ts +36 -0
  117. package/build/executor/changes/types.d.ts.map +1 -0
  118. package/build/executor/changes/types.js +2 -0
  119. package/build/executor/changes/types.js.map +1 -0
  120. package/build/executor/changes.d.ts +3 -30
  121. package/build/executor/changes.d.ts.map +1 -1
  122. package/build/executor/changes.js +42 -51
  123. package/build/executor/changes.js.map +1 -1
  124. package/build/executor/code/types.d.ts +17 -0
  125. package/build/executor/code/types.d.ts.map +1 -0
  126. package/build/executor/code/types.js +2 -0
  127. package/build/executor/code/types.js.map +1 -0
  128. package/build/executor/code.d.ts +3 -14
  129. package/build/executor/code.d.ts.map +1 -1
  130. package/build/executor/code.js +50 -54
  131. package/build/executor/code.js.map +1 -1
  132. package/build/executor/creator/types.d.ts +33 -0
  133. package/build/executor/creator/types.d.ts.map +1 -0
  134. package/build/executor/creator/types.js +2 -0
  135. package/build/executor/creator/types.js.map +1 -0
  136. package/build/executor/creator.d.ts +6 -25
  137. package/build/executor/creator.d.ts.map +1 -1
  138. package/build/executor/creator.js +26 -41
  139. package/build/executor/creator.js.map +1 -1
  140. package/build/executor/resolve/types.d.ts +30 -0
  141. package/build/executor/resolve/types.d.ts.map +1 -0
  142. package/build/executor/resolve/types.js +2 -0
  143. package/build/executor/resolve/types.js.map +1 -0
  144. package/build/executor/resolve.d.ts +4 -41
  145. package/build/executor/resolve.d.ts.map +1 -1
  146. package/build/executor/resolve.js +142 -157
  147. package/build/executor/resolve.js.map +1 -1
  148. package/build/executor/types.d.ts +0 -2
  149. package/build/executor/types.d.ts.map +1 -1
  150. package/build/executor/validate.d.ts +1 -1
  151. package/build/executor/validate.d.ts.map +1 -1
  152. package/build/executor/validate.js +16 -15
  153. package/build/executor/validate.js.map +1 -1
  154. package/build/executor.d.ts +4 -3
  155. package/build/executor.d.ts.map +1 -1
  156. package/build/executor.js +18 -17
  157. package/build/executor.js.map +1 -1
  158. package/build/facade.d.ts.map +1 -1
  159. package/build/facade.js +16 -16
  160. package/build/facade.js.map +1 -1
  161. package/build/helper.d.ts +1 -6
  162. package/build/helper.d.ts.map +1 -1
  163. package/build/helper.js +3 -8
  164. package/build/helper.js.map +1 -1
  165. package/build/projection.d.ts +2 -0
  166. package/build/projection.d.ts.map +1 -1
  167. package/build/projection.js +6 -4
  168. package/build/projection.js.map +1 -1
  169. package/build/queue/declare.d.ts +5 -0
  170. package/build/queue/declare.d.ts.map +1 -0
  171. package/build/queue/declare.js +5 -0
  172. package/build/queue/declare.js.map +1 -0
  173. package/build/queue/index.d.ts +1 -4
  174. package/build/queue/index.d.ts.map +1 -1
  175. package/build/queue/index.js +1 -4
  176. package/build/queue/index.js.map +1 -1
  177. package/build/store/composite.d.ts.map +1 -1
  178. package/build/store/composite.js +2 -2
  179. package/build/store/composite.js.map +1 -1
  180. package/build/store/fold/types.d.ts +43 -0
  181. package/build/store/fold/types.d.ts.map +1 -0
  182. package/build/store/fold/types.js +2 -0
  183. package/build/store/fold/types.js.map +1 -0
  184. package/build/store/fold.d.ts +7 -30
  185. package/build/store/fold.d.ts.map +1 -1
  186. package/build/store/fold.js +185 -203
  187. package/build/store/fold.js.map +1 -1
  188. package/build/store/index.d.ts +1 -0
  189. package/build/store/index.d.ts.map +1 -1
  190. package/build/store/index.js.map +1 -1
  191. package/build/store/memory.d.ts.map +1 -1
  192. package/build/store/memory.js +0 -0
  193. package/build/store/memory.js.map +1 -1
  194. package/build/store/types.local.d.ts +3 -1
  195. package/build/store/types.local.d.ts.map +1 -1
  196. package/build/types.d.ts +2 -1
  197. package/build/types.d.ts.map +1 -1
  198. package/build/utils/access/types.d.ts +30 -0
  199. package/build/utils/access/types.d.ts.map +1 -0
  200. package/build/utils/access/types.js +2 -0
  201. package/build/utils/access/types.js.map +1 -0
  202. package/build/utils/access.d.ts +4 -0
  203. package/build/utils/access.d.ts.map +1 -0
  204. package/build/utils/access.js +28 -0
  205. package/build/utils/access.js.map +1 -0
  206. package/build/utils/guard/types.d.ts +21 -0
  207. package/build/utils/guard/types.d.ts.map +1 -0
  208. package/build/utils/guard/types.js +2 -0
  209. package/build/utils/guard/types.js.map +1 -0
  210. package/build/utils/guard.d.ts +7 -10
  211. package/build/utils/guard.d.ts.map +1 -1
  212. package/build/utils/guard.js +33 -31
  213. package/build/utils/guard.js.map +1 -1
  214. package/build/utils/handler/types.d.ts +26 -0
  215. package/build/utils/handler/types.d.ts.map +1 -0
  216. package/build/utils/handler/types.js +2 -0
  217. package/build/utils/handler/types.js.map +1 -0
  218. package/build/utils/handler.d.ts +6 -0
  219. package/build/utils/handler.d.ts.map +1 -0
  220. package/build/utils/handler.js +21 -0
  221. package/build/utils/handler.js.map +1 -0
  222. package/build/utils/index.d.ts +8 -1
  223. package/build/utils/index.d.ts.map +1 -1
  224. package/build/utils/index.js +3 -0
  225. package/build/utils/index.js.map +1 -1
  226. package/build/utils/request/types.d.ts +23 -0
  227. package/build/utils/request/types.d.ts.map +1 -0
  228. package/build/utils/request/types.js +2 -0
  229. package/build/utils/request/types.js.map +1 -0
  230. package/build/utils/request.d.ts +4 -0
  231. package/build/utils/request.d.ts.map +1 -0
  232. package/build/utils/request.js +27 -0
  233. package/build/utils/request.js.map +1 -0
  234. package/build/utils/scope.d.ts +10 -43
  235. package/build/utils/scope.d.ts.map +1 -1
  236. package/build/utils/scope.js +21 -99
  237. package/build/utils/scope.js.map +1 -1
  238. package/package.json +18 -18
  239. package/src/actions/apply-schema-request.ts +35 -0
  240. package/src/actions/commit.ts +7 -5
  241. package/src/actions/define-schemas.ts +34 -0
  242. package/src/actions/execute.ts +30 -115
  243. package/src/actions/execution/types.ts +34 -0
  244. package/src/actions/execution.ts +96 -0
  245. package/src/actions/get-card.ts +14 -0
  246. package/src/actions/get-specification.ts +14 -0
  247. package/src/actions/index.ts +13 -3
  248. package/src/actions/links.ts +8 -6
  249. package/src/actions/list-card-specifications.ts +15 -0
  250. package/src/actions/list-card-transitions.ts +15 -0
  251. package/src/actions/list-cards.ts +14 -0
  252. package/src/actions/list-schemas.ts +29 -0
  253. package/src/actions/{specs.ts → list-specification-revisions.ts} +4 -11
  254. package/src/actions/summarize-cards.ts +15 -0
  255. package/src/actions/transitions.ts +6 -4
  256. package/src/actions/types.ts +4 -3
  257. package/src/actions/watch.ts +4 -3
  258. package/src/conformance/assert/types.ts +16 -0
  259. package/src/conformance/assert.ts +49 -41
  260. package/src/conformance/cases.ts +88 -67
  261. package/src/conformance/clock.ts +11 -0
  262. package/src/conformance/consts.ts +87 -1
  263. package/src/conformance/errors.ts +7 -0
  264. package/src/conformance/fixtures/types.ts +11 -0
  265. package/src/conformance/fixtures.ts +32 -107
  266. package/src/conformance/index.ts +3 -0
  267. package/src/definitions.ts +9 -9
  268. package/src/executor/changes/types.ts +38 -0
  269. package/src/executor/changes.ts +48 -63
  270. package/src/executor/code/types.ts +23 -0
  271. package/src/executor/code.ts +60 -61
  272. package/src/executor/creator/types.ts +33 -0
  273. package/src/executor/creator.ts +33 -41
  274. package/src/executor/resolve/types.ts +30 -0
  275. package/src/executor/resolve.ts +153 -167
  276. package/src/executor/types.ts +0 -3
  277. package/src/executor/validate.ts +17 -16
  278. package/src/executor.ts +20 -17
  279. package/src/facade.ts +16 -16
  280. package/src/helper.ts +3 -8
  281. package/src/projection.ts +8 -4
  282. package/src/queue/declare.ts +7 -0
  283. package/src/queue/index.ts +1 -8
  284. package/src/store/composite.ts +2 -2
  285. package/src/store/fold/types.ts +44 -0
  286. package/src/store/fold.ts +209 -212
  287. package/src/store/index.ts +1 -0
  288. package/src/store/memory.ts +0 -0
  289. package/src/store/types.local.ts +1 -1
  290. package/src/types.ts +1 -1
  291. package/src/utils/access/types.ts +30 -0
  292. package/src/utils/access.ts +33 -0
  293. package/src/utils/guard/types.ts +19 -0
  294. package/src/utils/guard.ts +41 -30
  295. package/src/utils/handler/types.ts +28 -0
  296. package/src/utils/handler.ts +35 -0
  297. package/src/utils/index.ts +9 -1
  298. package/src/utils/request/types.ts +23 -0
  299. package/src/utils/request.ts +40 -0
  300. package/src/utils/scope.ts +25 -108
  301. package/tests/creator.spec.ts +18 -18
  302. package/build/actions/cards.d.ts +0 -14
  303. package/build/actions/cards.d.ts.map +0 -1
  304. package/build/actions/cards.js +0 -32
  305. package/build/actions/cards.js.map +0 -1
  306. package/build/actions/schemas.d.ts +0 -28
  307. package/build/actions/schemas.d.ts.map +0 -1
  308. package/build/actions/schemas.js +0 -69
  309. package/build/actions/schemas.js.map +0 -1
  310. package/build/actions/specs.d.ts.map +0 -1
  311. package/build/actions/specs.js +0 -14
  312. package/build/actions/specs.js.map +0 -1
  313. package/src/actions/cards.ts +0 -48
  314. package/src/actions/schemas.ts +0 -87
@@ -1,7 +1,4 @@
1
- import { type Config } from '@owlmeans/queue';
2
- import type { PlanningQueueOptions } from './types.js';
3
- /** Declare the shared projection address; each process separately chooses whether to listen. */
4
- export declare const declarePlanningQueue: <C extends Config>(cfg: C, opts?: PlanningQueueOptions) => C;
1
+ export { declarePlanningQueue } from './declare.js';
5
2
  export { PLANNING_PROJECTION_QUEUE, PLANNING_PROJECT_JOB } from './consts.js';
6
3
  export type { PlanningQueueOptions, ProjectionRequest } from './types.js';
7
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,SAAS,oBAAoB,KAAG,CACjB,CAAA;AAE5E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC7E,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC7E,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
@@ -1,6 +1,3 @@
1
- import { declareQueue } from '@owlmeans/queue';
2
- import { PLANNING_PROJECT_JOB, PLANNING_PROJECTION_QUEUE } from './consts.js';
3
- /** Declare the shared projection address; each process separately chooses whether to listen. */
4
- export const declarePlanningQueue = (cfg, opts) => declareQueue(cfg, PLANNING_PROJECTION_QUEUE, [PLANNING_PROJECT_JOB], opts);
1
+ export { declarePlanningQueue } from './declare.js';
5
2
  export { PLANNING_PROJECTION_QUEUE, PLANNING_PROJECT_JOB } from './consts.js';
6
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAG7E,gGAAgG;AAChG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAmB,GAAM,EAAE,IAA2B,EAAK,EAAE,CAC/F,YAAY,CAAC,GAAG,EAAE,yBAAyB,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAA;AAE5E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/store/composite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACI,aAAa,EAE5B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAA;AAiBvD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAY,UAAU,EAAE,YAAY,aAAa,KAAG,aA4IlF,CAAA"}
1
+ {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/store/composite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACI,aAAa,EAE5B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAA;AAkBvD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAY,UAAU,EAAE,YAAY,aAAa,KAAG,aA4IlF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { WorkcardNotFound } from '@owlmeans/planning';
2
- import { applyQuery } from '@owlmeans/resource';
2
+ import { recordQueryHelper } from '@owlmeans/resource';
3
3
  const firstOf = async (stores, read) => {
4
4
  for (const store of stores) {
5
5
  const found = await read(store);
@@ -102,7 +102,7 @@ export const makeCompositeStore = (routes, fallback) => {
102
102
  list: async (where, opts) => {
103
103
  const results = await Promise.all(linked.map(store => store.links.list(where, { size: 0 })));
104
104
  const items = results.flatMap((result) => result.items);
105
- return applyQuery(items, undefined, opts);
105
+ return recordQueryHelper.applyQuery(items, undefined, opts);
106
106
  },
107
107
  put: link => (fallback.links ?? linked[0].links).put(link),
108
108
  drop: where => sum(linked, store => store.links.drop(where)),
@@ -1 +1 @@
1
- {"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/store/composite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/store/composite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { CommitEvent, CommitState, PlanningStore, SpecificationRevision, Transition, Workcard } from '@owlmeans/planning';
2
+ import type { FoldOptions, FoldResult } from '../types.js';
3
+ /** The projection body every store reuses: the fold of a card's pending log, and what it publishes. */
4
+ export interface FoldHelper {
5
+ /** The event a settled transition publishes. `record` is in-process only — strip it before a bus. */
6
+ commitEventOf: (transition: Transition, state: CommitState, at: string, extra?: {
7
+ error?: string;
8
+ record?: Workcard | null;
9
+ }) => CommitEvent;
10
+ /**
11
+ * Fold every pending transition of one card — the projection body every store reuses.
12
+ *
13
+ * Transitions are read in `seq` order past the card's own `seq`, and only `pending` ones are
14
+ * applied, each with `applyHelper.applyTransition` and nothing else. Per transition: write the
15
+ * record (a `delete` drops it, a project `delete` purges everything under it), fold its
16
+ * relationships, mark it `committed`, `publish` the event, then run `onCommitted` — so the `after`
17
+ * chain runs in THIS process, exactly once per committed transition. A transition that cannot be
18
+ * folded is marked `failed` with the reason and a failed event is published, and the fold goes PAST
19
+ * it: the card's `seq` advances to the failed transition with every other value as it was, so the
20
+ * next transition applies normally. Nothing is removed from the log. A create that fails leaves no
21
+ * card to advance, so what follows it fails too; a store that refuses the advancing write itself
22
+ * stops the fold there and reports `followUp`, leaving the rest pending for a retry.
23
+ *
24
+ * The caller owns single flight: two folds of one card running at once would both publish. A
25
+ * transactional store passes `unit`, which wraps each transition's writes (a savepoint), so a write
26
+ * the database refuses is undone whole before the fold marks the transition failed.
27
+ *
28
+ * @throws {PlanningUnsupported} for a store without a transition log
29
+ */
30
+ foldPending: (store: PlanningStore, cardId: string, entityId: string, opts?: FoldOptions) => Promise<FoldResult>;
31
+ /**
32
+ * Mark every pending transition of a card `failed` and publish a failed event for each — what a
33
+ * queued store does when its projection job is dead, or waiters hang until their timeout.
34
+ */
35
+ failPending: (store: PlanningStore, cardId: string, entityId: string, reason: string, opts?: Pick<FoldOptions, 'publish' | 'now'>) => Promise<number>;
36
+ /**
37
+ * A specification's history, replayed from its log: one entry per create and per committed
38
+ * content change, newest first. The fold is `applyHelper.applyTransition` itself, so an entry's
39
+ * `body` is the body AT that revision even when the transition changed only `ref`.
40
+ */
41
+ revisionsFromLog: (log: Transition[], limit?: number) => SpecificationRevision[];
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/store/fold/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC9H,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE1D,uGAAuG;AACvG,MAAM,WAAW,UAAU;IACzB,qGAAqG;IACrG,aAAa,EAAE,CACb,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE,KACzG,WAAW,CAAA;IAChB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAChH;;;OAGG;IACH,WAAW,EAAE,CACX,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,CAAC,KAChH,OAAO,CAAC,MAAM,CAAC,CAAA;IACpB;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,qBAAqB,EAAE,CAAA;CACjF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/store/fold/types.ts"],"names":[],"mappings":""}
@@ -1,40 +1,17 @@
1
1
  import { CommitState, type CommitEvent, type PlanningStore, type SpecificationRevision, type Transition, type Workcard } from '@owlmeans/planning';
2
+ import type { FoldHelper } from './fold/types.js';
2
3
  import type { FoldOptions, FoldResult } from './types.js';
3
- /** The event a settled transition publishes. `record` is in-process only — strip it before a bus. */
4
+ export declare const createFoldHelper: () => FoldHelper;
5
+ export declare const foldHelper: FoldHelper;
6
+ /** @deprecated compat:factory-refactor — use `foldHelper.commitEventOf(…)` */
4
7
  export declare const commitEventOf: (transition: Transition, state: CommitState, at: string, extra?: {
5
8
  error?: string;
6
9
  record?: Workcard | null;
7
10
  }) => CommitEvent;
8
- /**
9
- * Fold every pending transition of one card — the projection body every store reuses.
10
- *
11
- * Transitions are read in `seq` order past the card's own `seq`, and only `pending` ones are
12
- * applied, each with `applyTransition` and nothing else. Per transition: write the record (a
13
- * `delete` drops it, a project `delete` purges everything under it), fold its relationships, mark
14
- * it `committed`, `publish` the event, then run `onCommitted` — so the `after` chain runs in THIS
15
- * process, exactly once per committed transition. A transition that cannot be folded is marked
16
- * `failed` with the reason and a failed event is published, and the fold goes PAST it: the card's
17
- * `seq` advances to the failed transition with every other value as it was, so the next
18
- * transition applies normally. Nothing is removed from the log. A create that fails leaves no card
19
- * to advance, so what follows it fails too; a store that refuses the advancing write itself stops
20
- * the fold there and reports `followUp`, leaving the rest pending for a retry.
21
- *
22
- * The caller owns single flight: two folds of one card running at once would both publish. A
23
- * transactional store passes `unit`, which wraps each transition's writes (a savepoint), so a write
24
- * the database refuses is undone whole before the fold marks the transition failed.
25
- *
26
- * @throws {PlanningUnsupported} for a store without a transition log
27
- */
11
+ /** @deprecated compat:factory-refactor — use `foldHelper.foldPending(…)` */
28
12
  export declare const foldPending: (store: PlanningStore, cardId: string, entityId: string, opts?: FoldOptions) => Promise<FoldResult>;
29
- /**
30
- * Mark every pending transition of a card `failed` and publish a failed event for each — what a
31
- * queued store does when its projection job is dead, or waiters hang until their timeout.
32
- */
13
+ /** @deprecated compat:factory-refactor — use `foldHelper.failPending(…)` */
33
14
  export declare const failPending: (store: PlanningStore, cardId: string, entityId: string, reason: string, opts?: Pick<FoldOptions, 'publish' | 'now'>) => Promise<number>;
34
- /**
35
- * A specification's history, replayed from its log: one entry per create and per committed
36
- * content change, newest first. The fold is `applyTransition` itself, so an entry's `body` is the
37
- * body AT that revision even when the transition changed only `ref`.
38
- */
15
+ /** @deprecated compat:factory-refactor — use `foldHelper.revisionsFromLog(…)` */
39
16
  export declare const revisionsFromLog: (log: Transition[], limit?: number) => SpecificationRevision[];
40
17
  //# sourceMappingURL=fold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/store/fold.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,WAAW,EAAoD,KAAK,WAAW,EAAE,KAAK,aAAa,EAAqB,KAAK,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC3P,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAqBzD,qGAAqG;AACrG,eAAO,MAAM,aAAa,eACZ,UAAU,SAAS,WAAW,MAAM,MAAM,UAAU;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,KAC3G,WAaD,CAAA;AAqDF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,UACf,aAAa,UAAU,MAAM,YAAY,MAAM,SAAQ,WAAW,KACxE,OAAO,CAAC,UAAU,CAqEpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,UACf,aAAa,UAAU,MAAM,YAAY,MAAM,UAAU,MAAM,SAChE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,CAAC,KACzC,OAAO,CAAC,MAAM,CAiBhB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAS,UAAU,EAAE,UAAU,MAAM,KAAG,qBAAqB,EA2CzF,CAAA"}
1
+ {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/store/fold.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,WAAW,EAAyC,KAAK,WAAW,EAAE,KAAK,aAAa,EAAqB,KAAK,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrO,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAazD,eAAO,MAAM,gBAAgB,QAAO,UA0NnC,CAAA;AAED,eAAO,MAAM,UAAU,YAAqB,CAAA;AAE5C,8EAA8E;AAC9E,eAAO,MAAM,aAAa,eACZ,UAAU,SAAS,WAAW,MAAM,MAAM,UAAU;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,KAC3G,WAAqE,CAAA;AAExE,4EAA4E;AAC5E,eAAO,MAAM,WAAW,UACf,aAAa,UAAU,MAAM,YAAY,MAAM,SAAQ,WAAW,KACxE,OAAO,CAAC,UAAU,CAAgE,CAAA;AAErF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,UACf,aAAa,UAAU,MAAM,YAAY,MAAM,UAAU,MAAM,SAChE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,CAAC,KACzC,OAAO,CAAC,MAAM,CAAwE,CAAA;AAEzF,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,QAAS,UAAU,EAAE,UAAU,MAAM,KAAG,qBAAqB,EACjD,CAAA"}
@@ -1,228 +1,210 @@
1
1
  import { logger } from '@owlmeans/log';
2
- import { applyRelationship, applyTransition, CommitState, isProject, PlanningUnsupported, TransitionAction } from '@owlmeans/planning';
2
+ import { applyHelper, cardHelper, CommitState, PlanningUnsupported, TransitionAction } from '@owlmeans/planning';
3
3
  import { CONTENT_KEYS } from './consts.local.js';
4
4
  const log = logger('planning:store');
5
5
  const isoNow = () => new Date().toISOString();
6
6
  const clean = (record) => Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
7
7
  const errorText = (error) => error instanceof Error ? error.message : `${error}`;
8
- const safely = async (label, run) => {
9
- try {
10
- await run();
11
- }
12
- catch (error) {
13
- log.error('Planning store step failed', { step: label, error });
14
- }
15
- };
16
- /** The event a settled transition publishes. `record` is in-process only — strip it before a bus. */
17
- export const commitEventOf = (transition, state, at, extra) => clean({
18
- transition: transition.id,
19
- card: transition.card,
20
- entityId: transition.entityId,
21
- project: transition.project,
22
- kind: transition.kind,
23
- type: transition.type,
24
- seq: transition.seq,
25
- action: transition.action,
26
- state,
27
- at,
28
- error: extra?.error,
29
- record: extra?.record,
30
- });
31
- const bearsRelationships = (transition) => transition.action === TransitionAction.Link
32
- || transition.action === TransitionAction.Unlink
33
- || transition.action === TransitionAction.Delete
34
- || (transition.action === TransitionAction.Create && (transition.links?.length ?? 0) > 0);
35
- const foldRelationships = async (store, transition) => {
36
- const links = store.links;
37
- if (links == null || !bearsRelationships(transition)) {
38
- return;
39
- }
40
- const where = { entityId: transition.entityId };
41
- const [outgoing, incoming] = await Promise.all([
42
- links.list({ ...where, from: transition.card }, { size: 0 }),
43
- links.list({ ...where, to: transition.card }, { size: 0 }),
44
- ]);
45
- const before = [...new Map([...outgoing.items, ...incoming.items].map(link => [link.id, link])).values()];
46
- const after = applyRelationship(before, transition);
47
- const kept = new Set(after.filter(link => link.id != null).map(link => link.id));
48
- for (const link of before) {
49
- if (link.id != null && !kept.has(link.id)) {
50
- await links.drop({ entityId: transition.entityId, id: link.id });
8
+ export const createFoldHelper = () => {
9
+ const safely = async (label, run) => {
10
+ try {
11
+ await run();
51
12
  }
52
- }
53
- for (const link of after) {
54
- if (link.id == null) {
55
- await links.put(link);
13
+ catch (error) {
14
+ log.error('Planning store step failed', { step: label, error });
56
15
  }
57
- }
58
- };
59
- const writeFold = async (store, before, after, transition) => {
60
- if (transition.action === TransitionAction.Delete) {
61
- if (before != null && isProject(before)) {
62
- // A project takes everything under it, its own log included — the hub remembers the commit.
63
- await store.cards.purge(transition.card, transition.entityId);
16
+ };
17
+ const commitEventOf = (transition, state, at, extra) => clean({
18
+ transition: transition.id,
19
+ card: transition.card,
20
+ entityId: transition.entityId,
21
+ project: transition.project,
22
+ kind: transition.kind,
23
+ type: transition.type,
24
+ seq: transition.seq,
25
+ action: transition.action,
26
+ state,
27
+ at,
28
+ error: extra?.error,
29
+ record: extra?.record,
30
+ });
31
+ const bearsRelationships = (transition) => transition.action === TransitionAction.Link
32
+ || transition.action === TransitionAction.Unlink
33
+ || transition.action === TransitionAction.Delete
34
+ || (transition.action === TransitionAction.Create && (transition.links?.length ?? 0) > 0);
35
+ const foldRelationships = async (store, transition) => {
36
+ const links = store.links;
37
+ if (links == null || !bearsRelationships(transition)) {
64
38
  return;
65
39
  }
40
+ const where = { entityId: transition.entityId };
41
+ const [outgoing, incoming] = await Promise.all([
42
+ links.list({ ...where, from: transition.card }, { size: 0 }),
43
+ links.list({ ...where, to: transition.card }, { size: 0 }),
44
+ ]);
45
+ const before = [...new Map([...outgoing.items, ...incoming.items].map(link => [link.id, link])).values()];
46
+ const after = applyHelper.applyRelationship(before, transition);
47
+ const kept = new Set(after.filter(link => link.id != null).map(link => link.id));
48
+ for (const link of before) {
49
+ if (link.id != null && !kept.has(link.id)) {
50
+ await links.drop({ entityId: transition.entityId, id: link.id });
51
+ }
52
+ }
53
+ for (const link of after) {
54
+ if (link.id == null) {
55
+ await links.put(link);
56
+ }
57
+ }
58
+ };
59
+ const writeFold = async (store, before, after, transition) => {
60
+ if (transition.action === TransitionAction.Delete) {
61
+ if (before != null && cardHelper.isProject(before)) {
62
+ // A project takes everything under it, its own log included — the hub remembers the commit.
63
+ await store.cards.purge(transition.card, transition.entityId);
64
+ return;
65
+ }
66
+ await foldRelationships(store, transition);
67
+ await store.cards.drop(transition.card, transition.entityId);
68
+ return;
69
+ }
70
+ if (after != null) {
71
+ await store.cards.put(after);
72
+ }
66
73
  await foldRelationships(store, transition);
67
- await store.cards.drop(transition.card, transition.entityId);
68
- return;
69
- }
70
- if (after != null) {
71
- await store.cards.put(after);
72
- }
73
- await foldRelationships(store, transition);
74
- };
75
- /**
76
- * Fold every pending transition of one card — the projection body every store reuses.
77
- *
78
- * Transitions are read in `seq` order past the card's own `seq`, and only `pending` ones are
79
- * applied, each with `applyTransition` and nothing else. Per transition: write the record (a
80
- * `delete` drops it, a project `delete` purges everything under it), fold its relationships, mark
81
- * it `committed`, `publish` the event, then run `onCommitted` — so the `after` chain runs in THIS
82
- * process, exactly once per committed transition. A transition that cannot be folded is marked
83
- * `failed` with the reason and a failed event is published, and the fold goes PAST it: the card's
84
- * `seq` advances to the failed transition with every other value as it was, so the next
85
- * transition applies normally. Nothing is removed from the log. A create that fails leaves no card
86
- * to advance, so what follows it fails too; a store that refuses the advancing write itself stops
87
- * the fold there and reports `followUp`, leaving the rest pending for a retry.
88
- *
89
- * The caller owns single flight: two folds of one card running at once would both publish. A
90
- * transactional store passes `unit`, which wraps each transition's writes (a savepoint), so a write
91
- * the database refuses is undone whole before the fold marks the transition failed.
92
- *
93
- * @throws {PlanningUnsupported} for a store without a transition log
94
- */
95
- export const foldPending = async (store, cardId, entityId, opts = {}) => {
96
- const transitions = store.transitions;
97
- if (transitions == null) {
98
- throw new PlanningUnsupported(`fold:${store.alias ?? 'store'}`);
99
- }
100
- const now = opts.now ?? isoNow;
101
- let card = await store.cards.get(cardId, entityId);
102
- const listed = await transitions.list({ entityId, card: cardId, sinceSeq: card?.seq ?? 0, state: CommitState.Pending }, { sort: ['seq'], size: opts.limit ?? 0 });
103
- let folded = 0;
104
- let failed = 0;
105
- for (const transition of listed.items) {
106
- if (transition.commit.state !== CommitState.Pending || transition.id == null) {
107
- continue;
74
+ };
75
+ const foldPending = async (store, cardId, entityId, opts = {}) => {
76
+ const transitions = store.transitions;
77
+ if (transitions == null) {
78
+ throw new PlanningUnsupported(`fold:${store.alias ?? 'store'}`);
108
79
  }
109
- await opts.touch?.();
110
- const at = now();
111
- let next;
112
- try {
113
- next = applyTransition(card, transition);
114
- if (card != null && next === card) {
115
- // Already applied by another folder, which owns its commit and its event.
80
+ const now = opts.now ?? isoNow;
81
+ let card = await store.cards.get(cardId, entityId);
82
+ const listed = await transitions.list({ entityId, card: cardId, sinceSeq: card?.seq ?? 0, state: CommitState.Pending }, { sort: ['seq'], size: opts.limit ?? 0 });
83
+ let folded = 0;
84
+ let failed = 0;
85
+ for (const transition of listed.items) {
86
+ if (transition.commit.state !== CommitState.Pending || transition.id == null) {
116
87
  continue;
117
88
  }
118
- const before = card;
119
- const after = next;
120
- await (opts.unit != null
121
- ? opts.unit(async () => { await writeFold(store, before, after, transition); })
122
- : writeFold(store, before, after, transition));
123
- }
124
- catch (error) {
125
- failed++;
126
- const message = errorText(error);
127
- if (card != null && transition.seq > card.seq) {
128
- // Fold PAST it: the record keeps its previous values and only its cursor moves, so the
129
- // next transition still applies. The card is re-written whole, which also undoes a write
130
- // that got half way before it threw.
131
- const skipped = { ...card, seq: transition.seq, head: Math.max(card.head ?? card.seq, transition.seq) };
132
- try {
133
- await store.cards.put(skipped);
134
- card = skipped;
89
+ await opts.touch?.();
90
+ const at = now();
91
+ let next;
92
+ try {
93
+ next = applyHelper.applyTransition(card, transition);
94
+ if (card != null && next === card) {
95
+ // Already applied by another folder, which owns its commit and its event.
96
+ continue;
135
97
  }
136
- catch (advance) {
137
- // The store itself refuses writes: leave the rest pending for a retry rather than
138
- // failing every later transition as out of order.
139
- log.error('Planning cannot advance a card past a failed transition', { cardId, seq: transition.seq, error: advance });
140
- await safely('commit failure', () => transitions.commit(transition.id, { state: CommitState.Failed, at, error: message }));
141
- await safely('publish', () => opts.publish?.(commitEventOf(transition, CommitState.Failed, at, { error: message })));
142
- return { card, folded, failed, followUp: true };
98
+ const before = card;
99
+ const after = next;
100
+ await (opts.unit != null
101
+ ? opts.unit(async () => { await writeFold(store, before, after, transition); })
102
+ : writeFold(store, before, after, transition));
103
+ }
104
+ catch (error) {
105
+ failed++;
106
+ const message = errorText(error);
107
+ if (card != null && transition.seq > card.seq) {
108
+ // Fold PAST it: the record keeps its previous values and only its cursor moves, so the
109
+ // next transition still applies. The card is re-written whole, which also undoes a write
110
+ // that got half way before it threw.
111
+ const skipped = { ...card, seq: transition.seq, head: Math.max(card.head ?? card.seq, transition.seq) };
112
+ try {
113
+ await store.cards.put(skipped);
114
+ card = skipped;
115
+ }
116
+ catch (advance) {
117
+ // The store itself refuses writes: leave the rest pending for a retry rather than
118
+ // failing every later transition as out of order.
119
+ log.error('Planning cannot advance a card past a failed transition', { cardId, seq: transition.seq, error: advance });
120
+ await safely('commit failure', () => transitions.commit(transition.id, { state: CommitState.Failed, at, error: message }));
121
+ await safely('publish', () => opts.publish?.(commitEventOf(transition, CommitState.Failed, at, { error: message })));
122
+ return { card, folded, failed, followUp: true };
123
+ }
143
124
  }
125
+ await safely('commit failure', () => transitions.commit(transition.id, { state: CommitState.Failed, at, error: message }));
126
+ const event = commitEventOf(transition, CommitState.Failed, at, { error: message });
127
+ await safely('publish', () => opts.publish?.(event));
128
+ continue;
144
129
  }
145
- await safely('commit failure', () => transitions.commit(transition.id, { state: CommitState.Failed, at, error: message }));
146
- const event = commitEventOf(transition, CommitState.Failed, at, { error: message });
130
+ card = next;
131
+ folded++;
132
+ await safely('commit', () => transitions.commit(transition.id, { state: CommitState.Committed, at }));
133
+ const event = commitEventOf(transition, CommitState.Committed, at, { record: next });
147
134
  await safely('publish', () => opts.publish?.(event));
148
- continue;
135
+ await safely('onCommitted', () => opts.onCommitted?.(event));
149
136
  }
150
- card = next;
151
- folded++;
152
- await safely('commit', () => transitions.commit(transition.id, { state: CommitState.Committed, at }));
153
- const event = commitEventOf(transition, CommitState.Committed, at, { record: next });
154
- await safely('publish', () => opts.publish?.(event));
155
- await safely('onCommitted', () => opts.onCommitted?.(event));
156
- }
157
- return { card, folded, failed, followUp: listed.total > listed.items.length };
158
- };
159
- /**
160
- * Mark every pending transition of a card `failed` and publish a failed event for each — what a
161
- * queued store does when its projection job is dead, or waiters hang until their timeout.
162
- */
163
- export const failPending = async (store, cardId, entityId, reason, opts = {}) => {
164
- const transitions = store.transitions;
165
- if (transitions == null) {
166
- return 0;
167
- }
168
- const at = (opts.now ?? isoNow)();
169
- const pending = await transitions.list({ entityId, card: cardId, state: CommitState.Pending }, { sort: ['seq'], size: 0 });
170
- for (const transition of pending.items) {
171
- if (transition.id == null) {
172
- continue;
137
+ return { card, folded, failed, followUp: listed.total > listed.items.length };
138
+ };
139
+ const failPending = async (store, cardId, entityId, reason, opts = {}) => {
140
+ const transitions = store.transitions;
141
+ if (transitions == null) {
142
+ return 0;
173
143
  }
174
- await transitions.commit(transition.id, { state: CommitState.Failed, at, error: reason });
175
- const event = commitEventOf(transition, CommitState.Failed, at, { error: reason });
176
- await safely('publish', () => opts.publish?.(event));
177
- }
178
- return pending.items.length;
179
- };
180
- /**
181
- * A specification's history, replayed from its log: one entry per create and per committed
182
- * content change, newest first. The fold is `applyTransition` itself, so an entry's `body` is the
183
- * body AT that revision even when the transition changed only `ref`.
184
- */
185
- export const revisionsFromLog = (log, limit) => {
186
- const ordered = log.filter(transition => transition.commit.state !== CommitState.Pending)
187
- .sort((left, right) => left.seq - right.seq);
188
- const entries = [];
189
- let state = null;
190
- for (const transition of ordered) {
191
- if (transition.commit.state === CommitState.Failed) {
192
- // The fold went past it; so does the replay.
193
- if (state != null && transition.seq > state.seq) {
194
- state = { ...state, seq: transition.seq };
144
+ const at = (opts.now ?? isoNow)();
145
+ const pending = await transitions.list({ entityId, card: cardId, state: CommitState.Pending }, { sort: ['seq'], size: 0 });
146
+ for (const transition of pending.items) {
147
+ if (transition.id == null) {
148
+ continue;
195
149
  }
196
- continue;
197
- }
198
- try {
199
- state = applyTransition(state, transition);
200
- }
201
- catch {
202
- break;
203
- }
204
- if (state == null) {
205
- break;
150
+ await transitions.commit(transition.id, { state: CommitState.Failed, at, error: reason });
151
+ const event = commitEventOf(transition, CommitState.Failed, at, { error: reason });
152
+ await safely('publish', () => opts.publish?.(event));
206
153
  }
207
- const changed = transition.action === TransitionAction.Create
208
- || CONTENT_KEYS.some(key => transition.changes[key] !== undefined
209
- || transition.unset?.includes(key) === true);
210
- if (!changed) {
211
- continue;
154
+ return pending.items.length;
155
+ };
156
+ const revisionsFromLog = (log, limit) => {
157
+ const ordered = log.filter(transition => transition.commit.state !== CommitState.Pending)
158
+ .sort((left, right) => left.seq - right.seq);
159
+ const entries = [];
160
+ let state = null;
161
+ for (const transition of ordered) {
162
+ if (transition.commit.state === CommitState.Failed) {
163
+ // The fold went past it; so does the replay.
164
+ if (state != null && transition.seq > state.seq) {
165
+ state = { ...state, seq: transition.seq };
166
+ }
167
+ continue;
168
+ }
169
+ try {
170
+ state = applyHelper.applyTransition(state, transition);
171
+ }
172
+ catch {
173
+ break;
174
+ }
175
+ if (state == null) {
176
+ break;
177
+ }
178
+ const changed = transition.action === TransitionAction.Create
179
+ || CONTENT_KEYS.some(key => transition.changes[key] !== undefined
180
+ || transition.unset?.includes(key) === true);
181
+ if (!changed) {
182
+ continue;
183
+ }
184
+ const spec = state;
185
+ entries.push(clean({
186
+ revision: spec.revision ?? entries.length + 1,
187
+ body: spec.body,
188
+ ref: spec.ref,
189
+ bodyChars: spec.bodyChars,
190
+ version: spec.version,
191
+ at: transition.at,
192
+ by: transition.actor,
193
+ transition: transition.id,
194
+ }));
212
195
  }
213
- const spec = state;
214
- entries.push(clean({
215
- revision: spec.revision ?? entries.length + 1,
216
- body: spec.body,
217
- ref: spec.ref,
218
- bodyChars: spec.bodyChars,
219
- version: spec.version,
220
- at: transition.at,
221
- by: transition.actor,
222
- transition: transition.id,
223
- }));
224
- }
225
- const newest = entries.reverse();
226
- return limit != null && limit > 0 ? newest.slice(0, limit) : newest;
196
+ const newest = entries.reverse();
197
+ return limit != null && limit > 0 ? newest.slice(0, limit) : newest;
198
+ };
199
+ return { commitEventOf, foldPending, failPending, revisionsFromLog };
227
200
  };
201
+ export const foldHelper = createFoldHelper();
202
+ /** @deprecated compat:factory-refactor — use `foldHelper.commitEventOf(…)` */
203
+ export const commitEventOf = (transition, state, at, extra) => foldHelper.commitEventOf(transition, state, at, extra);
204
+ /** @deprecated compat:factory-refactor — use `foldHelper.foldPending(…)` */
205
+ export const foldPending = async (store, cardId, entityId, opts = {}) => await foldHelper.foldPending(store, cardId, entityId, opts);
206
+ /** @deprecated compat:factory-refactor — use `foldHelper.failPending(…)` */
207
+ export const failPending = async (store, cardId, entityId, reason, opts = {}) => await foldHelper.failPending(store, cardId, entityId, reason, opts);
208
+ /** @deprecated compat:factory-refactor — use `foldHelper.revisionsFromLog(…)` */
209
+ export const revisionsFromLog = (log, limit) => foldHelper.revisionsFromLog(log, limit);
228
210
  //# sourceMappingURL=fold.js.map