@owlmeans/server-planning 0.1.18-rc.27 → 0.1.18-rc.28
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.
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/server-planning/SKILL.md +6 -1
- package/build/actions/commit.js +1 -1
- package/build/actions/commit.js.map +1 -1
- package/build/actions/define-schemas.js +1 -1
- package/build/actions/define-schemas.js.map +1 -1
- package/build/actions/execute.js +1 -1
- package/build/actions/execute.js.map +1 -1
- package/build/actions/get-card.js +1 -1
- package/build/actions/get-card.js.map +1 -1
- package/build/actions/get-specification.js +1 -1
- package/build/actions/get-specification.js.map +1 -1
- package/build/actions/links.js +1 -1
- package/build/actions/links.js.map +1 -1
- package/build/actions/list-card-specifications.js +1 -1
- package/build/actions/list-card-specifications.js.map +1 -1
- package/build/actions/list-card-transitions.js +1 -1
- package/build/actions/list-card-transitions.js.map +1 -1
- package/build/actions/list-cards.js +1 -1
- package/build/actions/list-cards.js.map +1 -1
- package/build/actions/list-schemas.js +1 -1
- package/build/actions/list-schemas.js.map +1 -1
- package/build/actions/list-specification-revisions.js +1 -1
- package/build/actions/list-specification-revisions.js.map +1 -1
- package/build/actions/resources.js +3 -3
- package/build/actions/resources.js.map +1 -1
- package/build/actions/summarize-cards.js +1 -1
- package/build/actions/summarize-cards.js.map +1 -1
- package/build/actions/transitions.js +1 -1
- package/build/actions/transitions.js.map +1 -1
- package/build/actions/watch.js +2 -2
- package/build/actions/watch.js.map +1 -1
- package/build/utils/guard/types.d.ts +3 -1
- package/build/utils/guard/types.d.ts.map +1 -1
- package/build/utils/guard.d.ts.map +1 -1
- package/build/utils/guard.js +4 -2
- package/build/utils/guard.js.map +1 -1
- package/package.json +2 -2
- package/src/actions/commit.ts +1 -1
- package/src/actions/define-schemas.ts +1 -1
- package/src/actions/execute.ts +1 -1
- package/src/actions/get-card.ts +1 -1
- package/src/actions/get-specification.ts +1 -1
- package/src/actions/links.ts +1 -1
- package/src/actions/list-card-specifications.ts +1 -1
- package/src/actions/list-card-transitions.ts +1 -1
- package/src/actions/list-cards.ts +1 -1
- package/src/actions/list-schemas.ts +1 -1
- package/src/actions/list-specification-revisions.ts +1 -1
- package/src/actions/resources.ts +3 -3
- package/src/actions/summarize-cards.ts +1 -1
- package/src/actions/transitions.ts +1 -1
- package/src/actions/watch.ts +2 -2
- package/src/utils/guard/types.ts +3 -1
- package/src/utils/guard.ts +4 -2
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/server-planning",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.28",
|
|
5
|
+
"generatedAt": "2026-10-09T13:40:06.949Z",
|
|
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.
|
|
11
|
+
**Install:** `"@owlmeans/server-planning": "^0.1.18-rc.28"` 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
|
|
@@ -385,6 +385,11 @@ Access resolvers can grant `manageAssignees` and `manageTeams` separately from c
|
|
|
385
385
|
Comments and project/team attachment require writable containing cards/projects. Auxiliary
|
|
386
386
|
organization lists require authenticated organization scope; do not infer ACLs from project mode.
|
|
387
387
|
|
|
388
|
+
All stock HTTP replies use `guardHelper.reply`, which conceals scope failures and applies the
|
|
389
|
+
typed planning reply projection. Socket commits use the same projection. Organization `entityId`
|
|
390
|
+
stays in native records and verified scopes, and never leaves through records, schema scopes or
|
|
391
|
+
nested receipts. Keep business fields and schema definitions unchanged when projecting replies.
|
|
392
|
+
|
|
388
393
|
Admission and native projection recheck hierarchy, schema fields and endpoint types. Recursive
|
|
389
394
|
visibility follows every project ancestor and filters before paging. Definition record reads
|
|
390
395
|
use the same recursive visibility as cards. Reparenting validates all
|
package/build/actions/commit.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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.
|
|
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,
|
|
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"}
|
package/build/actions/execute.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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"}
|
package/build/actions/links.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,gGAAgG;AAChG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAA4B,EAAE,IAA6B,EAAE,EAAE,CACnG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACvE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IAC3B,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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"}
|
package/build/actions/watch.js
CHANGED
|
@@ -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;
|
|
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;
|
|
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,
|
|
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"}
|
package/build/utils/guard.js
CHANGED
|
@@ -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(…)` */
|
package/build/utils/guard.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
3
|
+
"version": "0.1.18-rc.28",
|
|
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.
|
|
53
|
+
"@owlmeans/planning": "^0.1.18-rc.24",
|
|
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",
|
package/src/actions/commit.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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) {
|
package/src/actions/execute.ts
CHANGED
|
@@ -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.
|
|
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)
|
package/src/actions/get-card.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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}`)
|
package/src/actions/links.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
package/src/actions/resources.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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}`)
|
package/src/actions/watch.ts
CHANGED
|
@@ -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
|
}
|
package/src/utils/guard/types.ts
CHANGED
|
@@ -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
|
}
|
package/src/utils/guard.ts
CHANGED
|
@@ -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()
|