@owlmeans/server-planning 0.1.18-rc.2 → 0.1.18-rc.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 (217) hide show
  1. package/README.md +40 -12
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/server-planning/SKILL.md +193 -18
  4. package/build/actions/cards.d.ts +3 -5
  5. package/build/actions/cards.d.ts.map +1 -1
  6. package/build/actions/cards.js +1 -1
  7. package/build/actions/cards.js.map +1 -1
  8. package/build/actions/execute.d.ts +24 -3
  9. package/build/actions/execute.d.ts.map +1 -1
  10. package/build/actions/execute.js +82 -8
  11. package/build/actions/execute.js.map +1 -1
  12. package/build/actions/schemas.d.ts +27 -5
  13. package/build/actions/schemas.d.ts.map +1 -1
  14. package/build/actions/schemas.js +67 -7
  15. package/build/actions/schemas.js.map +1 -1
  16. package/build/actions/specs.d.ts +2 -4
  17. package/build/actions/specs.d.ts.map +1 -1
  18. package/build/actions/specs.js.map +1 -1
  19. package/build/actions/types.d.ts +4 -0
  20. package/build/actions/types.d.ts.map +1 -0
  21. package/build/actions/types.js +2 -0
  22. package/build/actions/types.js.map +1 -0
  23. package/build/actions/watch.d.ts.map +1 -1
  24. package/build/actions/watch.js +4 -2
  25. package/build/actions/watch.js.map +1 -1
  26. package/build/conformance/assert.d.ts +20 -0
  27. package/build/conformance/assert.d.ts.map +1 -0
  28. package/build/conformance/assert.js +54 -0
  29. package/build/conformance/assert.js.map +1 -0
  30. package/build/conformance/cases.d.ts +7 -0
  31. package/build/conformance/cases.d.ts.map +1 -0
  32. package/build/conformance/cases.js +447 -0
  33. package/build/conformance/cases.js.map +1 -0
  34. package/build/conformance/consts.d.ts +19 -0
  35. package/build/conformance/consts.d.ts.map +1 -0
  36. package/build/conformance/consts.js +42 -0
  37. package/build/conformance/consts.js.map +1 -0
  38. package/build/conformance/fixtures.d.ts +14 -0
  39. package/build/conformance/fixtures.d.ts.map +1 -0
  40. package/build/conformance/fixtures.js +109 -0
  41. package/build/conformance/fixtures.js.map +1 -0
  42. package/build/conformance/index.d.ts +12 -0
  43. package/build/conformance/index.d.ts.map +1 -0
  44. package/build/conformance/index.js +11 -0
  45. package/build/conformance/index.js.map +1 -0
  46. package/build/conformance/types.d.ts +18 -0
  47. package/build/conformance/types.d.ts.map +1 -0
  48. package/build/conformance/types.js +2 -0
  49. package/build/conformance/types.js.map +1 -0
  50. package/build/consts.d.ts +5 -0
  51. package/build/consts.d.ts.map +1 -1
  52. package/build/consts.js +5 -0
  53. package/build/consts.js.map +1 -1
  54. package/build/definitions.d.ts +17 -0
  55. package/build/definitions.d.ts.map +1 -0
  56. package/build/definitions.js +211 -0
  57. package/build/definitions.js.map +1 -0
  58. package/build/executor/changes.d.ts +2 -2
  59. package/build/executor/changes.d.ts.map +1 -1
  60. package/build/executor/changes.js.map +1 -1
  61. package/build/executor/code.d.ts +3 -3
  62. package/build/executor/code.d.ts.map +1 -1
  63. package/build/executor/code.js +1 -1
  64. package/build/executor/code.js.map +1 -1
  65. package/build/executor/consts.local.d.ts +5 -0
  66. package/build/executor/consts.local.d.ts.map +1 -0
  67. package/build/executor/consts.local.js +6 -0
  68. package/build/executor/consts.local.js.map +1 -0
  69. package/build/executor/creator.d.ts +30 -0
  70. package/build/executor/creator.d.ts.map +1 -0
  71. package/build/executor/creator.js +46 -0
  72. package/build/executor/creator.js.map +1 -0
  73. package/build/executor/resolve.d.ts +31 -23
  74. package/build/executor/resolve.d.ts.map +1 -1
  75. package/build/executor/resolve.js +74 -15
  76. package/build/executor/resolve.js.map +1 -1
  77. package/build/executor/types.d.ts +24 -0
  78. package/build/executor/types.d.ts.map +1 -0
  79. package/build/executor/types.js +2 -0
  80. package/build/executor/types.js.map +1 -0
  81. package/build/executor/validate.d.ts +6 -5
  82. package/build/executor/validate.d.ts.map +1 -1
  83. package/build/executor/validate.js +18 -15
  84. package/build/executor/validate.js.map +1 -1
  85. package/build/executor.d.ts +10 -7
  86. package/build/executor.d.ts.map +1 -1
  87. package/build/executor.js +17 -14
  88. package/build/executor.js.map +1 -1
  89. package/build/facade.d.ts +20 -2
  90. package/build/facade.d.ts.map +1 -1
  91. package/build/facade.js +128 -18
  92. package/build/facade.js.map +1 -1
  93. package/build/helper.d.ts +3 -2
  94. package/build/helper.d.ts.map +1 -1
  95. package/build/helper.js +7 -3
  96. package/build/helper.js.map +1 -1
  97. package/build/index.d.ts +1 -0
  98. package/build/index.d.ts.map +1 -1
  99. package/build/index.js +1 -0
  100. package/build/index.js.map +1 -1
  101. package/build/projection.d.ts +2 -10
  102. package/build/projection.d.ts.map +1 -1
  103. package/build/projection.js +1 -1
  104. package/build/projection.js.map +1 -1
  105. package/build/queue/consts.d.ts +5 -0
  106. package/build/queue/consts.d.ts.map +1 -0
  107. package/build/queue/consts.js +5 -0
  108. package/build/queue/consts.js.map +1 -0
  109. package/build/queue/index.d.ts +4 -16
  110. package/build/queue/index.d.ts.map +1 -1
  111. package/build/queue/index.js +2 -4
  112. package/build/queue/index.js.map +1 -1
  113. package/build/queue/types.d.ts +13 -0
  114. package/build/queue/types.d.ts.map +1 -0
  115. package/build/queue/types.js +2 -0
  116. package/build/queue/types.js.map +1 -0
  117. package/build/registry.d.ts +2 -21
  118. package/build/registry.d.ts.map +1 -1
  119. package/build/registry.js +3 -1
  120. package/build/registry.js.map +1 -1
  121. package/build/service.d.ts +3 -16
  122. package/build/service.d.ts.map +1 -1
  123. package/build/service.js +9 -0
  124. package/build/service.js.map +1 -1
  125. package/build/store/commits.d.ts.map +1 -1
  126. package/build/store/commits.js +3 -1
  127. package/build/store/commits.js.map +1 -1
  128. package/build/store/composite.d.ts +1 -0
  129. package/build/store/composite.d.ts.map +1 -1
  130. package/build/store/composite.js +3 -0
  131. package/build/store/composite.js.map +1 -1
  132. package/build/store/consts.local.d.ts +2 -0
  133. package/build/store/consts.local.d.ts.map +1 -0
  134. package/build/store/consts.local.js +2 -0
  135. package/build/store/consts.local.js.map +1 -0
  136. package/build/store/fold.d.ts +4 -3
  137. package/build/store/fold.d.ts.map +1 -1
  138. package/build/store/fold.js +14 -6
  139. package/build/store/fold.js.map +1 -1
  140. package/build/store/memory.d.ts +12 -0
  141. package/build/store/memory.d.ts.map +1 -1
  142. package/build/store/memory.js +0 -0
  143. package/build/store/memory.js.map +1 -1
  144. package/build/store/types.d.ts +15 -1
  145. package/build/store/types.d.ts.map +1 -1
  146. package/build/store/types.local.d.ts +3 -0
  147. package/build/store/types.local.d.ts.map +1 -0
  148. package/build/store/types.local.js +2 -0
  149. package/build/store/types.local.js.map +1 -0
  150. package/build/types.d.ts +111 -1
  151. package/build/types.d.ts.map +1 -1
  152. package/build/types.local.d.ts +7 -0
  153. package/build/types.local.d.ts.map +1 -0
  154. package/build/types.local.js +2 -0
  155. package/build/types.local.js.map +1 -0
  156. package/build/utils/index.d.ts +1 -0
  157. package/build/utils/index.d.ts.map +1 -1
  158. package/build/utils/scope.d.ts +39 -2
  159. package/build/utils/scope.d.ts.map +1 -1
  160. package/build/utils/scope.js +79 -15
  161. package/build/utils/scope.js.map +1 -1
  162. package/build/utils/types.d.ts +8 -0
  163. package/build/utils/types.d.ts.map +1 -0
  164. package/build/utils/types.js +2 -0
  165. package/build/utils/types.js.map +1 -0
  166. package/package.json +28 -20
  167. package/src/actions/cards.ts +2 -6
  168. package/src/actions/execute.ts +95 -12
  169. package/src/actions/schemas.ts +81 -9
  170. package/src/actions/specs.ts +1 -2
  171. package/src/actions/types.ts +4 -0
  172. package/src/actions/watch.ts +5 -2
  173. package/src/conformance/assert.ts +59 -0
  174. package/src/conformance/cases.ts +522 -0
  175. package/src/conformance/consts.ts +44 -0
  176. package/src/conformance/fixtures.ts +121 -0
  177. package/src/conformance/index.ts +11 -0
  178. package/src/conformance/types.ts +20 -0
  179. package/src/consts.ts +6 -0
  180. package/src/definitions.ts +250 -0
  181. package/src/executor/changes.ts +2 -6
  182. package/src/executor/code.ts +3 -9
  183. package/src/executor/consts.local.ts +8 -0
  184. package/src/executor/creator.ts +51 -0
  185. package/src/executor/resolve.ts +84 -40
  186. package/src/executor/types.ts +25 -0
  187. package/src/executor/validate.ts +22 -26
  188. package/src/executor.ts +21 -21
  189. package/src/facade.ts +143 -25
  190. package/src/helper.ts +7 -3
  191. package/src/index.ts +1 -0
  192. package/src/projection.ts +4 -14
  193. package/src/queue/consts.ts +5 -0
  194. package/src/queue/index.ts +6 -21
  195. package/src/queue/types.ts +14 -0
  196. package/src/registry.ts +5 -29
  197. package/src/service.ts +13 -20
  198. package/src/store/commits.ts +5 -4
  199. package/src/store/composite.ts +3 -0
  200. package/src/store/consts.local.ts +1 -0
  201. package/src/store/fold.ts +15 -12
  202. package/src/store/memory.ts +0 -0
  203. package/src/store/types.local.ts +3 -0
  204. package/src/store/types.ts +16 -1
  205. package/src/types.local.ts +7 -0
  206. package/src/types.ts +126 -4
  207. package/src/utils/index.ts +1 -0
  208. package/src/utils/scope.ts +97 -17
  209. package/src/utils/types.ts +8 -0
  210. package/tests/access.spec.ts +160 -0
  211. package/tests/conformance.spec.ts +47 -0
  212. package/tests/create-example.spec.ts +202 -0
  213. package/tests/creator.spec.ts +257 -0
  214. package/tests/entrypoints.spec.ts +5 -0
  215. package/tests/narrowing.spec.ts +94 -0
  216. package/tests/plugins.spec.ts +4 -3
  217. package/tests/writes.spec.ts +140 -0
