@owlmeans/server-planning 0.1.18-rc.27 → 0.1.18-rc.29

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 (56) hide show
  1. package/README.md +1 -1
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/server-planning/SKILL.md +19 -15
  4. package/build/actions/commit.js +1 -1
  5. package/build/actions/commit.js.map +1 -1
  6. package/build/actions/define-schemas.js +1 -1
  7. package/build/actions/define-schemas.js.map +1 -1
  8. package/build/actions/execute.js +1 -1
  9. package/build/actions/execute.js.map +1 -1
  10. package/build/actions/get-card.js +1 -1
  11. package/build/actions/get-card.js.map +1 -1
  12. package/build/actions/get-specification.js +1 -1
  13. package/build/actions/get-specification.js.map +1 -1
  14. package/build/actions/links.js +1 -1
  15. package/build/actions/links.js.map +1 -1
  16. package/build/actions/list-card-specifications.js +1 -1
  17. package/build/actions/list-card-specifications.js.map +1 -1
  18. package/build/actions/list-card-transitions.js +1 -1
  19. package/build/actions/list-card-transitions.js.map +1 -1
  20. package/build/actions/list-cards.js +1 -1
  21. package/build/actions/list-cards.js.map +1 -1
  22. package/build/actions/list-schemas.js +1 -1
  23. package/build/actions/list-schemas.js.map +1 -1
  24. package/build/actions/list-specification-revisions.js +1 -1
  25. package/build/actions/list-specification-revisions.js.map +1 -1
  26. package/build/actions/resources.js +3 -3
  27. package/build/actions/resources.js.map +1 -1
  28. package/build/actions/summarize-cards.js +1 -1
  29. package/build/actions/summarize-cards.js.map +1 -1
  30. package/build/actions/transitions.js +1 -1
  31. package/build/actions/transitions.js.map +1 -1
  32. package/build/actions/watch.js +2 -2
  33. package/build/actions/watch.js.map +1 -1
  34. package/build/utils/guard/types.d.ts +3 -1
  35. package/build/utils/guard/types.d.ts.map +1 -1
  36. package/build/utils/guard.d.ts.map +1 -1
  37. package/build/utils/guard.js +4 -2
  38. package/build/utils/guard.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/actions/commit.ts +1 -1
  41. package/src/actions/define-schemas.ts +1 -1
  42. package/src/actions/execute.ts +1 -1
  43. package/src/actions/get-card.ts +1 -1
  44. package/src/actions/get-specification.ts +1 -1
  45. package/src/actions/links.ts +1 -1
  46. package/src/actions/list-card-specifications.ts +1 -1
  47. package/src/actions/list-card-transitions.ts +1 -1
  48. package/src/actions/list-cards.ts +1 -1
  49. package/src/actions/list-schemas.ts +1 -1
  50. package/src/actions/list-specification-revisions.ts +1 -1
  51. package/src/actions/resources.ts +3 -3
  52. package/src/actions/summarize-cards.ts +1 -1
  53. package/src/actions/transitions.ts +1 -1
  54. package/src/actions/watch.ts +2 -2
  55. package/src/utils/guard/types.ts +3 -1
  56. package/src/utils/guard.ts +4 -2
package/README.md CHANGED
@@ -10,7 +10,7 @@ the `@owlmeans/server-planning/store` subpath.
10
10
  ## Installation
11
11
 
12
12
  ```sh
13
- bun add @owlmeans/server-planning@^0.1.18-rc.27 @owlmeans/planning@^0.1.18-rc.23 ajv
13
+ bun add @owlmeans/server-planning@^0.1.18-rc.29 @owlmeans/planning@^0.1.18-rc.25 ajv
14
14
  ```
15
15
 
16
16
  ## Concepts
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/server-planning",
4
- "version": "0.1.18-rc.27",
5
- "generatedAt": "2026-10-09T11:47:34.836Z",
4
+ "version": "0.1.18-rc.29",
5
+ "generatedAt": "2026-10-09T17:24:50.729Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/server-planning
9
9
 
10
10
  **Layer:** Server
11
- **Install:** `"@owlmeans/server-planning": "^0.1.18-rc.27"` in `dependencies` (`ajv` is a peer)
11
+ **Install:** `"@owlmeans/server-planning": "^0.1.18-rc.29"` in `dependencies` (`ajv` is a peer)
12
12
 
13
13
  The general implementation of `@owlmeans/planning`: the planning service (a plugin host), the
14
14
  scoped facade, the executor every write goes through, the in-memory reference store, the commit
@@ -300,26 +300,25 @@ mapping external records (`mappers`) belongs to that plugin's own store adapter.
300
300
  decision per request; a throw is the request's answer (an `AuthForbidden` answers 403).
301
301
 
302
302
  - `entityId` is the resolver's — never the token's, never `opts.scope`'s.
303
- - `projects` becomes `PlanningScope.projects`, which the server facade enforces on every read and
304
- write. Visible are the projects, every card whose `parents` name one, and every specification
305
- whose parent card is visible (its `parents` hold only that card). Anything else reads as absent
303
+ - `projects` becomes `PlanningScope.projects`, which the server facade enforces on reads and
304
+ writes. A card is visible when at least one project reached through its recursive parent paths
305
+ is allowed; specifications follow their containing cards. Anything else reads as absent
306
306
  (`WorkcardNotFound`, `null`, an empty list); a create under an invisible parent is