package/build/executor.js CHANGED
@@ -2,9 +2,11 @@ import { uuid } from '@owlmeans/basic-ids';
2
2
  import { PlanningError, PlanningUnsupported, WorkcardConflict } from '@owlmeans/planning';
3
3
  import { changeSetOf, transitionOf } from './executor/changes.js';
4
4
  import { assignCode } from './executor/code.js';
5
+ import { withCreator } from './executor/creator.js';
5
6
  import { makeReceipt } from './executor/receipt.js';
6
- import { normalizeExecution, projectFor, resolveExecution } from './executor/resolve.js';
7
7
  import { validateExecution } from './executor/validate.js';
8
+ import { resolveHelper } from './executor/resolve.js';
9
+ export { assertCreatorFixed, creatorOf, withCreator } from './executor/creator.js';
8
10
  const isoNow = () => new Date().toISOString();
9
11
  /** What a type/parent change by a middleware is judged by. */
10
12
  const identityOf = (exec) => typeof exec.card === 'string'
@@ -13,7 +15,7 @@ const identityOf = (exec) => typeof exec.card === 'string'
13
15
  const execContextOf = (runtime, facade, resolved) => (plugin) => ({
14
16
  context: runtime.context(),
15
17
  scope: facade.scope,
16
- schemas: runtime.service().schemas,
18
+ schemas: resolved.schemas,
17
19
  store: resolved.store,
18
20
  facade,
19
21
  plugin,
@@ -43,19 +45,20 @@ const currentReceipt = async (store, resolved, entityId, opts) => {
43
45
  /**
44
46
  * THE write path. Nothing is appended before step 11, so every refusal leaves the log untouched.
45
47
  *
46
- * 1 normalize → 2 scope → 3 idempotency (a known `key` answers its first receipt, before any
47
- * validation) → 4 resolve → 5 the plugins' `before` chain (re-resolved once when it moved the type
48
- * or the parent) → 6 validate → 7 allocate the card id → 8 code → 9 changes (an update changing
49
- * nothing answers the current receipt and appends nothing) → 10 seq, a CAS against the head →
50
- * 11 append → 12 request the projection → 13 receipt → 14 `wait`.
48
+ * 1 normalize (a create's `createdBy` defaults to the scope's subject — {@link withCreator}) →
49
+ * 2 scope → 3 idempotency (a known `key` answers its first receipt, before any validation) →
50
+ * 4 resolve → 5 the plugins' `before` chain (re-resolved once when it moved the type or the parent)
51
+ * → 6 validate (a `createdBy` in `changes`/`unset` is refused — {@link assertCreatorFixed}) →
52
+ * 7 allocate the card id → 8 code → 9 changes (an update changing nothing answers
53
+ * the current receipt and appends nothing) → 10 seq, a CAS against the head → 11 append →
54
+ * 12 request the projection → 13 receipt → 14 `wait`.
51
55
  *
52
56
  * `after` hooks are NOT run here — the process that folds runs them, once per commit.
53
57
  */
54
58
  export const executeTransition = async (runtime, facade, input, opts) => {
55
59
  const scope = facade.scope;
56
- const service = runtime.service();
57
60
  const at = (runtime.options.now ?? isoNow)();
58
- let exec = normalizeExecution(input);
61
+ let exec = withCreator(resolveHelper.normalizeExecution(input), scope);
59
62
  if (scope.entityId == null || scope.entityId === '') {
60
63
  throw new PlanningError('malformed:scope-without-entity');
61
64
  }
@@ -65,11 +68,11 @@ export const executeTransition = async (runtime, facade, input, opts) => {
65
68
  return await makeReceipt(found.store, found.transition, opts);
66
69
  }
67
70
  }
68
- let resolved = await resolveExecution(runtime, facade, exec);
71
+ let resolved = await resolveHelper.resolveExecution(runtime, facade, exec);
69
72
  const before = identityOf(exec);
70
- exec = normalizeExecution(await runtime.registry.before(exec, execContextOf(runtime, facade, resolved)));
73
+ exec = resolveHelper.normalizeExecution(await runtime.registry.before(exec, execContextOf(runtime, facade, resolved)));
71
74
  if (identityOf(exec) !== before) {
72
- resolved = await resolveExecution(runtime, facade, exec);
75
+ resolved = await resolveHelper.resolveExecution(runtime, facade, exec);
73
76
  }
74
77
  await validateExecution(runtime, facade, exec, resolved);
75
78
  const store = resolved.store;
@@ -81,7 +84,7 @@ export const executeTransition = async (runtime, facade, input, opts) => {
81
84
  ? store.newId?.() ?? runtime.options.ids?.() ?? uuid()
82
85
  : resolved.card.id;
83
86
  exec = await assignCode(exec, resolved, scope, runtime.registry, execContextOf(runtime, facade, resolved));
84
- const { set, empty } = changeSetOf(exec, resolved, service.schemas, at);
87
+ const { set, empty } = changeSetOf(exec, resolved, resolved.schemas, at);
85
88
  if (empty) {
86
89
  return await currentReceipt(store, resolved, scope.entityId, opts);
87
90
  }
@@ -91,7 +94,7 @@ export const executeTransition = async (runtime, facade, input, opts) => {
91
94
  }
92
95
  const transition = transitionOf({
93
96
  exec, resolved, scope, set, cardId, seq, at,
94
- project: projectFor(resolved, exec, cardId),
97
+ project: resolveHelper.projectFor(resolved, exec, cardId),
95
98
  });
96
99
  let appended;
97
100
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/build/facade.d.ts CHANGED
@@ -1,5 +1,13 @@
1
- import type { PlanningFacade, PlanningScope } from '@owlmeans/planning';
2
- import type { PlanningRuntime } from './service.js';
1
+ import { type PlanningFacade, type PlanningScope, type Workcard } from '@owlmeans/planning';
2
+ import type { Criteria } from '@owlmeans/resource';
3
+ import type { PlanningRuntime } from './types.js';
4
+ /**
5
+ * The criteria a scope narrowed to `projects` adds to every card list, count and summary: the
6
+ * projects themselves, every card whose `parents` name one of them, and the specifications whose
7
+ * parent card is one of `through` — the cards of those projects a specification is seen through,
8
+ * exactly as a single read sees it (a specification's `parents` hold only its own card).
9
+ */
10
+ export declare const projectCriteriaOf: (projects: readonly string[], through?: readonly string[]) => Criteria<Workcard>;
3
11
  /**
4
12
  * The scoped facade over the service's stores.
5
13
  *
@@ -7,6 +15,16 @@ import type { PlanningRuntime } from './service.js';
7
15
  * a card of another entity is simply absent — `load` answers `null`, `get` throws
8
16
  * `WorkcardNotFound`, exactly as for an id that never existed. Reads go through the composite
9
17
  * store (the default store plus the stores plugins own); writes go through the executor.
18
+ *
19
+ * A scope naming `projects` sees those projects, the cards whose `parents` name one of them, and a
20
+ * specification whose parent card is one of those (a card's specification through its card);
21
+ * everything else reads as absent. Lists, counts and summaries are narrowed by an AND'd criteria
22
+ * that admits the same cards a single read does — the parent cards a specification is seen through
23
+ * are resolved once per call ({@link projectCriteriaOf}) — and commit events and transitions
24
+ * outside the set are dropped or refused.
25
+ *
26
+ * `definitions` is present when the default store holds data-defined schemas; a model is then
27
+ * built over the registry of the card's own project.
10
28
  */
11
29
  export declare const makeStoreFacade: (runtime: PlanningRuntime, scope: PlanningScope) => PlanningFacade;
12
30
  //# sourceMappingURL=facade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACI,cAAc,EAAE,aAAa,EAC5C,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGnD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,YAAa,eAAe,SAAS,aAAa,KAAG,cA8IhF,CAAA"}
1
+ {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6O,KAAK,cAAc,EAAE,KAAK,aAAa,EAA0D,KAAK,QAAQ,EAA0C,MAAM,oBAAoB,CAAA;AACta,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,aAAc,SAAS,MAAM,EAAE,YAAW,SAAS,MAAM,EAAE,KAAQ,QAAQ,CAAC,QAAQ,CAM1F,CAAA;AAExB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,YAAa,eAAe,SAAS,aAAa,KAAG,cA+OhF,CAAA"}
package/build/facade.js CHANGED
@@ -1,5 +1,20 @@
1
- import { criteriaOf, currentSpecification, isSpecification, linkWhereOf, listOptionsOf, modelOf, PlanningUnsupported, specCriteriaOf, transitionWhereOf, WorkcardKind, WorkcardNotFound, } from '@owlmeans/planning';
1
+ import { criteriaOf, currentSpecification, isProject, isSpecification, linkWhereOf, listOptionsOf, modelOf, projectOf, PlanningUnsupported, specCriteriaOf, transitionWhereOf, WorkcardKind, WorkcardNotFound } from '@owlmeans/planning';
2
+ import { makeDefinitions } from './definitions.js';
2
3
  import { executeTransition } from './executor.js';
4
+ import { wantsSpecifications } from './store/memory.js';
5
+ /**
6
+ * The criteria a scope narrowed to `projects` adds to every card list, count and summary: the
7
+ * projects themselves, every card whose `parents` name one of them, and the specifications whose
8
+ * parent card is one of `through` — the cards of those projects a specification is seen through,
9
+ * exactly as a single read sees it (a specification's `parents` hold only its own card).
10
+ */
11
+ export const projectCriteriaOf = (projects, through = []) => ({
12
+ $or: [
13
+ { id: { $in: [...projects] } },
14
+ { parents: { $overlaps: [...projects] } },
15
+ ...(through.length > 0 ? [{ kind: WorkcardKind.Specification, parent: { $in: [...through] } }] : []),
16
+ ],
17
+ });
3
18
  /**
4
19
  * The scoped facade over the service's stores.
5
20
  *
@@ -7,11 +22,66 @@ import { executeTransition } from './executor.js';
7
22
  * a card of another entity is simply absent — `load` answers `null`, `get` throws
8
23
  * `WorkcardNotFound`, exactly as for an id that never existed. Reads go through the composite
9
24
  * store (the default store plus the stores plugins own); writes go through the executor.
25
+ *
26
+ * A scope naming `projects` sees those projects, the cards whose `parents` name one of them, and a
27
+ * specification whose parent card is one of those (a card's specification through its card);
28
+ * everything else reads as absent. Lists, counts and summaries are narrowed by an AND'd criteria
29
+ * that admits the same cards a single read does — the parent cards a specification is seen through
30
+ * are resolved once per call ({@link projectCriteriaOf}) — and commit events and transitions
31
+ * outside the set are dropped or refused.
32
+ *
33
+ * `definitions` is present when the default store holds data-defined schemas; a model is then
34
+ * built over the registry of the card's own project.
10
35
  */
11
36
  export const makeStoreFacade = (runtime, scope) => {
12
37
  const entityId = scope.entityId;
38
+ const projects = scope.projects != null ? [...new Set(scope.projects)] : undefined;
13
39
  const reader = () => runtime.reader();
14
40
  const mine = (record) => record != null && record.entityId === entityId ? record : null;
41
+ const inProjects = (card) => projects == null
42
+ || (card.id != null && projects.includes(card.id))
43
+ || card.parents.some(parent => projects.includes(parent));
44
+ /** A card this scope may see — a specification through its parent card. */
45
+ const visible = async (card) => {
46
+ if (card == null || inProjects(card)) {
47
+ return card;
48
+ }
49
+ if (isSpecification(card) && card.parent != null) {
50
+ const parent = mine(await reader().cards.get(card.parent, entityId));
51
+ return parent != null && inProjects(parent) ? card : null;
52
+ }
53
+ return null;
54
+ };
55
+ /**
56
+ * The cards a narrowed list or count may see specifications THROUGH — what {@link visible} admits
57
+ * one by: its parent card in the scope's projects. One read per call, and only for criteria that
58
+ * ask for specifications at all (`wantsSpecifications`, the rule every store routes a list by): the
59
+ * parent the query names, or else the projects' own cards. A summary counts no specification.
60
+ */
61
+ const throughOf = async (where, parent) => {
62
+ if (projects == null || projects.length === 0 || !wantsSpecifications(where)) {
63
+ return [];
64
+ }
65
+ if (parent != null) {
66
+ const card = mine(await reader().cards.get(parent, entityId));
67
+ return card != null && inProjects(card) ? [parent] : [];
68
+ }
69
+ const listed = await reader().cards.list({ entityId, parents: { $overlaps: projects } }, { size: 0 });
70
+ // A project's own specifications are matched by their `parents` already.
71
+ return listed.items.filter(card => card.id != null && !projects.includes(card.id) && inProjects(card)).map(card => card.id);
72
+ };
73
+ /** A narrowed list's or count's criteria — `through` as {@link throughOf} resolved it. */
74
+ const narrowed = async (query) => {
75
+ const where = criteriaOf(query, scope);
76
+ return narrow(where, await throughOf(where, query?.parent));
77
+ };
78
+ const narrow = (where, through = []) => projects == null
79
+ ? where
80
+ : {
81
+ ...where,
82
+ $and: [...(where.$and ?? []), projectCriteriaOf(projects, through)],
83
+ };
84
+ const projectVisible = (project) => projects == null || (project != null && projects.includes(project));
15
85
  const commitSource = () => {
16
86
  const commits = reader().commits;
17
87
  if (commits == null) {
@@ -19,25 +89,33 @@ export const makeStoreFacade = (runtime, scope) => {
19
89
  }
20
90
  return commits;
21
91
  };
22
- /** The transition is this entity's — its row, or the remembered commit of a purged one. */
92
+ /** The transition is this entity's (and this scope's) — its row, or the remembered commit of a purged one. */
23
93
  const assertTransition = async (transition) => {
24
94
  const row = await reader().transitions?.get(transition);
25
95
  if (row != null) {
26
- if (row.entityId !== entityId) {
96
+ if (row.entityId !== entityId || !projectVisible(row.project)) {
27
97
  throw new WorkcardNotFound(`transition:${transition}`);
28
98
  }
29
99
  return;
30
100
  }
31
101
  const recalled = reader().commits?.recall?.(transition);
32
- if (recalled == null || recalled.entityId !== entityId) {
102
+ if (recalled == null || recalled.entityId !== entityId || !projectVisible(recalled.project)) {
33
103
  throw new WorkcardNotFound(`transition:${transition}`);
34
104
  }
35
105
  };
106
+ /** The project a card resolves its data-defined types in. */
107
+ const projectFor = async (card) => {
108
+ if (isProject(card) || card.parent == null) {
109
+ return projectOf(card);
110
+ }
111
+ const parent = mine(await reader().cards.get(card.parent, entityId));
112
+ return projectOf(card, parent);
113
+ };
36
114
  const facade = {
37
- scope: Object.freeze({ ...scope }),
115
+ scope: Object.freeze({ ...scope, ...(projects != null ? { projects } : {}) }),
38
116
  schemas: runtime.service().schemas,
39
117
  cards: {
40
- load: async (id) => mine(await reader().cards.get(id, entityId)),
118
+ load: async (id) => await visible(mine(await reader().cards.get(id, entityId))),
41
119
  get: async (id) => {
42
120
  const card = await facade.cards.load(id);
43
121
  if (card == null) {
@@ -45,14 +123,17 @@ export const makeStoreFacade = (runtime, scope) => {
45
123
  }
46
124
  return card;
47
125
  },
48
- list: async (query) => await reader().cards.list(criteriaOf(query, scope), listOptionsOf(query)),
49
- count: async (query) => await reader().cards.count(criteriaOf(query, scope)),
126
+ list: async (query) => await reader().cards.list(await narrowed(query), listOptionsOf(query)),
127
+ count: async (query) => await reader().cards.count(await narrowed(query)),
50
128
  summary: async (parents, query) => parents.length === 0
51
129
  ? {}
52
- : await reader().cards.summary(parents, criteriaOf({ kind: query?.kind, type: query?.type }, scope)),
130
+ : await reader().cards.summary(parents, narrow(criteriaOf({ kind: query?.kind, type: query?.type }, scope))),
53
131
  },
54
132
  specifications: {
55
133
  current: async (parent, category) => {
134
+ if (projects != null && await facade.cards.load(parent) == null) {
135
+ return null;
136
+ }
56
137
  const specs = reader().specs;
57
138
  if (specs != null) {
58
139
  return mine(await specs.current(parent, category, entityId));
@@ -61,6 +142,9 @@ export const makeStoreFacade = (runtime, scope) => {
61
142
  return currentSpecification(listed.items, category);
62
143
  },
63
144
  list: async (parent, query) => {
145
+ if (projects != null && await facade.cards.load(parent) == null) {
146
+ return { items: [], total: 0 };
147
+ }
64
148
  const specs = reader().specs;
65
149
  if (specs != null) {
66
150
  return await specs.list(parent, entityId, query);
@@ -86,24 +170,40 @@ export const makeStoreFacade = (runtime, scope) => {
86
170
  relationships: {
87
171
  list: async (query) => {
88
172
  const links = reader().links;
89
- return links == null
90
- ? { items: [], total: 0 }
91
- : await links.list(linkWhereOf(query, scope), listOptionsOf(query));
173
+ if (links == null) {
174
+ return { items: [], total: 0 };
175
+ }
176
+ if (projects == null) {
177
+ return await links.list(linkWhereOf(query, scope), listOptionsOf(query));
178
+ }
179
+ const listed = await links.list({ ...linkWhereOf(query, scope), project: projects }, listOptionsOf(query));
180
+ // A store that ignores `project` must still not leak an edge filed under another project.
181
+ const items = listed.items.filter((link) => projectVisible(link.project));
182
+ return items.length === listed.items.length ? listed : { ...listed, items, total: listed.total - (listed.items.length - items.length) };
92
183
  },
93
184
  },
94
185
  transitions: {
95
186
  get: async (id) => {
96
187
  const transition = mine(await reader().transitions?.get(id));
97
- if (transition == null) {
188
+ if (transition == null || !projectVisible(transition.project)) {
98
189
  throw new WorkcardNotFound(`transition:${id}`);
99
190
  }
100
191
  return transition;
101
192
  },
102
193
  list: async (query) => {
103
194
  const transitions = reader().transitions;
104
- return transitions == null
105
- ? { items: [], total: 0 }
106
- : await transitions.list(transitionWhereOf(query, scope), listOptionsOf(query));
195
+ if (transitions == null) {
196
+ return { items: [], total: 0 };
197
+ }
198
+ if (projects == null) {
199
+ return await transitions.list(transitionWhereOf(query, scope), listOptionsOf(query));
200
+ }
201
+ if (query.project != null && !projects.includes(query.project)) {
202
+ return { items: [], total: 0 };
203
+ }
204
+ const listed = await transitions.list({ ...transitionWhereOf(query, scope), project: query.project ?? projects }, listOptionsOf(query));
205
+ const items = listed.items.filter((transition) => projectVisible(transition.project));
206
+ return items.length === listed.items.length ? listed : { ...listed, items, total: listed.total - (listed.items.length - items.length) };
107
207
  },
108
208
  },
109
209
  commits: {
@@ -111,7 +211,9 @@ export const makeStoreFacade = (runtime, scope) => {
111
211
  await assertTransition(transition);
112
212
  return await commitSource().status(transition);
113
213
  },
114
- subscribe: (listener, filter) => commitSource().subscribe(listener, { ...filter, entityId }),
214
+ subscribe: (listener, filter) => commitSource().subscribe(projects == null
215
+ ? listener
216
+ : (event) => projectVisible(event.project) ? listener(event) : undefined, { ...filter, entityId }),
115
217
  wait: async (transition, opts) => {
116
218
  await assertTransition(transition);
117
219
  return await commitSource().wait(transition, opts);
@@ -123,9 +225,17 @@ export const makeStoreFacade = (runtime, scope) => {
123
225
  if (record.entityId !== entityId) {
124
226
  throw new WorkcardNotFound(record.id ?? WorkcardKind.Card);
125
227
  }
126
- return modelOf(record, facade);
228
+ if (runtime.schemaStore() == null) {
229
+ return modelOf(record, facade);
230
+ }
231
+ // A data-defined type answers from the registry of the card's own project.
232
+ const schemas = await runtime.schemasFor(entityId, await projectFor(record));
233
+ return modelOf(record, { ...facade, schemas });
127
234
  },
128
235
  };
236
+ if (runtime.schemaStore() != null) {
237
+ facade.definitions = makeDefinitions(runtime, facade);
238
+ }
129
239
  return facade;
130
240
  };
131
241
  //# sourceMappingURL=facade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
package/build/helper.d.ts CHANGED
@@ -4,8 +4,9 @@ import type { PlanningFacade, PlanningProtocols, PlanningScope } from '@owlmeans
4
4
  import type { PlanningHandlerOptions } from './types.js';
5
5
  /**
6
6
  * Bind this package's handlers to a tree declared by `makePlanningProtocols` — one binding per
7
- * protocol, the base included. Pass the tree itself, never a flattened list; an application that
8
- * wants its own handler for one leaf binds that protocol afterwards.
7
+ * protocol, the base included (and `schema.define` when the tree declares it). Pass the tree
8
+ * itself, never a flattened list; an application that wants its own handler for one leaf binds
9
+ * that protocol afterwards.
9
10
  */
10
11
  export declare const servePlanningEntrypoints: (protocols: PlanningProtocols, opts?: PlanningHandlerOptions) => import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocolDeclaration>[];
11
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAO1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,cAAe,iBAAiB,SAAS,sBAAsB,mIAenG,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QACjB,YAAY,CAAC,WAAW,CAAC,OAAO,eAAe,UAAU,OAAO,CAAC,aAAa,CAAC,SAC7E,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAC7C,cAAuE,CAAA"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAO1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,cAAe,iBAAiB,SAAS,sBAAsB,mIAkBnG,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QACjB,YAAY,CAAC,WAAW,CAAC,OAAO,eAAe,UAAU,OAAO,CAAC,aAAa,CAAC,SAC7E,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAC7C,cAAuE,CAAA"}
package/build/helper.js CHANGED
@@ -1,14 +1,18 @@
1
1
  import { bind } from '@owlmeans/server-entrypoint';
2
- import { executePlanning, getCard, getCommit, getSpecification, getTransition, listCardSpecifications, listCardTransitions, listCards, listLinks, listSchemas, listSpecificationRevisions, summarizeCards, watchCommits, } from './actions/index.js';
2
+ import { defineSchemas, executePlanning, getCard, getCommit, getSpecification, getTransition, listCardSpecifications, listCardTransitions, listCards, listLinks, listSchemas, listSpecificationRevisions, summarizeCards, watchCommits, } from './actions/index.js';
3
3
  import { planningServiceOf, scopeOf } from './utils/index.js';
4
4
  /**
5
5
  * Bind this package's handlers to a tree declared by `makePlanningProtocols` — one binding per
6
- * protocol, the base included. Pass the tree itself, never a flattened list; an application that
7
- * wants its own handler for one leaf binds that protocol afterwards.
6
+ * protocol, the base included (and `schema.define` when the tree declares it). Pass the tree
7
+ * itself, never a flattened list; an application that wants its own handler for one leaf binds
8
+ * that protocol afterwards.
8
9
  */
9
10
  export const servePlanningEntrypoints = (protocols, opts) => [
10
11
  bind(protocols.base),
11
12
  bind(protocols.schema.list, listSchemas(protocols.schema.list, opts)),
13
+ ...(protocols.schema.define != null
14
+ ? [bind(protocols.schema.define, defineSchemas(protocols.schema.define, opts))]
15
+ : []),
12
16
  bind(protocols.card.list, listCards(protocols.card.list, opts)),
13
17
  bind(protocols.card.summary, summarizeCards(protocols.card.summary, opts)),
14
18
  bind(protocols.card.get, getCard(protocols.card.get, opts)),
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EACL,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,sBAAsB,EAC5F,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE,cAAc,EAClG,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAA4B,EAAE,IAA6B,EAAE,EAAE,CAAC;IACvG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAChG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC3E,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAA8B,EAAE,GAAoB,EAAE,KAA8B,EACpF,IAA8C,EAC9B,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './consts.js';
4
4
  export * from './service.js';
5
5
  export * from './registry.js';
6
6
  export * from './facade.js';
7
+ export * from './definitions.js';
7
8
  export * from './executor.js';
8
9
  export * from './helper.js';
9
10
  export * from './projection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,kBAAkB,CAAA;AAErC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,kBAAkB,CAAA;AAErC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
package/build/index.js CHANGED
@@ -2,6 +2,7 @@ export * from './consts.js';
2
2
  export * from './service.js';
3
3
  export * from './registry.js';
4
4
  export * from './facade.js';
5
+ export * from './definitions.js';
5
6
  export * from './executor.js';
6
7
  export * from './helper.js';
7
8
  export * from './projection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
@@ -1,16 +1,8 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context';
2
- import type { CommitEvent, PlanningService, PlanningStore } from '@owlmeans/planning';
3
- import type { ProjectionRequest } from './queue/index.js';
2
+ import type { ProjectionRequest } from './queue/types.js';
4
3
  import type { JobProcessor, QueueHooks } from '@owlmeans/queue';
4
+ import type { ProjectionOptions } from './types.js';
5
5
  import type { FoldResult } from './store/types.js';
6
- export interface ProjectionOptions {
7
- /** The planning service alias. */
8
- service?: string;
9
- /** The store the queue folds — the service's default store when omitted. */
10
- store?: (service: PlanningService) => PlanningStore;
11
- /** Where events go — the store's commit hub `publish` when it has one. */
12
- publish?: (event: CommitEvent) => Promise<void>;
13
- }
14
6
  /**
15
7
  * The body of a projection job: fold one card with the service's `committed` as the commit
16
8
  * listener, so the `after` chain runs in the process that took the job.
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG/D,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7D,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,aAAa,CAAA;IACnD,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AAWD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAC7B,YAAY,CAAC,WAAW,CAAC,SAAS,iBAAiB,KACvD,YAAY,CAAC,iBAAiB,EAAE,UAAU,CAU5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAS,YAAY,CAAC,WAAW,CAAC,SAAS,iBAAiB,KAAG,UAU5F,CAAA"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE/D,OAAO,KAAK,EAAuB,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAW7D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAC7B,YAAY,CAAC,WAAW,CAAC,SAAS,iBAAiB,KACvD,YAAY,CAAC,iBAAiB,EAAE,UAAU,CAU5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAS,YAAY,CAAC,WAAW,CAAC,SAAS,iBAAiB,KAAG,UAU5F,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { PLANNING_SERVICE } from '@owlmeans/planning';
2
- import { PLANNING_PROJECT_JOB, PLANNING_PROJECTION_QUEUE } from './queue/index.js';
2
+ import { PLANNING_PROJECT_JOB, PLANNING_PROJECTION_QUEUE } from './queue/consts.js';
3
3
  import { failPending, foldPending } from './store/fold.js';
4
4
  const serviceOf = (ctx, opts) => ctx.service(opts?.service ?? PLANNING_SERVICE);
5
5
  const storeOf = (service, opts) => opts?.store?.(service) ?? service.store();
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAa1D,MAAM,SAAS,GAAG,CAAC,GAA8B,EAAE,IAAwB,EAAmB,EAAE,CAC9F,GAAG,CAAC,OAAO,CAAsB,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,OAAwB,EAAE,IAAwB,EAAiB,EAAE,CACpF,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAA;AAE3C,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,IAAwB,EAAE,EAAE,CACrE,IAAI,EAAE,OAAO,IAAK,KAAK,CAAC,OAA0C,EAAE,OAAO,CAAA;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,GAA8B,EAAE,IAAwB,EACX,EAAE,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;IAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAExC,OAAO,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;QAClE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;QAC9D,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAA8B,EAAE,IAAwB,EAAc,EAAE,CAAC,CAAC;IAC3G,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAC/B,IAAI,GAAG,CAAC,KAAK,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACjF,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAyB,CAAA;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACxG,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA4C,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAI1D,MAAM,SAAS,GAAG,CAAC,GAA8B,EAAE,IAAwB,EAAmB,EAAE,CAC9F,GAAG,CAAC,OAAO,CAAsB,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,OAAwB,EAAE,IAAwB,EAAiB,EAAE,CACpF,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAA;AAE3C,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,IAAwB,EAAE,EAAE,CACrE,IAAI,EAAE,OAAO,IAAK,KAAK,CAAC,OAA0C,EAAE,OAAO,CAAA;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,GAA8B,EAAE,IAAwB,EACX,EAAE,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;IAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAExC,OAAO,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;QAClE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;QAC9D,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAA8B,EAAE,IAAwB,EAAc,EAAE,CAAC,CAAC;IAC3G,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAC/B,IAAI,GAAG,CAAC,KAAK,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACjF,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAyB,CAAA;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACxG,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** The server-side queue used to project planning transitions. */
2
+ export declare const PLANNING_PROJECTION_QUEUE = "planning-projection";
3
+ /** The processor name accepted by the planning projection queue. */
4
+ export declare const PLANNING_PROJECT_JOB = "planning:project";
5
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/queue/consts.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,wBAAwB,CAAA;AAE9D,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** The server-side queue used to project planning transitions. */
2
+ export const PLANNING_PROJECTION_QUEUE = 'planning-projection';
3
+ /** The processor name accepted by the planning projection queue. */
4
+ export const PLANNING_PROJECT_JOB = 'planning:project';
5
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/queue/consts.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAA;AAE9D,oEAAoE;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAA"}
@@ -1,19 +1,7 @@
1
- import type { Config, JobOptions, QueueWorkerOptions } from '@owlmeans/queue';
2
- /** The server-side queue used to project planning transitions. */
3
- export declare const PLANNING_PROJECTION_QUEUE = "planning-projection";
4
- /** The processor name accepted by the planning projection queue. */
5
- export declare const PLANNING_PROJECT_JOB = "planning:project";
6
- /** What one projection job folds. */
7
- export interface ProjectionRequest {
8
- cardId: string;
9
- entityId: string;
10
- /** The transition that requested projection; it is a hint rather than a fold bound. */
11
- transition?: string;
12
- }
13
- export interface PlanningQueueOptions {
14
- worker?: QueueWorkerOptions;
15
- defaults?: JobOptions;
16
- }
1
+ import { type Config } from '@owlmeans/queue';
2
+ import type { PlanningQueueOptions } from './types.js';
17
3
  /** Declare the shared projection address; each process separately chooses whether to listen. */
18
4
  export declare const declarePlanningQueue: <C extends Config>(cfg: C, opts?: PlanningQueueOptions) => C;
5
+ export { PLANNING_PROJECTION_QUEUE, PLANNING_PROJECT_JOB } from './consts.js';
6
+ export type { PlanningQueueOptions, ProjectionRequest } from './types.js';
19
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE7E,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,wBAAwB,CAAA;AAE9D,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AAEtD,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,SAAS,oBAAoB,KAAG,CACjB,CAAA"}
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"}