307
- `ParentNotFound`; links and transitions are filtered by `project` (and post-filtered, for a store
308
- that ignores the field); commit subscriptions drop events outside the set and a status or wait
309
- refuses them.
310
- - **A narrowed list or count sees a specification whenever its parent card is visible** — exactly
311
- what a single read admits. It is AND'd with `projectCriteriaOf(projects, through)`; when its
312
- criteria ask for specifications (`wantsSpecifications`) the facade resolves `through` (the visible
313
- parent cards) with ONE read per call: the query's `parent`, else the projects' own cards. A
314
- summary counts no specification and pays nothing extra. `tests/narrowing.spec.ts` pins it.
307
+ `ParentNotFound`. Links, transitions and commits use current endpoint/card ancestry, with a
308
+ cached project fallback only for purged records. Subscriptions and commit waits enforce the
309
+ same visibility.
310
+ - **Narrowed lists, counts and summaries use the allowed recursive descendant IDs before paging.**
311
+ A specification is admitted through the same containing-card hierarchy as a single read.
312
+ Do not replace this with a direct-parent query or a filter applied after pagination.
313
+ `tests/narrowing.spec.ts` and shared hierarchy conformance pin this behavior.
315
314
  - A person who may see only SOME projects of their organization (a tool-shed volunteer given one
316
315
  shed) is expressed here: the resolver answers the project ids the person's grants list as
317
316
  `projects`, and omits the key when a grant covers every project — never a hand-written filter in
318
317
  each handler.
319
318
  - `writes` is the subset of projects the person may WRITE in (`projects` are the ones they VIEW).
320
- `execute` on a card, specification or link needs it to be writable — the rule a narrowed read
321
- admits, over `writes`: the project itself, a card whose `parents` name one, a specification
322
- through its parent card; a create needs every named parent writable, and a create at the root
319
+ `execute` on a card, specification or link needs it to be writable — the recursive ancestor
320
+ rule over `writes`: a card admitted directly or through a writable parent path. A create needs
321
+ every named parent writable; reparenting checks every supplied destination parent. A create at the root
323
322
  (no parent, not a project) is refused. `schema.define` of a project layer needs the project in
324
323
  `writes`. A refusal is `PlanningForbidden` (403, `forbidden:writes:<id>`), checked before the grants
325
324
  and before the executor. NOT governed by it: a project create (`grants.createProjects` alone) and
@@ -385,6 +384,11 @@ Access resolvers can grant `manageAssignees` and `manageTeams` separately from c
385
384
  Comments and project/team attachment require writable containing cards/projects. Auxiliary
386
385
  organization lists require authenticated organization scope; do not infer ACLs from project mode.
387
386
 
387
+ All stock HTTP replies use `guardHelper.reply`, which conceals scope failures and applies the
388
+ typed planning reply projection. Socket commits use the same projection. Organization `entityId`
389
+ stays in native records and verified scopes, and never leaves through records, schema scopes or
390
+ nested receipts. Keep business fields and schema definitions unchanged when projecting replies.
391
+
388
392
  Admission and native projection recheck hierarchy, schema fields and endpoint types. Recursive
389
393
  visibility follows every project ancestor and filters before paging. Definition record reads
390
394
  use the same recursive visibility as cards. Reparenting validates all
@@ -11,7 +11,7 @@ import { planningHandlerOf } from '../utils/handler.js';
11
11
  *
12
12
  * @throws {WorkcardNotFound} for another entity's transition
13
13
  */
14
- export const getCommit = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
14
+ export const getCommit = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
15
15
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
16
16
  const transition = `${req.params.transition}`;
17
17
  let status = await facade.commits.status(transition);
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/actions/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAA4C,EAAE,IAA6B,EAC3D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAA2B,EAAE;IAChH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAE7C,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC,CAAA;IACxF,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,IAAI,GAAe,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAA,CAAC,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACzD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3E,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChD,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;oBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;oBAC9C,IAAI,GAAG,GAAG,EAAE;wBACV,YAAY,CAAC,KAAK,CAAC,CAAA;wBACnB,OAAO,EAAE,CAAA;oBACX,CAAC,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAA;IACf,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/actions/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAA4C,EAAE,IAA6B,EAC3D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAA2B,EAAE;IAC5G,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAE7C,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC,CAAA;IACxF,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,IAAI,GAAe,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAA,CAAC,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACzD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3E,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChD,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;oBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;oBAC9C,IAAI,GAAG,GAAG,EAAE;wBACV,YAAY,CAAC,KAAK,CAAC,CAAA;wBACnB,OAAO,EAAE,CAAA;oBACX,CAAC,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAA;IACf,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAC,CAAA"}
@@ -12,7 +12,7 @@ import { applySchemaRequest } from './apply-schema-request.js';
12
12
  * @throws {PlanningUnsupported} where the store holds no data-defined schemas
13
13
  * @throws {PlanningForbidden | SchemaConflict | SchemaSealed | SchemaInvalid | SchemaInUse | WorkcardNotFound}
14
14
  */
15
- export const defineSchemas = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
15
+ export const defineSchemas = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
16
16
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts);
17
17
  const request = (req.body ?? {});
18
18
  if (facade.definitions == null) {
@@ -1 +1 @@
1
- {"version":3,"file":"define-schemas.js","sourceRoot":"","sources":["../../src/actions/define-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAA4E,MAAM,oBAAoB,CAAA;AAElI,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAA4D,EAAE,IAA6B,EAC3E,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAgC,EAAE;IACrH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACjF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAwB,CAAA;IACvD,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAErD,OAAO,MAAM,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAC9D,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"define-schemas.js","sourceRoot":"","sources":["../../src/actions/define-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAA4E,MAAM,oBAAoB,CAAA;AAElI,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAA4D,EAAE,IAA6B,EAC3E,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAgC,EAAE;IACjH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACjF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAwB,CAAA;IACvD,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAErD,OAAO,MAAM,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAC9D,CAAC,CAAC,CAAC,CAAA"}
@@ -4,7 +4,7 @@ import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
5
  import { executionHelper } from './execution.js';
6
6
  /** The one write route. */
7
- export const executePlanning = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
7
+ export const executePlanning = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
8
8
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts);
9
9
  const body = (req.body ?? {});
10
10
  const exec = executionHelper.wireExecution(body, facade.scope);
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/actions/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAMpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAsC,EAAE,IAA6B,EACrD,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAoC,EAAE;IACzH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAmB,CAAA;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9D,MAAM,eAAe,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC,CAAA;IAEpH,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS;QAC/B,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QACxD,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAA;AACxC,CAAC,CAAC,CAAC,CAAA;AAEL,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAoB,EAAE,KAAoB,EAAuB,EAAE,CAC/F,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAE5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAA8C,EAAE,OAAe,EAAkB,EAAE,CAClH,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAEjD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,MAAsB,EAAE,IAAyB,EAAE,MAAuB,EAC3D,EAAE,CAAC,MAAM,eAAe,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAErF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,MAAsB,EAAE,IAAyB,EAAE,MAAuB,EAC3D,EAAE,CAAC,MAAM,eAAe,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/actions/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAMpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAsC,EAAE,IAA6B,EACrD,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAoC,EAAE;IACrH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAmB,CAAA;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9D,MAAM,eAAe,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC,CAAA;IAEpH,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS;QAC/B,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QACxD,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAA;AACxC,CAAC,CAAC,CAAC,CAAA;AAEL,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAoB,EAAE,KAAoB,EAAuB,EAAE,CAC/F,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAE5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAA8C,EAAE,OAAe,EAAkB,EAAE,CAClH,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAEjD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,MAAsB,EAAE,IAAyB,EAAE,MAAuB,EAC3D,EAAE,CAAC,MAAM,eAAe,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAErF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,MAAsB,EAAE,IAAyB,EAAE,MAAuB,EAC3D,EAAE,CAAC,MAAM,eAAe,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { handlers } from '@owlmeans/server-api';
2
2
  import { guardHelper } from '../utils/guard.js';
3
3
  import { planningHandlerOf } from '../utils/handler.js';
4
4
  /** @throws {WorkcardNotFound} for an absent card and for another entity's alike */
5
- export const getCard = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
5
+ export const getCard = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
6
6
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
7
7
  return await facade.cards.get(`${req.params.id}`);
8
8
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"get-card.js","sourceRoot":"","sources":["../../src/actions/get-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,mFAAmF;AACnF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAA0C,EAAE,IAA6B,EAAkB,EAAE,CACnH,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AACnD,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"get-card.js","sourceRoot":"","sources":["../../src/actions/get-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,mFAAmF;AACnF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAA0C,EAAE,IAA6B,EAAkB,EAAE,CACnH,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AACnD,CAAC,CAAC,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { handlers } from '@owlmeans/server-api';
2
2
  import { guardHelper } from '../utils/guard.js';
3
3
  import { planningHandlerOf } from '../utils/handler.js';
4
4
  /** @throws {WorkcardNotFound} */
5
- export const getSpecification = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
5
+ export const getSpecification = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
6
6
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
7
7
  return await facade.specifications.get(`${req.params.id}`);
8
8
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"get-specification.js","sourceRoot":"","sources":["../../src/actions/get-specification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAA0C,EAAE,IAA6B,EAAkB,EAAE,CAC5H,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"get-specification.js","sourceRoot":"","sources":["../../src/actions/get-specification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAA0C,EAAE,IAA6B,EAAkB,EAAE,CAC5H,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { handlers } from '@owlmeans/server-api';
2
2
  import { wireHelper } from '@owlmeans/planning';
3
3
  import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
- export const listLinks = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
5
+ export const listLinks = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
6
6
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
7
7
  return await facade.relationships.list(wireHelper.decodeRelationshipQuery(req.query));
8
8
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/actions/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAA2C,EAAE,IAA6B,EAC1D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACvF,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/actions/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAA2C,EAAE,IAA6B,EAC1D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACvF,CAAC,CAAC,CAAC,CAAA"}
@@ -3,7 +3,7 @@ import { wireHelper } from '@owlmeans/planning';
3
3
  import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
5
  /** One card's specifications — the current document per category unless `all`. */
6
- export const listCardSpecifications = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
6
+ export const listCardSpecifications = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
7
7
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
8
8
  const card = await facade.cards.get(`${req.params.id}`);
9
9
  return await facade.specifications.list(card.id, wireHelper.decodeSpecificationQuery(req.query));
@@ -1 +1 @@
1
- {"version":3,"file":"list-card-specifications.js","sourceRoot":"","sources":["../../src/actions/list-card-specifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAqD,EAAE,IAA6B,EAAkB,EAAE,CAC7I,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAEvD,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAG,EAAE,UAAU,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACnG,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"list-card-specifications.js","sourceRoot":"","sources":["../../src/actions/list-card-specifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAqD,EAAE,IAA6B,EAAkB,EAAE,CAC7I,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAEvD,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAG,EAAE,UAAU,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACnG,CAAC,CAAC,CAAC,CAAA"}
@@ -3,7 +3,7 @@ import { wireHelper } from '@owlmeans/planning';
3
3
  import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
5
  /** One card's log. */
6
- export const listCardTransitions = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
6
+ export const listCardTransitions = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
7
7
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
8
8
  const card = await facade.cards.get(`${req.params.id}`);
9
9
  return await facade.transitions.list({ ...wireHelper.decodeTransitionQuery(req.query), card: card.id });
@@ -1 +1 @@
1
- {"version":3,"file":"list-card-transitions.js","sourceRoot":"","sources":["../../src/actions/list-card-transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,sBAAsB;AACtB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAkD,EAAE,IAA6B,EAAkB,EAAE,CACvI,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAEvD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;AACzG,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"list-card-transitions.js","sourceRoot":"","sources":["../../src/actions/list-card-transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,sBAAsB;AACtB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAkD,EAAE,IAA6B,EAAkB,EAAE,CACvI,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAEvD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;AACzG,CAAC,CAAC,CAAC,CAAA"}
@@ -3,7 +3,7 @@ import { wireHelper } from '@owlmeans/planning';
3
3
  import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
5
  /** Cards of the caller's entity; the query arrives in its wire shape and is decoded here. */
6
- export const listCards = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
6
+ export const listCards = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
7
7
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
8
8
  return await facade.cards.list(wireHelper.decodeWorkcardQuery(req.query));
9
9
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"list-cards.js","sourceRoot":"","sources":["../../src/actions/list-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAA2C,EAAE,IAA6B,EAAkB,EAAE,CACtH,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"list-cards.js","sourceRoot":"","sources":["../../src/actions/list-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAA2C,EAAE,IAA6B,EAAkB,EAAE,CACtH,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAC,CAAC,CAAA"}
@@ -10,7 +10,7 @@ const text = (value) => value == null || value === '' ? undefined : `${Array.isA
10
10
  *
11
11
  * @throws {WorkcardNotFound} for a project this scope cannot see
12
12
  */
13
- export const listSchemas = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
13
+ export const listSchemas = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
14
14
  const { facade } = await planningHandlerOf(ctx).handlerScopeOf(req, opts);
15
15
  if (facade.definitions == null) {
16
16
  return facade.schemas.bundle();
@@ -1 +1 @@
1
- {"version":3,"file":"list-schemas.js","sourceRoot":"","sources":["../../src/actions/list-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAClD,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;AAE1F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAA6C,EAAE,IAA6B,EAC5D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAiC,EAAE;IACtH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzE,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,CAAC,KAA2C,EAAE,OAAO,CAAC,CAAC,CAAA;AACzG,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"list-schemas.js","sourceRoot":"","sources":["../../src/actions/list-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAClD,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;AAE1F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAA6C,EAAE,IAA6B,EAC5D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAiC,EAAE;IAClH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzE,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,CAAC,KAA2C,EAAE,OAAO,CAAC,CAAC,CAAA;AACzG,CAAC,CAAC,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { handlers } from '@owlmeans/server-api';
2
2
  import { guardHelper } from '../utils/guard.js';
3
3
  import { planningHandlerOf } from '../utils/handler.js';
4
4
  /** A document's history, newest first, replayed from its log. */
5
- export const listSpecificationRevisions = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
5
+ export const listSpecificationRevisions = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
6
6
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
7
7
  const limit = req.query?.limit == null ? undefined : Number(req.query.limit);
8
8
  return { items: await facade.specifications.revisions(`${req.params.id}`, Number.isFinite(limit) ? limit : undefined) };
@@ -1 +1 @@
1
- {"version":3,"file":"list-specification-revisions.js","sourceRoot":"","sources":["../../src/actions/list-specification-revisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,iEAAiE;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAgD,EAAE,IAA6B,EAAkB,EAAE,CAC5I,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE5E,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAA;AACzH,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"list-specification-revisions.js","sourceRoot":"","sources":["../../src/actions/list-specification-revisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,iEAAiE;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAgD,EAAE,IAA6B,EAAkB,EAAE,CAC5I,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE5E,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAA;AACzH,CAAC,CAAC,CAAC,CAAA"}
@@ -11,11 +11,11 @@ export const servePlanningResources = (protocols, opts) => ['assignees', 'teams'
11
11
  if (tree == null)
12
12
  return [];
13
13
  return [
14
- bind(tree.get, handlers().request(tree.get, async (req, ctx) => guardHelper.concealed(async () => {
14
+ bind(tree.get, handlers().request(tree.get, async (req, ctx) => guardHelper.reply(async () => {
15
15
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
16
16
  return await facade[name].get(req.params.id);
17
17
  }))),
18
- bind(tree.list, handlers().request(tree.list, async (req, ctx) => guardHelper.concealed(async () => {
18
+ bind(tree.list, handlers().request(tree.list, async (req, ctx) => guardHelper.reply(async () => {
19
19
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
20
20
  let query = {};
21
21
  try {
@@ -29,7 +29,7 @@ export const servePlanningResources = (protocols, opts) => ['assignees', 'teams'
29
29
  // entityId is never read from the wire; the scoped facade owns it.
30
30
  return await facade[name].list(query);
31
31
  }))),
32
- bind(tree.write, handlers().request(tree.write, async (req, ctx) => guardHelper.concealed(async () => {
32
+ bind(tree.write, handlers().request(tree.write, async (req, ctx) => guardHelper.reply(async () => {
33
33
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts);
34
34
  const body = req.body;
35
35
  const reading = ['members', 'projects', 'assignees'].includes(body.action);
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/actions/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/actions/resources.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { wireHelper } from '@owlmeans/planning';
3
3
  import { guardHelper } from '../utils/guard.js';
4
4
  import { planningHandlerOf } from '../utils/handler.js';
5
5
  /** Intrinsic counts of DIRECT children per parent. */
6
- export const summarizeCards = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
6
+ export const summarizeCards = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
7
7
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
8
8
  const { parents, ...query } = wireHelper.decodeSummaryQuery(req.query);
9
9
  return await facade.cards.summary(parents, query);
@@ -1 +1 @@
1
- {"version":3,"file":"summarize-cards.js","sourceRoot":"","sources":["../../src/actions/summarize-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,sDAAsD;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAA8C,EAAE,IAA6B,EAAkB,EAAE,CAC9H,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEtE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"summarize-cards.js","sourceRoot":"","sources":["../../src/actions/summarize-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,sDAAsD;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAA8C,EAAE,IAA6B,EAAkB,EAAE,CAC9H,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEtE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAC,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { handlers } from '@owlmeans/server-api';
2
2
  import { guardHelper } from '../utils/guard.js';
3
3
  import { planningHandlerOf } from '../utils/handler.js';
4
4
  /** @throws {WorkcardNotFound} for an absent transition and for another entity's alike */
5
- export const getTransition = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
5
+ export const getTransition = (protocol, opts) => handlers().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
6
6
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts);
7
7
  return await facade.transitions.get(`${req.params.transition}`);
8
8
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/actions/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgD,EAAE,IAA6B,EAC/D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;AACjE,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/actions/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgD,EAAE,IAA6B,EAC/D,EAAE,CAClB,QAAQ,EAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpE,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;AACjE,CAAC,CAAC,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { logger } from '@owlmeans/log';
2
- import { PLANNING_COMMIT_EVENT } from '@owlmeans/planning';
2
+ import { planningReplyHelper, PLANNING_COMMIT_EVENT } from '@owlmeans/planning';
3
3
  import { connection } from '@owlmeans/server-socket';
4
4
  import { MessageType } from '@owlmeans/socket';
5
5
  import { planningHandlerOf } from '../utils/handler.js';
@@ -23,7 +23,7 @@ export const watchCommits = (protocol, opts) => connection(protocol, async (conn
23
23
  const unsubscribe = await facade.commits.subscribe(async (event) => {
24
24
  try {
25
25
  const enriched = event.record !== undefined ? event : { ...event, record: await facade.cards.load(event.card) };
26
- await conn.notify(frame, enriched);
26
+ await conn.notify(frame, planningReplyHelper.project(enriched));
27
27
  }
28
28
  catch (e) {
29
29
  log.warn('Planning commit notify failed', e);
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/actions/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEpC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAClD,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAA+C,EAAE,IAA6B,EAC9D,EAAE,CAAC,UAAU,CAA2B,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3F,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAoB,CAAA;IAClD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,qBAAqB,CAAA;IAClD,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAkB,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/G,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAA;IAEV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,OAA6B,CAAA;QACzC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,WAAW,EAAE,CAAA;YACf,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/actions/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEpC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAClD,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAA+C,EAAE,IAA6B,EAC9D,EAAE,CAAC,UAAU,CAA2B,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3F,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAoB,CAAA;IAClD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,qBAAqB,CAAA;IAClD,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAkB,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/G,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAA;IAEV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,OAA6B,CAAA;QACzC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,WAAW,EAAE,CAAA;YACf,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { WorkcardNotFound, Workcard } from '@owlmeans/planning';
1
+ import type { WorkcardNotFound, Workcard, PlanningReply } from '@owlmeans/planning';
2
2
  /** What every handler answers with when a record is not the caller's: absence, never a refusal. */
3
3
  export interface GuardHelper {
4
4
  notFoundOf: (id: string) => WorkcardNotFound;
@@ -15,6 +15,8 @@ export interface GuardHelper {
15
15
  * apart from "does not exist" is what turns an id space into an enumeration oracle.
16
16
  */
17
17
  concealed: <T>(run: () => Promise<T>) => Promise<T>;
18
+ /** Conceal scope failures and project storage metadata out of a public reply. */
19
+ reply: <T>(run: () => Promise<T>) => Promise<PlanningReply<T>>;
18
20
  /** Seconds as the wire sends them, clamped to `[0, max]`. */
19
21
  clampSeconds: (value: unknown, max: number) => number;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/guard/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEpE,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,CAAA;IAC5C;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,CAAA;IAC/H;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACnD,6DAA6D;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACtD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/guard/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEnF,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,CAAA;IAC5C;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,CAAA;IAC/H;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACnD,iFAAiF;IACjF,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,6DAA6D;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/utils/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,eAAO,MAAM,iBAAiB,QAAO,WA8BpC,CAAA;AAED,eAAO,MAAM,WAAW,aAAsB,CAAA;AAE9C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,gBAA8C,CAAA;AAEtF,6EAA6E;AAC7E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,UACtD,CAAC,GAAG,IAAI,GAAG,SAAS,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,MAAM,MAAM,KACpE,CAAkD,CAAA;AAErD,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GAAU,CAAC,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAwC,CAAA;AAE5G,8EAA8E;AAC9E,eAAO,MAAM,YAAY,UAAW,OAAO,OAAO,MAAM,KAAG,MAA8C,CAAA"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/utils/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,eAAO,MAAM,iBAAiB,QAAO,WAgCpC,CAAA;AAED,eAAO,MAAM,WAAW,aAAsB,CAAA;AAE9C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,gBAA8C,CAAA;AAEtF,6EAA6E;AAC7E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,UACtD,CAAC,GAAG,IAAI,GAAG,SAAS,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,MAAM,MAAM,KACpE,CAAkD,CAAA;AAErD,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GAAU,CAAC,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAwC,CAAA;AAE5G,8EAA8E;AAC9E,eAAO,MAAM,YAAY,UAAW,OAAO,OAAO,MAAM,KAAG,MAA8C,CAAA"}
@@ -1,4 +1,4 @@
1
- import { PlanningScopeMismatch, WorkcardNotFound } from '@owlmeans/planning';
1
+ import { planningReplyHelper, PlanningScopeMismatch, WorkcardNotFound } from '@owlmeans/planning';
2
2
  export const createGuardHelper = () => {
3
3
  const notFoundOf = (id) => new WorkcardNotFound(id);
4
4
  const assertScope = (record, scope, id) => {
@@ -23,7 +23,9 @@ export const createGuardHelper = () => {
23
23
  const number = typeof value === 'number' ? value : Number(value ?? 0);
24
24
  return Number.isFinite(number) ? Math.min(Math.max(number, 0), max) : 0;
25
25
  };
26
- return { notFoundOf, assertScope, concealed, clampSeconds };
26
+ return { notFoundOf, assertScope, concealed, clampSeconds,
27
+ reply: async (run) => planningReplyHelper.project(await concealed(run)),
28
+ };
27
29
  };
28
30
  export const guardHelper = createGuardHelper();
29
31
  /** @deprecated compat:factory-refactor — use `guardHelper.notFoundOf(…)` */
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/utils/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAI5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE;IACjD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAA;IAE7E,MAAM,WAAW,GAAG,CAClB,MAA4B,EAAE,KAA2B,EAAE,EAAU,EAClE,EAAE;QACL,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAK,GAAqB,EAAc,EAAE;QAC/D,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB;mBACpC,KAAkC,EAAE,IAAI,KAAK,qBAAqB,CAAC,QAAQ,EAAE,CAAC;gBAClF,MAAM,IAAI,gBAAgB,EAAE,CAAA;YAC9B,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,GAAW,EAAU,EAAE;QAC3D,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;QACrE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC,CAAA;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AAEtF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAA4B,EAAE,KAA2B,EAAE,EAAU,EAClE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAI,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAK,GAAqB,EAAc,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAI,GAAG,CAAC,CAAA;AAE5G,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,GAAW,EAAU,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/utils/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAIjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE;IACjD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAA;IAE7E,MAAM,WAAW,GAAG,CAClB,MAA4B,EAAE,KAA2B,EAAE,EAAU,EAClE,EAAE;QACL,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAK,GAAqB,EAAc,EAAE;QAC/D,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB;mBACpC,KAAkC,EAAE,IAAI,KAAK,qBAAqB,CAAC,QAAQ,EAAE,CAAC;gBAClF,MAAM,IAAI,gBAAgB,EAAE,CAAA;YAC9B,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,GAAW,EAAU,EAAE;QAC3D,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;QACrE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC,CAAA;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY;QACvD,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;KACtE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AAEtF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAA4B,EAAE,KAA2B,EAAE,EAAU,EAClE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAI,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAK,GAAqB,EAAc,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAI,GAAG,CAAC,CAAA;AAE5G,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,GAAW,EAAU,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/server-planning",
3
- "version": "0.1.18-rc.27",
3
+ "version": "0.1.18-rc.29",
4
4
  "license": "MIT",
5
5
  "description": "The general planning implementation — the planning service and its plugin/middleware registry, the transition executor, the in-memory store, the protocol handlers and the commit feed.",
6
6
  "type": "module",
@@ -50,7 +50,7 @@
50
50
  "@owlmeans/context": "^0.1.18-rc.34",
51
51
  "@owlmeans/entrypoint": "^0.1.18-rc.41",
52
52
  "@owlmeans/error": "^0.1.18-rc.38",
53
- "@owlmeans/planning": "^0.1.18-rc.23",
53
+ "@owlmeans/planning": "^0.1.18-rc.25",
54
54
  "@owlmeans/queue": "^0.1.18-rc.44",
55
55
  "@owlmeans/resource": "^0.1.18-rc.40",
56
56
  "@owlmeans/log": "^0.1.18-rc.3",
@@ -18,7 +18,7 @@ import type { RequestHandler } from './types.js'
18
18
  export const getCommit = (
19
19
  protocol: PlanningProtocols['commit']['get'], opts?: PlanningHandlerOptions
20
20
  ): RequestHandler =>
21
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async (): Promise<CommitStatus> => {
21
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async (): Promise<CommitStatus> => {
22
22
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
23
23
  const transition = `${req.params.transition}`
24
24
 
@@ -18,7 +18,7 @@ import type { RequestHandler } from './types.js'
18
18
  export const defineSchemas = (
19
19
  protocol: NonNullable<PlanningProtocols['schema']['define']>, opts?: PlanningHandlerOptions
20
20
  ): RequestHandler =>
21
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async (): Promise<SchemaDefineReply> => {
21
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async (): Promise<SchemaDefineReply> => {
22
22
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts)
23
23
  const request = (req.body ?? {}) as SchemaDefineRequest
24
24
  if (facade.definitions == null) {
@@ -14,7 +14,7 @@ import type { RequestHandler } from './types.js'
14
14
  export const executePlanning = (
15
15
  protocol: PlanningProtocols['execute'], opts?: PlanningHandlerOptions
16
16
  ): RequestHandler =>
17
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async (): Promise<TransitionReceiptView> => {
17
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async (): Promise<TransitionReceiptView> => {
18
18
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts)
19
19
  const body = (req.body ?? {}) as ExecuteRequest
20
20
  const exec = executionHelper.wireExecution(body, facade.scope)
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** @throws {WorkcardNotFound} for an absent card and for another entity's alike */
9
9
  export const getCard = (protocol: PlanningProtocols['card']['get'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
 
13
13
  return await facade.cards.get(`${req.params.id}`)
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** @throws {WorkcardNotFound} */
9
9
  export const getSpecification = (protocol: PlanningProtocols['spec']['get'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
 
13
13
  return await facade.specifications.get(`${req.params.id}`)
@@ -9,7 +9,7 @@ import type { RequestHandler } from './types.js'
9
9
  export const listLinks = (
10
10
  protocol: PlanningProtocols['link']['list'], opts?: PlanningHandlerOptions
11
11
  ): RequestHandler =>
12
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
12
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
13
13
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
14
14
 
15
15
  return await facade.relationships.list(wireHelper.decodeRelationshipQuery(req.query))
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** One card's specifications — the current document per category unless `all`. */
9
9
  export const listCardSpecifications = (protocol: PlanningProtocols['card']['specifications'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
  const card = await facade.cards.get(`${req.params.id}`)
13
13
 
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** One card's log. */
9
9
  export const listCardTransitions = (protocol: PlanningProtocols['card']['transitions'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
  const card = await facade.cards.get(`${req.params.id}`)
13
13
 
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** Cards of the caller's entity; the query arrives in its wire shape and is decoded here. */
9
9
  export const listCards = (protocol: PlanningProtocols['card']['list'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
 
13
13
  return await facade.cards.list(wireHelper.decodeWorkcardQuery(req.query))
@@ -19,7 +19,7 @@ const text = (value: unknown): string | undefined =>
19
19
  export const listSchemas = (
20
20
  protocol: PlanningProtocols['schema']['list'], opts?: PlanningHandlerOptions
21
21
  ): RequestHandler =>
22
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async (): Promise<ScopedSchemaBundle> => {
22
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async (): Promise<ScopedSchemaBundle> => {
23
23
  const { facade } = await planningHandlerOf(ctx).handlerScopeOf(req, opts)
24
24
  if (facade.definitions == null) {
25
25
  return facade.schemas.bundle()
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** A document's history, newest first, replayed from its log. */
9
9
  export const listSpecificationRevisions = (protocol: PlanningProtocols['spec']['revisions'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
  const limit = req.query?.limit == null ? undefined : Number(req.query.limit)
13
13
 
@@ -14,11 +14,11 @@ export const servePlanningResources = (protocols: PlanningProtocols, opts?: Plan
14
14
  const tree = protocols[name]
15
15
  if (tree == null) return []
16
16
  return [
17
- bind(tree.get, handlers<Context>().request(tree.get as any, async (req, ctx) => guardHelper.concealed(async () => {
17
+ bind(tree.get, handlers<Context>().request(tree.get as any, async (req, ctx) => guardHelper.reply(async () => {
18
18
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
19
19
  return await facade[name].get((req.params as { id: string }).id)
20
20
  }))),
21
- bind(tree.list, handlers<Context>().request(tree.list as any, async (req, ctx) => guardHelper.concealed(async () => {
21
+ bind(tree.list, handlers<Context>().request(tree.list as any, async (req, ctx) => guardHelper.reply(async () => {
22
22
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
23
23
  let query: unknown = {}
24
24
  try { query = JSON.parse((req.query as { query?: string })?.query ?? '{}') } catch { throw new FieldsInvalid('resource:query') }
@@ -26,7 +26,7 @@ export const servePlanningResources = (protocols: PlanningProtocols, opts?: Plan
26
26
  // entityId is never read from the wire; the scoped facade owns it.
27
27
  return await facade[name].list(query as never)
28
28
  }))),
29
- bind(tree.write, handlers<Context>().request(tree.write as any, async (req, ctx) => guardHelper.concealed(async (): Promise<PlanningResourceReply> => {
29
+ bind(tree.write, handlers<Context>().request(tree.write as any, async (req, ctx) => guardHelper.reply(async (): Promise<PlanningResourceReply> => {
30
30
  const { facade, access } = await planningHandlerOf(ctx).handlerScopeOf(req, opts)
31
31
  const body = req.body as PlanningResourceCommand
32
32
  const reading = ['members', 'projects', 'assignees'].includes(body.action)
@@ -7,7 +7,7 @@ import type { RequestHandler } from './types.js'
7
7
 
8
8
  /** Intrinsic counts of DIRECT children per parent. */
9
9
  export const summarizeCards = (protocol: PlanningProtocols['card']['summary'], opts?: PlanningHandlerOptions): RequestHandler =>
10
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
10
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
11
11
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
12
12
  const { parents, ...query } = wireHelper.decodeSummaryQuery(req.query)
13
13
 
@@ -9,7 +9,7 @@ import type { RequestHandler } from './types.js'
9
9
  export const getTransition = (
10
10
  protocol: PlanningProtocols['transition']['get'], opts?: PlanningHandlerOptions
11
11
  ): RequestHandler =>
12
- handlers<Context>().request(protocol, async (req, ctx) => guardHelper.concealed(async () => {
12
+ handlers<Context>().request(protocol, async (req, ctx) => guardHelper.reply(async () => {
13
13
  const facade = await planningHandlerOf(ctx).handlerFacade(req, opts)
14
14
 
15
15
  return await facade.transitions.get(`${req.params.transition}`)
@@ -1,5 +1,5 @@
1
1
  import { logger } from '@owlmeans/log'
2
- import { PLANNING_COMMIT_EVENT } from '@owlmeans/planning'
2
+ import { planningReplyHelper, PLANNING_COMMIT_EVENT } from '@owlmeans/planning'
3
3
  import type { CommitEvent, CommitFeedQuery, PlanningProtocols } from '@owlmeans/planning'
4
4
  import { connection } from '@owlmeans/server-socket'
5
5
  import type { EventMessage } from '@owlmeans/socket'
@@ -34,7 +34,7 @@ export const watchCommits = (
34
34
  const unsubscribe = await facade.commits.subscribe(async (event: CommitEvent) => {
35
35
  try {
36
36
  const enriched = event.record !== undefined ? event : { ...event, record: await facade.cards.load(event.card) }
37
- await conn.notify(frame, enriched)
37
+ await conn.notify(frame, planningReplyHelper.project(enriched))
38
38
  } catch (e) {
39
39
  log.warn('Planning commit notify failed', e)
40
40
  }
@@ -1,4 +1,4 @@
1
- import type { WorkcardNotFound, Workcard } from '@owlmeans/planning'
1
+ import type { WorkcardNotFound, Workcard, PlanningReply } from '@owlmeans/planning'
2
2
 
3
3
  /** What every handler answers with when a record is not the caller's: absence, never a refusal. */
4
4
  export interface GuardHelper {
@@ -14,6 +14,8 @@ export interface GuardHelper {
14
14
  * apart from "does not exist" is what turns an id space into an enumeration oracle.
15
15
  */
16
16
  concealed: <T>(run: () => Promise<T>) => Promise<T>
17
+ /** Conceal scope failures and project storage metadata out of a public reply. */
18
+ reply: <T>(run: () => Promise<T>) => Promise<PlanningReply<T>>
17
19
  /** Seconds as the wire sends them, clamped to `[0, max]`. */
18
20
  clampSeconds: (value: unknown, max: number) => number
19
21
  }
@@ -1,4 +1,4 @@
1
- import { PlanningScopeMismatch, WorkcardNotFound } from '@owlmeans/planning'
1
+ import { planningReplyHelper, PlanningScopeMismatch, WorkcardNotFound } from '@owlmeans/planning'
2
2
  import type { Workcard } from '@owlmeans/planning'
3
3
  import type { GuardHelper } from './guard/types.js'
4
4
 
@@ -31,7 +31,9 @@ export const createGuardHelper = (): GuardHelper => {
31
31
  return Number.isFinite(number) ? Math.min(Math.max(number, 0), max) : 0
32
32
  }
33
33
 
34
- return { notFoundOf, assertScope, concealed, clampSeconds }
34
+ return { notFoundOf, assertScope, concealed, clampSeconds,
35
+ reply: async run => planningReplyHelper.project(await concealed(run)),
36
+ }
35
37
  }
36
38
 
37
39
  export const guardHelper = createGuardHelper()