@owlmeans/planning 0.1.18-rc.8 → 0.1.18
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/README.md +122 -29
- package/agent-meta/manifest.json +131 -4
- package/agent-meta/skills/planning/SKILL.md +78 -171
- package/agent-meta/skills/planning/parts/collaboration.md +67 -0
- package/agent-meta/skills/planning/parts/errors.md +51 -0
- package/agent-meta/skills/planning/parts/fold.md +69 -0
- package/agent-meta/skills/planning/parts/mounting.md +64 -0
- package/agent-meta/skills/planning/parts/types.md +141 -0
- package/build/aliases/types.d.ts +72 -0
- package/build/aliases/types.d.ts.map +1 -0
- package/build/aliases/types.js +2 -0
- package/build/aliases/types.js.map +1 -0
- package/build/aliases.d.ts +4 -0
- package/build/aliases.d.ts.map +1 -0
- package/build/aliases.js +28 -0
- package/build/aliases.js.map +1 -0
- package/build/consts.d.ts +43 -34
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +49 -25
- package/build/consts.js.map +1 -1
- package/build/entrypoints/types.d.ts +105 -0
- package/build/entrypoints/types.d.ts.map +1 -0
- package/build/entrypoints/types.js +2 -0
- package/build/entrypoints/types.js.map +1 -0
- package/build/entrypoints.d.ts +5 -1
- package/build/entrypoints.d.ts.map +1 -1
- package/build/entrypoints.js +24 -6
- package/build/entrypoints.js.map +1 -1
- package/build/errors.d.ts +41 -0
- package/build/errors.d.ts.map +1 -1
- package/build/errors.js +61 -0
- package/build/errors.js.map +1 -1
- package/build/helpers/app/consts.local.d.ts +5 -0
- package/build/helpers/app/consts.local.d.ts.map +1 -0
- package/build/helpers/app/consts.local.js +5 -0
- package/build/helpers/app/consts.local.js.map +1 -0
- package/build/helpers/app/types.d.ts +53 -0
- package/build/helpers/app/types.d.ts.map +1 -0
- package/build/helpers/app/types.js +2 -0
- package/build/helpers/app/types.js.map +1 -0
- package/build/helpers/app.d.ts +4 -0
- package/build/helpers/app.d.ts.map +1 -0
- package/build/helpers/app.js +139 -0
- package/build/helpers/app.js.map +1 -0
- package/build/helpers/apply/consts.local.d.ts +7 -0
- package/build/helpers/apply/consts.local.d.ts.map +1 -0
- package/build/helpers/apply/consts.local.js +9 -0
- package/build/helpers/apply/consts.local.js.map +1 -0
- package/build/helpers/apply/types.d.ts +32 -0
- package/build/helpers/apply/types.d.ts.map +1 -0
- package/build/helpers/apply/types.js +2 -0
- package/build/helpers/apply/types.js.map +1 -0
- package/build/helpers/apply.d.ts +5 -23
- package/build/helpers/apply.d.ts.map +1 -1
- package/build/helpers/apply.js +127 -144
- package/build/helpers/apply.js.map +1 -1
- package/build/helpers/card/types.d.ts +20 -0
- package/build/helpers/card/types.d.ts.map +1 -0
- package/build/helpers/card/types.js +2 -0
- package/build/helpers/card/types.js.map +1 -0
- package/build/helpers/card.d.ts +11 -7
- package/build/helpers/card.d.ts.map +1 -1
- package/build/helpers/card.js +41 -28
- package/build/helpers/card.js.map +1 -1
- package/build/helpers/changes/consts.local.d.ts +13 -0
- package/build/helpers/changes/consts.local.d.ts.map +1 -0
- package/build/helpers/changes/consts.local.js +13 -0
- package/build/helpers/changes/consts.local.js.map +1 -0
- package/build/helpers/changes/types.d.ts +58 -0
- package/build/helpers/changes/types.d.ts.map +1 -0
- package/build/helpers/changes/types.js +2 -0
- package/build/helpers/changes/types.js.map +1 -0
- package/build/helpers/changes.d.ts +11 -42
- package/build/helpers/changes.d.ts.map +1 -1
- package/build/helpers/changes.js +237 -251
- package/build/helpers/changes.js.map +1 -1
- package/build/helpers/code/types.d.ts +27 -0
- package/build/helpers/code/types.d.ts.map +1 -0
- package/build/helpers/code/types.js +2 -0
- package/build/helpers/code/types.js.map +1 -0
- package/build/helpers/code.d.ts +6 -17
- package/build/helpers/code.d.ts.map +1 -1
- package/build/helpers/code.js +39 -40
- package/build/helpers/code.js.map +1 -1
- package/build/helpers/index.d.ts +16 -0
- package/build/helpers/index.d.ts.map +1 -1
- package/build/helpers/index.js +4 -0
- package/build/helpers/index.js.map +1 -1
- package/build/helpers/query/types.d.ts +23 -0
- package/build/helpers/query/types.d.ts.map +1 -0
- package/build/helpers/query/types.js +2 -0
- package/build/helpers/query/types.js.map +1 -0
- package/build/helpers/query.d.ts +25 -17
- package/build/helpers/query.d.ts.map +1 -1
- package/build/helpers/query.js +108 -280
- package/build/helpers/query.js.map +1 -1
- package/build/helpers/reply/consts.d.ts +2 -0
- package/build/helpers/reply/consts.d.ts.map +1 -0
- package/build/helpers/reply/consts.js +2 -0
- package/build/helpers/reply/consts.js.map +1 -0
- package/build/helpers/reply/types.d.ts +10 -0
- package/build/helpers/reply/types.d.ts.map +1 -0
- package/build/helpers/reply/types.js +2 -0
- package/build/helpers/reply/types.js.map +1 -0
- package/build/helpers/reply.d.ts +5 -0
- package/build/helpers/reply.d.ts.map +1 -0
- package/build/helpers/reply.js +29 -0
- package/build/helpers/reply.js.map +1 -0
- package/build/helpers/scoped/types.d.ts +73 -0
- package/build/helpers/scoped/types.d.ts.map +1 -0
- package/build/helpers/scoped/types.js +2 -0
- package/build/helpers/scoped/types.js.map +1 -0
- package/build/helpers/scoped.d.ts +25 -0
- package/build/helpers/scoped.d.ts.map +1 -0
- package/build/helpers/scoped.js +223 -0
- package/build/helpers/scoped.js.map +1 -0
- package/build/helpers/specification/types.d.ts +24 -0
- package/build/helpers/specification/types.d.ts.map +1 -0
- package/build/helpers/specification/types.js +2 -0
- package/build/helpers/specification/types.js.map +1 -0
- package/build/helpers/specification.d.ts +9 -13
- package/build/helpers/specification.d.ts.map +1 -1
- package/build/helpers/specification.js +47 -44
- package/build/helpers/specification.js.map +1 -1
- package/build/helpers/status/types.d.ts +48 -0
- package/build/helpers/status/types.d.ts.map +1 -0
- package/build/helpers/status/types.js +2 -0
- package/build/helpers/status/types.js.map +1 -0
- package/build/helpers/status.d.ts +16 -29
- package/build/helpers/status.d.ts.map +1 -1
- package/build/helpers/status.js +77 -73
- package/build/helpers/status.js.map +1 -1
- package/build/helpers/types.local.d.ts +17 -0
- package/build/helpers/types.local.d.ts.map +1 -0
- package/build/helpers/types.local.js +2 -0
- package/build/helpers/types.local.js.map +1 -0
- package/build/helpers/validate/types.d.ts +31 -0
- package/build/helpers/validate/types.d.ts.map +1 -0
- package/build/helpers/validate/types.js +2 -0
- package/build/helpers/validate/types.js.map +1 -0
- package/build/helpers/validate.d.ts +8 -19
- package/build/helpers/validate.d.ts.map +1 -1
- package/build/helpers/validate.js +79 -79
- package/build/helpers/validate.js.map +1 -1
- package/build/helpers/wire/types.d.ts +28 -0
- package/build/helpers/wire/types.d.ts.map +1 -0
- package/build/helpers/wire/types.js +2 -0
- package/build/helpers/wire/types.js.map +1 -0
- package/build/helpers/wire.d.ts +4 -0
- package/build/helpers/wire.d.ts.map +1 -0
- package/build/helpers/wire.js +216 -0
- package/build/helpers/wire.js.map +1 -0
- package/build/i18n/be.json +5 -0
- package/build/i18n/de.json +5 -0
- package/build/i18n/en.json +5 -0
- package/build/i18n/es.json +5 -0
- package/build/i18n/fr.json +5 -0
- package/build/i18n/pl.json +5 -0
- package/build/i18n/ru.json +5 -0
- package/build/i18n/uk.json +5 -0
- package/build/i18n.js +3 -3
- package/build/i18n.js.map +1 -1
- package/build/index.d.ts +7 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -0
- package/build/index.js.map +1 -1
- package/build/models/index.d.ts +2 -3
- package/build/models/index.d.ts.map +1 -1
- package/build/models/index.js +1 -15
- package/build/models/index.js.map +1 -1
- package/build/models/model.d.ts +5 -0
- package/build/models/model.d.ts.map +1 -0
- package/build/models/model.js +16 -0
- package/build/models/model.js.map +1 -0
- package/build/models/project.d.ts +2 -1
- package/build/models/project.d.ts.map +1 -1
- package/build/models/project.js.map +1 -1
- package/build/models/specification.d.ts +2 -1
- package/build/models/specification.d.ts.map +1 -1
- package/build/models/specification.js.map +1 -1
- package/build/models/types.d.ts +69 -0
- package/build/models/types.d.ts.map +1 -0
- package/build/models/types.js +2 -0
- package/build/models/types.js.map +1 -0
- package/build/models/workcard.d.ts +2 -1
- package/build/models/workcard.d.ts.map +1 -1
- package/build/models/workcard.js +12 -12
- package/build/models/workcard.js.map +1 -1
- package/build/registry.d.ts +3 -2
- package/build/registry.d.ts.map +1 -1
- package/build/registry.js +51 -3
- package/build/registry.js.map +1 -1
- package/build/resources/mentions.d.ts +4 -0
- package/build/resources/mentions.d.ts.map +1 -0
- package/build/resources/mentions.js +15 -0
- package/build/resources/mentions.js.map +1 -0
- package/build/resources/protocol/types.d.ts +30 -0
- package/build/resources/protocol/types.d.ts.map +1 -0
- package/build/resources/protocol/types.js +2 -0
- package/build/resources/protocol/types.js.map +1 -0
- package/build/resources/protocol.d.ts +6 -0
- package/build/resources/protocol.d.ts.map +1 -0
- package/build/resources/protocol.js +31 -0
- package/build/resources/protocol.js.map +1 -0
- package/build/resources/types.d.ts +146 -0
- package/build/resources/types.d.ts.map +1 -0
- package/build/resources/types.js +2 -0
- package/build/resources/types.js.map +1 -0
- package/build/resources/types.local.d.ts +6 -0
- package/build/resources/types.local.d.ts.map +1 -0
- package/build/resources/types.local.js +2 -0
- package/build/resources/types.local.js.map +1 -0
- package/build/schemas.d.ts +21 -2
- package/build/schemas.d.ts.map +1 -1
- package/build/schemas.js +164 -2
- package/build/schemas.js.map +1 -1
- package/build/types.d.ts +330 -151
- package/build/types.d.ts.map +1 -1
- package/build/utils.d.ts +6 -0
- package/build/utils.d.ts.map +1 -0
- package/build/utils.js +6 -0
- package/build/utils.js.map +1 -0
- package/package.json +13 -13
- package/src/aliases/types.ts +41 -0
- package/src/aliases.ts +34 -0
- package/src/consts.ts +50 -25
- package/src/entrypoints/types.ts +77 -0
- package/src/entrypoints.ts +53 -24
- package/src/errors.ts +71 -0
- package/src/helpers/app/consts.local.ts +5 -0
- package/src/helpers/app/types.ts +54 -0
- package/src/helpers/app.ts +158 -0
- package/src/helpers/apply/consts.local.ts +10 -0
- package/src/helpers/apply/types.ts +32 -0
- package/src/helpers/apply.ts +141 -153
- package/src/helpers/card/types.ts +20 -0
- package/src/helpers/card.ts +59 -33
- package/src/helpers/changes/consts.local.ts +17 -0
- package/src/helpers/changes/types.ts +66 -0
- package/src/helpers/changes.ts +270 -280
- package/src/helpers/code/types.ts +31 -0
- package/src/helpers/code.ts +52 -48
- package/src/helpers/index.ts +17 -0
- package/src/helpers/query/types.ts +26 -0
- package/src/helpers/query.ts +144 -314
- package/src/helpers/reply/consts.ts +1 -0
- package/src/helpers/reply/types.ts +13 -0
- package/src/helpers/reply.ts +27 -0
- package/src/helpers/scoped/types.ts +78 -0
- package/src/helpers/scoped.ts +281 -0
- package/src/helpers/specification/types.ts +26 -0
- package/src/helpers/specification.ts +69 -51
- package/src/helpers/status/types.ts +46 -0
- package/src/helpers/status.ts +117 -93
- package/src/helpers/types.local.ts +18 -0
- package/src/helpers/validate/types.ts +31 -0
- package/src/helpers/validate.ts +89 -77
- package/src/helpers/wire/types.ts +31 -0
- package/src/helpers/wire.ts +252 -0
- package/src/i18n/be.json +5 -0
- package/src/i18n/de.json +5 -0
- package/src/i18n/en.json +5 -0
- package/src/i18n/es.json +5 -0
- package/src/i18n/fr.json +5 -0
- package/src/i18n/pl.json +5 -0
- package/src/i18n/ru.json +5 -0
- package/src/i18n/uk.json +5 -0
- package/src/i18n.ts +4 -3
- package/src/index.ts +8 -0
- package/src/models/index.ts +2 -17
- package/src/models/model.ts +18 -0
- package/src/models/project.ts +2 -1
- package/src/models/specification.ts +2 -1
- package/src/models/types.ts +70 -0
- package/src/models/workcard.ts +14 -16
- package/src/registry.ts +55 -4
- package/src/resources/mentions.ts +11 -0
- package/src/resources/protocol/types.ts +21 -0
- package/src/resources/protocol.ts +36 -0
- package/src/resources/types.local.ts +5 -0
- package/src/resources/types.ts +148 -0
- package/src/schemas.ts +179 -4
- package/src/types.ts +334 -130
- package/src/utils.ts +9 -0
- package/tests/app.spec.ts +188 -0
- package/tests/apply.spec.ts +95 -31
- package/tests/code.spec.ts +9 -9
- package/tests/csp.spec.ts +122 -0
- package/tests/entrypoints.spec.ts +18 -2
- package/tests/error-status.spec.ts +6 -1
- package/tests/models.spec.ts +24 -16
- package/tests/query.spec.ts +13 -15
- package/tests/schemas.spec.ts +8 -8
- package/tests/scoped.spec.ts +161 -0
- package/tests/status.spec.ts +31 -22
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: types
|
|
3
|
+
description: Declaring card, project and specification types and status flows as closed data, the application's own definition properties and base card fields (`app`), the data-defined layers (code, entity, project) and retirement, and the rules every record schema keeps.
|
|
4
|
+
metadata:
|
|
5
|
+
purposes: data
|
|
6
|
+
mentions: WorkcardTypeSchema, ProjectTypeSchema, StatusFlowSchema, SpecificationSlot, CodePolicy, makeSchemaRegistry, scopedSchemaHelper, resolveScopedBundle, ScopedSchemaRecord, ScopedSchemaBundle, SchemaStore, putType, putFlow, putAssigneeType, scopedCardTypes, overridable, appSchemaHelper, PlanningAppDeclarations, PlanningAppSchema, registerApp, fieldsSchema
|
|
7
|
+
---
|
|
8
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
9
|
+
|
|
10
|
+
# @owlmeans/planning — Types, flows and schemas
|
|
11
|
+
|
|
12
|
+
## Declaring a type
|
|
13
|
+
|
|
14
|
+
A `WorkcardTypeSchema` / `ProjectTypeSchema` is plain data registered through a plugin's `schemas`
|
|
15
|
+
or `makeSchemaRegistry({ types, flows })`. **Every declaration schema is closed** — these are ALL
|
|
16
|
+
the keys:
|
|
17
|
+
|
|
18
|
+
| Declaration | Required | Optional |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| card / specification type | `type` (its key), `kind`, `version`, `fields`, `flows` (at least one), `specifications` | `intrinsic`, `relationships`, `labels`, `code`, `label`, `tone`, `icon`, `overridable`, `app` |
|
|
21
|
+
| project type | the same, plus `cardTypes` | `projectTypes`, `scopedCardTypes` |
|
|
22
|
+
| flow | `id` (its key), `version`, `statuses` (at least one), `transitions` | `label`, `tone`, `icon`, `overridable`, `app` |
|
|
23
|
+
| status | `key`, `intrinsic` | `initial`, `terminal`, `label`, `tone` |
|
|
24
|
+
| transition rule | `name`, `from` (status keys or `'*'`), `to` | `label`, `explicit` |
|
|
25
|
+
|
|
26
|
+
The display name is `label` everywhere; a type or a flow has no `name`, `key` or `description`
|
|
27
|
+
(`key` belongs to a status, `name` to a rule). Anything else the application keeps about a type or
|
|
28
|
+
a flow — a `description`, an origin's attribute — goes in its `app` bag, which the application
|
|
29
|
+
declares (below). As data, `definitions` refuses an extra key with `SchemaInvalid`; in code the
|
|
30
|
+
registry does not validate a declaration, so only TypeScript's excess-property check catches it —
|
|
31
|
+
keep the literal typed.
|
|
32
|
+
|
|
33
|
+
- `fields` — the AJV schema of `fields`; the registry compiles and caches it (`validator(type)`).
|
|
34
|
+
- `specifications` — the slots this type's cards carry as children. A slot may name its
|
|
35
|
+
specification `type`; otherwise `specificationHelper.specificationTypeOf` takes the only registered specification
|
|
36
|
+
type, then the one sharing the parent type's prefix (`viable:project` → `viable:spec`).
|
|
37
|
+
- `code` — `CodePolicy { prefix?, style: random|sequential|slug, length?, uppercase?, uniqueWithin:
|
|
38
|
+
parent|entity, mutable? }`. A code is fixed once minted unless `mutable`.
|
|
39
|
+
- `relationships` — the edge types a card may start (`single` = at most one per card).
|
|
40
|
+
- `labels` — the allowed labels (any when omitted).
|
|
41
|
+
- A project type lists `cardTypes` (and `projectTypes` for nesting) its children may have;
|
|
42
|
+
`scopedCardTypes: true` also admits card types defined as data (below).
|
|
43
|
+
- `overridable: true` on a code type or flow opens it to a data-defined override.
|
|
44
|
+
- `tone` / `icon` (type, flow) and `tone` (status) — PRESENTATION hints the package stores as free
|
|
45
|
+
text of at most 64 characters, neither validating nor rendering them. Their standard values and
|
|
46
|
+
their standard editor and renderer are `@owlmeans/web-panel/picker`: `tone` a palette key
|
|
47
|
+
(`PICKER_COLOR_KEYS` — red … graphite, 24) or a lowercase `#rrggbb` when the editor allows custom
|
|
48
|
+
colours, `icon` a kebab-case lucide name of its catalogue (`PICKER_ICON_NAMES`). A person edits a
|
|
49
|
+
type's or a flow's mark with `IconColorPicker` and shows it with `IconTile` / `ColorDot`; a
|
|
50
|
+
status's `tone` usually names a meaning the application's own palette maps (`ColorPicker` with
|
|
51
|
+
`colors`). An unknown value renders the picker's fallback (`slate`, `circle`); server code and
|
|
52
|
+
seeds read the data React-free from `@owlmeans/web-panel/picker/vocabulary`.
|
|
53
|
+
|
|
54
|
+
## Application-declared properties (`app`)
|
|
55
|
+
|
|
56
|
+
Two kinds of field exist: the custom ones a data-defined type gives its cards (its `fields`,
|
|
57
|
+
written by the app's people), and the ones the APPLICATION pregenerates in code for every type,
|
|
58
|
+
flow or card. The latter are `PlanningAppDeclarations { type?, flow?, card? }`, declared in
|
|
59
|
+
`PlanningPlugin.schemas.app` (and `PlanningServiceOptions.schemas.app`) and served in the bundle
|
|
60
|
+
(`bundle.app`, `registry.app()`):
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
schemas: { app: {
|
|
64
|
+
type: { properties: { description: { type: 'string', maxLength: 2000 } } },
|
|
65
|
+
flow: { properties: { description: { type: 'string' } } },
|
|
66
|
+
card: { properties: { priority: { type: 'string', enum: ['low', 'high'] } } },
|
|
67
|
+
} }
|
|
68
|
+
// then a type: { type: 'wm:task', …, app: { description: 'Work items' } }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **Closed form** (`appSchemaHelper.assertDeclarations` → `SchemaInvalid('app:<kind>:…')`): each
|
|
72
|
+
kind is `{ type?: 'object', properties, required? }` and nothing else; property names hold no
|
|
73
|
+
`.` or `$`; every `required` name is declared in the same declaration; outside a browser document
|
|
74
|
+
the schema compiles. A page never compiles (a strict `script-src` refuses Ajv's code generation):
|
|
75
|
+
building, loading or merging a registry there runs the closed-form checks only, and what it
|
|
76
|
+
registers is the bundle its server compiled when the plugins were registered.
|
|
77
|
+
- **Merge** (`appSchemaHelper.merge`, run by the server's plugin registry on every `use` and by
|
|
78
|
+
the client over the served bundle): the service's own `schemas.app` first, then each plugin's in
|
|
79
|
+
plugin order (`order` ascending, registration order among equals). Per kind `properties` are
|
|
80
|
+
united — a later declaration of a name replaces the earlier one whole — and `required` is united.
|
|
81
|
+
A plugin replaced by name takes its declarations with it. The result is normalized
|
|
82
|
+
(`type: 'object'`); nothing declared → `undefined` and no `app` key in any bundle.
|
|
83
|
+
- **`type` / `flow` → the definition's `app` bag**, closed over the declared properties
|
|
84
|
+
(`additionalProperties: false`; an absent bag reads `{}`, so a `required` property makes the bag
|
|
85
|
+
mandatory). Checked on every data-defined write — `define`, `put*`, `seed`, the wire
|
|
86
|
+
`schema.define` — by `assertTypeSchema(type, flows, app)` / `assertFlowSchema(flow, app)`. A kind
|
|
87
|
+
the application does not declare refuses any bag (`<kind>:<key>:app:undeclared`). Code
|
|
88
|
+
declarations are not validated (as every code declaration); a record written under earlier
|
|
89
|
+
declarations still resolves.
|
|
90
|
+
- **`card` → base `fields` of every type of kind `card`**, code or data-defined
|
|
91
|
+
(`registry.fieldsSchema(type)`, compiled by `registry.validator(type)`). The type's schema stays
|
|
92
|
+
the root (its `#/…` references still resolve); each base name absent from its top-level
|
|
93
|
+
`properties` is added as `{}` — so its `additionalProperties: false` never refuses a base field —
|
|
94
|
+
and the base object schema is appended to its `allOf`. A type that declares a base name itself
|
|
95
|
+
narrows it (both apply). Projects and specifications are untouched. A required base field, like a
|
|
96
|
+
newly required type field, refuses every later write of a card that lacks it.
|
|
97
|
+
- Without declarations every behavior is the previous one: `fieldsSchema(type)` IS `type.fields`.
|
|
98
|
+
|
|
99
|
+
## Data-defined types and flows
|
|
100
|
+
|
|
101
|
+
Card types, assignee types and status flows may also be DATA — `ScopedSchemaRecord`s a store keeps
|
|
102
|
+
behind the optional `PlanningStore.schemas` port. Card types and flows layer **code → entity → project**;
|
|
103
|
+
assignee types layer **code → entity** and refuse a project-local declaration:
|
|
104
|
+
|
|
105
|
+
- `code` is the plugin registry (the default), `entity` an organization-wide record
|
|
106
|
+
(`project` absent), `project` a record of one project card. A project record overrides an
|
|
107
|
+
organization one of the same key.
|
|
108
|
+
- **Card types, assignee types and flows are data.** A code key is sealed unless its declaration says
|
|
109
|
+
`overridable: true`; project and specification types are always code's (`scopedSchemaHelper.assertOverridable` →
|
|
110
|
+
`SchemaSealed`).
|
|
111
|
+
- A record's `version` is its compare-and-set token and is written into the declaration's own
|
|
112
|
+
`version`: a write lands only at its layer's next version, 1 for a new key (`SchemaConflict`).
|
|
113
|
+
- The closed-form checks are shared by every store: `scopedSchemaHelper.assertFlowSchema` (the declaration's schema,
|
|
114
|
+
unique status keys, every `to` declared, `from` `'*'` or declared statuses, the `app` bag) and
|
|
115
|
+
`scopedSchemaHelper.assertTypeSchema` (the `card` kind, the `app` bag, a `fields` schema that
|
|
116
|
+
compiles with the base card fields, unique flows that resolve) — `SchemaInvalid`.
|
|
117
|
+
- **Retired** means offered for nothing new, still resolved for what uses it: a retired record
|
|
118
|
+
gives way to a live declaration below it, and a key retired in every layer resolves retired —
|
|
119
|
+
present in the bundle's `types`/`flows`, listed in `retired`. A flow cannot be retired while a
|
|
120
|
+
live type of an affected layer still runs it (`scopedSchemaHelper.flowInUse` → `SchemaInUse`).
|
|
121
|
+
- `scopedSchemaHelper.resolveScopedBundle(code, records, scope)` is the ONE resolution (pure);
|
|
122
|
+
`scopedRegistryOf` is its read-only registry (`originOf`, `isRetired`; `register*`/`load` refuse). A
|
|
123
|
+
`ScopedSchemaBundle` extends the plain bundle with `scope`, `revision`, `origins`, `retired`, so a
|
|
124
|
+
reader of the plain bundle is unaffected; the code bundle's `app` passes through.
|
|
125
|
+
- `SchemaStore`: `list(where)`, `put(record)` (the CAS), `purge({ entityId, project })`,
|
|
126
|
+
`revision(entityId)` (monotonic per organization), optional `watch(listener)`.
|
|
127
|
+
- `PlanningFacade.definitions` (present only where the store has the port): `bundle(project?)`,
|
|
128
|
+
`registry(project?)`, `records`, `putType`/`putFlow`/`putAssigneeType` (CAS on the declaration's version),
|
|
129
|
+
`define` (each at its layer's next version, flows first), `seed` (only the keys the layer lacks),
|
|
130
|
+
`retire(kind, key, { project? })`. The declaration still carries its own `version` (any number
|
|
131
|
+
≥ 1 for `define`/`seed`, which assign the layer's next one; the exact next one for `put*`), and
|
|
132
|
+
a project layer is `{ project: <project card id> }` in the second argument (a `define` call:
|
|
133
|
+
`server-planning` → Creating and reading a card).
|
|
134
|
+
|
|
135
|
+
## Schema rules
|
|
136
|
+
|
|
137
|
+
A record schema may become a Mongo `$jsonSchema`, so every exported schema keeps two rules: **no
|
|
138
|
+
`integer`** (`number` only) and **every optional property `nullable: true`** (an enum then admits
|
|
139
|
+
`null` too). No `oneOf`/`anyOf` inside a record schema. Build type arrays per schema, never share
|
|
140
|
+
one object between schemas — ajv may extend a `type` array while compiling. The walk that pins this
|
|
141
|
+
is part of the package's own tests.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** The aliases one planning tree answers under — every one derived from the mount's base alias. */
|
|
2
|
+
export interface PlanningAliases {
|
|
3
|
+
readonly base: string;
|
|
4
|
+
readonly schema: {
|
|
5
|
+
readonly list: string;
|
|
6
|
+
};
|
|
7
|
+
readonly card: {
|
|
8
|
+
readonly list: string;
|
|
9
|
+
readonly summary: string;
|
|
10
|
+
readonly get: string;
|
|
11
|
+
readonly transitions: string;
|
|
12
|
+
readonly specifications: string;
|
|
13
|
+
};
|
|
14
|
+
readonly spec: {
|
|
15
|
+
readonly get: string;
|
|
16
|
+
readonly revisions: string;
|
|
17
|
+
};
|
|
18
|
+
readonly link: {
|
|
19
|
+
readonly list: string;
|
|
20
|
+
};
|
|
21
|
+
readonly transition: {
|
|
22
|
+
readonly get: string;
|
|
23
|
+
};
|
|
24
|
+
readonly execute: string;
|
|
25
|
+
readonly commit: {
|
|
26
|
+
readonly get: string;
|
|
27
|
+
readonly events: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** The aliases of the leaves a tree gains with `definitions: true`. */
|
|
31
|
+
export interface PlanningDefinitionAliases {
|
|
32
|
+
readonly define: string;
|
|
33
|
+
}
|
|
34
|
+
export interface PlanningAliasHelper {
|
|
35
|
+
planningResourceAliases: (base: string) => PlanningResourceAliases;
|
|
36
|
+
/**
|
|
37
|
+
* The aliases one planning tree answers under, derived from the mount's base alias.
|
|
38
|
+
*
|
|
39
|
+
* Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
|
|
40
|
+
* which is why nothing here is a global constant.
|
|
41
|
+
*/
|
|
42
|
+
planningAliases: (base: string) => PlanningAliases;
|
|
43
|
+
/**
|
|
44
|
+
* The aliases of the leaves a tree gains with `definitions: true` — kept apart from
|
|
45
|
+
* {@link PlanningAliasHelper.planningAliases} so a tree declared without them names no alias it
|
|
46
|
+
* does not declare.
|
|
47
|
+
*/
|
|
48
|
+
planningDefinitionAliases: (base: string) => PlanningDefinitionAliases;
|
|
49
|
+
}
|
|
50
|
+
export interface PlanningResourceAliases {
|
|
51
|
+
assignees: {
|
|
52
|
+
get: string;
|
|
53
|
+
list: string;
|
|
54
|
+
write: string;
|
|
55
|
+
};
|
|
56
|
+
teams: {
|
|
57
|
+
get: string;
|
|
58
|
+
list: string;
|
|
59
|
+
write: string;
|
|
60
|
+
};
|
|
61
|
+
comments: {
|
|
62
|
+
get: string;
|
|
63
|
+
list: string;
|
|
64
|
+
write: string;
|
|
65
|
+
};
|
|
66
|
+
mentions: {
|
|
67
|
+
get: string;
|
|
68
|
+
list: string;
|
|
69
|
+
write: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/aliases/types.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAChC,CAAA;IACD,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;AAED,uEAAuE;AACvE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAA;IAClE;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAA;IAClD;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,yBAAyB,CAAA;CACvE;AAED,MAAM,WAAW,uBAAuB;IAAG,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/aliases/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,mBAAmB,EAAsD,MAAM,oBAAoB,CAAA;AAElI,eAAO,MAAM,yBAAyB,QAAO,mBA6B5C,CAAA;AAED,eAAO,MAAM,mBAAmB,qBAA8B,CAAA"}
|
package/build/aliases.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const createPlanningAliasHelper = () => {
|
|
2
|
+
const planningAliases = (base) => Object.freeze({
|
|
3
|
+
base,
|
|
4
|
+
schema: Object.freeze({ list: `${base}:schema:list` }),
|
|
5
|
+
card: Object.freeze({
|
|
6
|
+
list: `${base}:card:list`,
|
|
7
|
+
summary: `${base}:card:summary`,
|
|
8
|
+
get: `${base}:card:get`,
|
|
9
|
+
transitions: `${base}:card:transitions`,
|
|
10
|
+
specifications: `${base}:card:specifications`,
|
|
11
|
+
}),
|
|
12
|
+
spec: Object.freeze({
|
|
13
|
+
get: `${base}:specification:get`,
|
|
14
|
+
revisions: `${base}:specification:revisions`,
|
|
15
|
+
}),
|
|
16
|
+
link: Object.freeze({ list: `${base}:link:list` }),
|
|
17
|
+
transition: Object.freeze({ get: `${base}:transition:get` }),
|
|
18
|
+
execute: `${base}:execute`,
|
|
19
|
+
commit: Object.freeze({ get: `${base}:commit:get`, events: `${base}:commit:events` }),
|
|
20
|
+
});
|
|
21
|
+
const planningDefinitionAliases = (base) => Object.freeze({
|
|
22
|
+
define: `${base}:schema:define`,
|
|
23
|
+
});
|
|
24
|
+
const planningResourceAliases = (base) => Object.freeze(Object.fromEntries(['assignees', 'teams', 'comments', 'mentions'].map(name => [name, Object.freeze({ get: `${base}:${name}:get`, list: `${base}:${name}:list`, write: `${base}:${name}:write` })])));
|
|
25
|
+
return { planningAliases, planningDefinitionAliases, planningResourceAliases };
|
|
26
|
+
};
|
|
27
|
+
export const planningAliasHelper = createPlanningAliasHelper();
|
|
28
|
+
//# sourceMappingURL=aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.js","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAmB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACvE,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;QACtD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG,IAAI,YAAY;YACzB,OAAO,EAAE,GAAG,IAAI,eAAe;YAC/B,GAAG,EAAE,GAAG,IAAI,WAAW;YACvB,WAAW,EAAE,GAAG,IAAI,mBAAmB;YACvC,cAAc,EAAE,GAAG,IAAI,sBAAsB;SAC9C,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,GAAG,IAAI,oBAAoB;YAChC,SAAS,EAAE,GAAG,IAAI,0BAA0B;SAC7C,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC5D,OAAO,EAAE,GAAG,IAAI,UAAU;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,gBAAgB,EAAE,CAAC;KACtF,CAAC,CAAA;IAEF,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAA6B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3F,MAAM,EAAE,GAAG,IAAI,gBAAgB;KAChC,CAAC,CAAA;IAEF,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAA2B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CACzG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAChL,CAAuC,CAAA;IACxC,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAA;AAChF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAA"}
|
package/build/consts.d.ts
CHANGED
|
@@ -52,6 +52,49 @@ export declare enum CodeScope {
|
|
|
52
52
|
Parent = "parent",
|
|
53
53
|
Entity = "entity"
|
|
54
54
|
}
|
|
55
|
+
/** What a data-defined schema record declares: a card type or a status flow. */
|
|
56
|
+
export declare enum PlanningSchemaKind {
|
|
57
|
+
Type = "type",
|
|
58
|
+
Flow = "flow",
|
|
59
|
+
AssigneeType = "assignee-type"
|
|
60
|
+
}
|
|
61
|
+
export declare enum AssigneeKind {
|
|
62
|
+
Human = "human",
|
|
63
|
+
NonHuman = "non-human"
|
|
64
|
+
}
|
|
65
|
+
export declare enum PlanningResourceKind {
|
|
66
|
+
Workcard = "workcard",
|
|
67
|
+
Assignee = "assignee",
|
|
68
|
+
Team = "team",
|
|
69
|
+
Comment = "comment",
|
|
70
|
+
Mention = "mention"
|
|
71
|
+
}
|
|
72
|
+
export declare enum ProjectMode {
|
|
73
|
+
Opened = "opened",
|
|
74
|
+
Closed = "closed"
|
|
75
|
+
}
|
|
76
|
+
export declare const PLANNING_TEAM_MEMBER = "planning:team-member";
|
|
77
|
+
export declare const PLANNING_PROJECT_TEAM = "planning:project-team";
|
|
78
|
+
export declare const PLANNING_REPORTER = "planning:reporter";
|
|
79
|
+
export declare const PLANNING_ASSIGNEE = "planning:assignee";
|
|
80
|
+
/**
|
|
81
|
+
* The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
|
|
82
|
+
* `entity` an organization-wide record, `project` a record scoped to one project card.
|
|
83
|
+
*/
|
|
84
|
+
export declare enum SchemaOrigin {
|
|
85
|
+
Code = "code",
|
|
86
|
+
Entity = "entity",
|
|
87
|
+
Project = "project"
|
|
88
|
+
}
|
|
89
|
+
/** How a `schema.define` request writes its declarations. */
|
|
90
|
+
export declare enum SchemaWriteMode {
|
|
91
|
+
/** Each declaration lands at its layer's next version. */
|
|
92
|
+
Define = "define",
|
|
93
|
+
/** Compare-and-set: each declaration's `version` must be its layer's next version. */
|
|
94
|
+
Put = "put",
|
|
95
|
+
/** Only keys the layer lacks are written, at version 1. */
|
|
96
|
+
Seed = "seed"
|
|
97
|
+
}
|
|
55
98
|
/** Service alias of the planning facade host. Identical on the server and in a client. */
|
|
56
99
|
export declare const PLANNING_SERVICE = "planning";
|
|
57
100
|
/** The path segment the protocol tree answers under when the mount names none. */
|
|
@@ -89,38 +132,4 @@ export declare const REF_MAX = 1024;
|
|
|
89
132
|
export declare const QUERY_TEXT_MAX = 256;
|
|
90
133
|
/** The longest list a wire query carries in one value (ids, parents). */
|
|
91
134
|
export declare const MAX_QUERY_LIST = 500;
|
|
92
|
-
/**
|
|
93
|
-
* The aliases one planning tree answers under, derived from the mount's base alias.
|
|
94
|
-
*
|
|
95
|
-
* Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
|
|
96
|
-
* which is why nothing here is a global constant.
|
|
97
|
-
*/
|
|
98
|
-
export declare const planningAliases: (base: string) => Readonly<{
|
|
99
|
-
base: string;
|
|
100
|
-
schema: Readonly<{
|
|
101
|
-
list: `${string}:schema:list`;
|
|
102
|
-
}>;
|
|
103
|
-
card: Readonly<{
|
|
104
|
-
list: `${string}:card:list`;
|
|
105
|
-
summary: `${string}:card:summary`;
|
|
106
|
-
get: `${string}:card:get`;
|
|
107
|
-
transitions: `${string}:card:transitions`;
|
|
108
|
-
specifications: `${string}:card:specifications`;
|
|
109
|
-
}>;
|
|
110
|
-
spec: Readonly<{
|
|
111
|
-
get: `${string}:specification:get`;
|
|
112
|
-
revisions: `${string}:specification:revisions`;
|
|
113
|
-
}>;
|
|
114
|
-
link: Readonly<{
|
|
115
|
-
list: `${string}:link:list`;
|
|
116
|
-
}>;
|
|
117
|
-
transition: Readonly<{
|
|
118
|
-
get: `${string}:transition:get`;
|
|
119
|
-
}>;
|
|
120
|
-
execute: `${string}:execute`;
|
|
121
|
-
commit: Readonly<{
|
|
122
|
-
get: `${string}:commit:get`;
|
|
123
|
-
events: `${string}:commit:events`;
|
|
124
|
-
}>;
|
|
125
|
-
}>;
|
|
126
135
|
//# sourceMappingURL=consts.d.ts.map
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,aAAa,kBAAkB;CAChC;AAED;;;;;GAKG;AACH,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED,kGAAkG;AAClG,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAIpE,CAAA;AAEF,yEAAyE;AACzE,oBAAY,eAAe;IACzB,yCAAyC;IACzC,OAAO,YAAY;IACnB,+EAA+E;IAC/E,GAAG,QAAQ;CACZ;AAED,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,0CAA0C;AAC1C,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,kFAAkF;AAClF,eAAO,MAAM,aAAa,cAAc,CAAA;AAExC,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,sFAAsF;AACtF,eAAO,MAAM,aAAa,aAAa,CAAA;AAEvC,sDAAsD;AACtD,eAAO,MAAM,UAAU,MAAM,CAAA;AAE7B,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAC5C,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,gEAAgE;AAChE,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,eAAO,MAAM,SAAS,OAAO,CAAA;AAC7B,eAAO,MAAM,eAAe,QAAQ,CAAA;AACpC,eAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,UAAU,KAAK,CAAA;AAC5B,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,QAAQ,UAAY,CAAA;AACjC,eAAO,MAAM,SAAS,MAAM,CAAA;AAC5B,eAAO,MAAM,OAAO,MAAM,CAAA;AAC1B,eAAO,MAAM,OAAO,OAAO,CAAA;AAC3B,eAAO,MAAM,cAAc,MAAM,CAAA;AACjC,yEAAyE;AACzE,eAAO,MAAM,cAAc,MAAM,CAAA
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"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"}
|
package/build/consts.js
CHANGED
|
@@ -64,6 +64,55 @@ export var CodeScope;
|
|
|
64
64
|
CodeScope["Parent"] = "parent";
|
|
65
65
|
CodeScope["Entity"] = "entity";
|
|
66
66
|
})(CodeScope || (CodeScope = {}));
|
|
67
|
+
/** What a data-defined schema record declares: a card type or a status flow. */
|
|
68
|
+
export var PlanningSchemaKind;
|
|
69
|
+
(function (PlanningSchemaKind) {
|
|
70
|
+
PlanningSchemaKind["Type"] = "type";
|
|
71
|
+
PlanningSchemaKind["Flow"] = "flow";
|
|
72
|
+
PlanningSchemaKind["AssigneeType"] = "assignee-type";
|
|
73
|
+
})(PlanningSchemaKind || (PlanningSchemaKind = {}));
|
|
74
|
+
export var AssigneeKind;
|
|
75
|
+
(function (AssigneeKind) {
|
|
76
|
+
AssigneeKind["Human"] = "human";
|
|
77
|
+
AssigneeKind["NonHuman"] = "non-human";
|
|
78
|
+
})(AssigneeKind || (AssigneeKind = {}));
|
|
79
|
+
export var PlanningResourceKind;
|
|
80
|
+
(function (PlanningResourceKind) {
|
|
81
|
+
PlanningResourceKind["Workcard"] = "workcard";
|
|
82
|
+
PlanningResourceKind["Assignee"] = "assignee";
|
|
83
|
+
PlanningResourceKind["Team"] = "team";
|
|
84
|
+
PlanningResourceKind["Comment"] = "comment";
|
|
85
|
+
PlanningResourceKind["Mention"] = "mention";
|
|
86
|
+
})(PlanningResourceKind || (PlanningResourceKind = {}));
|
|
87
|
+
export var ProjectMode;
|
|
88
|
+
(function (ProjectMode) {
|
|
89
|
+
ProjectMode["Opened"] = "opened";
|
|
90
|
+
ProjectMode["Closed"] = "closed";
|
|
91
|
+
})(ProjectMode || (ProjectMode = {}));
|
|
92
|
+
export const PLANNING_TEAM_MEMBER = 'planning:team-member';
|
|
93
|
+
export const PLANNING_PROJECT_TEAM = 'planning:project-team';
|
|
94
|
+
export const PLANNING_REPORTER = 'planning:reporter';
|
|
95
|
+
export const PLANNING_ASSIGNEE = 'planning:assignee';
|
|
96
|
+
/**
|
|
97
|
+
* The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
|
|
98
|
+
* `entity` an organization-wide record, `project` a record scoped to one project card.
|
|
99
|
+
*/
|
|
100
|
+
export var SchemaOrigin;
|
|
101
|
+
(function (SchemaOrigin) {
|
|
102
|
+
SchemaOrigin["Code"] = "code";
|
|
103
|
+
SchemaOrigin["Entity"] = "entity";
|
|
104
|
+
SchemaOrigin["Project"] = "project";
|
|
105
|
+
})(SchemaOrigin || (SchemaOrigin = {}));
|
|
106
|
+
/** How a `schema.define` request writes its declarations. */
|
|
107
|
+
export var SchemaWriteMode;
|
|
108
|
+
(function (SchemaWriteMode) {
|
|
109
|
+
/** Each declaration lands at its layer's next version. */
|
|
110
|
+
SchemaWriteMode["Define"] = "define";
|
|
111
|
+
/** Compare-and-set: each declaration's `version` must be its layer's next version. */
|
|
112
|
+
SchemaWriteMode["Put"] = "put";
|
|
113
|
+
/** Only keys the layer lacks are written, at version 1. */
|
|
114
|
+
SchemaWriteMode["Seed"] = "seed";
|
|
115
|
+
})(SchemaWriteMode || (SchemaWriteMode = {}));
|
|
67
116
|
/** Service alias of the planning facade host. Identical on the server and in a client. */
|
|
68
117
|
export const PLANNING_SERVICE = 'planning';
|
|
69
118
|
/** The path segment the protocol tree answers under when the mount names none. */
|
|
@@ -101,29 +150,4 @@ export const REF_MAX = 1024;
|
|
|
101
150
|
export const QUERY_TEXT_MAX = 256;
|
|
102
151
|
/** The longest list a wire query carries in one value (ids, parents). */
|
|
103
152
|
export const MAX_QUERY_LIST = 500;
|
|
104
|
-
/**
|
|
105
|
-
* The aliases one planning tree answers under, derived from the mount's base alias.
|
|
106
|
-
*
|
|
107
|
-
* Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
|
|
108
|
-
* which is why nothing here is a global constant.
|
|
109
|
-
*/
|
|
110
|
-
export const planningAliases = (base) => Object.freeze({
|
|
111
|
-
base,
|
|
112
|
-
schema: Object.freeze({ list: `${base}:schema:list` }),
|
|
113
|
-
card: Object.freeze({
|
|
114
|
-
list: `${base}:card:list`,
|
|
115
|
-
summary: `${base}:card:summary`,
|
|
116
|
-
get: `${base}:card:get`,
|
|
117
|
-
transitions: `${base}:card:transitions`,
|
|
118
|
-
specifications: `${base}:card:specifications`,
|
|
119
|
-
}),
|
|
120
|
-
spec: Object.freeze({
|
|
121
|
-
get: `${base}:specification:get`,
|
|
122
|
-
revisions: `${base}:specification:revisions`,
|
|
123
|
-
}),
|
|
124
|
-
link: Object.freeze({ list: `${base}:link:list` }),
|
|
125
|
-
transition: Object.freeze({ get: `${base}:transition:get` }),
|
|
126
|
-
execute: `${base}:execute`,
|
|
127
|
-
commit: Object.freeze({ get: `${base}:commit:get`, events: `${base}:commit:events` }),
|
|
128
|
-
});
|
|
129
153
|
//# sourceMappingURL=consts.js.map
|
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,+CAA+B,CAAA;AACjC,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,6CAA0B,CAAA;IAC1B,oCAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,eAAe,GAA8C,MAAM,CAAC,MAAM,CAAC;IACtF,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/B,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;CAC5B,CAAC,CAAA;AAEF,yEAAyE;AACzE,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,yCAAyC;IACzC,sCAAmB,CAAA;IACnB,+EAA+E;IAC/E,8BAAW,CAAA;AACb,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,iCAAa,CAAA;IACb,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,oCAAa,CAAA;IACb,oCAAa,CAAA;AACf,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAED,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;AACf,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,0CAA0C;AAC1C,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { PlanningReply } from '../helpers/reply/types.js';
|
|
2
|
+
import type { PlanningResourceProtocols } from '../resources/protocol/types.js';
|
|
3
|
+
import type { Assignee, Team, Comment, CommentMention } from '../resources/types.js';
|
|
4
|
+
import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint';
|
|
5
|
+
import type { ListResult } from '@owlmeans/resource';
|
|
6
|
+
import type { RouteParent } from '@owlmeans/route';
|
|
7
|
+
import type { CommitEvent, CommitFeedQuery, CommitQuery, CommitStatus, ExecuteRequest, Relationship, RelationshipQueryWire, RevisionsQuery, SchemaDefineReply, SchemaDefineRequest, SchemaListQuery, ScopedSchemaBundle, Specification, SpecificationQueryWire, SpecificationRevisionList, SummaryQueryWire, SummaryView, Transition, TransitionParams, TransitionQueryWire, TransitionReceiptView, Workcard, WorkcardParams, WorkcardQueryWire } from '../types.js';
|
|
8
|
+
export interface PlanningBaseOptions {
|
|
9
|
+
/** The base alias every leaf alias derives from (`planningAliases`). */
|
|
10
|
+
alias: string;
|
|
11
|
+
/** Defaults to `PLANNING_PATH`. */
|
|
12
|
+
path?: string;
|
|
13
|
+
parent?: RouteParent;
|
|
14
|
+
service?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PlanningProtocolOptions {
|
|
17
|
+
base: PlanningBaseOptions;
|
|
18
|
+
/** The guard(s) the base carries; every HTTP leaf inherits them. */
|
|
19
|
+
guards: string | readonly string[];
|
|
20
|
+
gate?: {
|
|
21
|
+
alias: string;
|
|
22
|
+
params?: string | readonly string[];
|
|
23
|
+
};
|
|
24
|
+
/** Mount the separate assignee, team, comment and mention protocol branches. Off by default. */
|
|
25
|
+
resources?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The socket base the commit feed hangs under. The feed inherits THAT base's guards; the
|
|
28
|
+
* planning base when omitted.
|
|
29
|
+
*/
|
|
30
|
+
socketBase?: RouteParent;
|
|
31
|
+
/**
|
|
32
|
+
* Declare the data-defined schema surface: `schema.list` takes a `project` query and answers
|
|
33
|
+
* that layer's scoped bundle, and `schema.define` writes. Off by default — a tree without it
|
|
34
|
+
* declares exactly the other leaves.
|
|
35
|
+
*/
|
|
36
|
+
definitions?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface PlanningProtocols {
|
|
39
|
+
assignees?: PlanningResourceProtocols<Assignee>;
|
|
40
|
+
teams?: PlanningResourceProtocols<Team>;
|
|
41
|
+
comments?: PlanningResourceProtocols<Comment>;
|
|
42
|
+
mentions?: PlanningResourceProtocols<CommentMention>;
|
|
43
|
+
base: EntrypointProtocol<OpenRequest, OpenValue>;
|
|
44
|
+
schema: {
|
|
45
|
+
/** The plain bundle — or, on a tree declared with `definitions`, a layer's scoped one. */
|
|
46
|
+
list: EntrypointProtocol<{
|
|
47
|
+
query?: SchemaListQuery;
|
|
48
|
+
}, PlanningReply<ScopedSchemaBundle>>;
|
|
49
|
+
/** Present on a tree declared with `definitions` only. */
|
|
50
|
+
define?: EntrypointProtocol<{
|
|
51
|
+
body: SchemaDefineRequest;
|
|
52
|
+
}, PlanningReply<SchemaDefineReply>>;
|
|
53
|
+
};
|
|
54
|
+
card: {
|
|
55
|
+
list: EntrypointProtocol<{
|
|
56
|
+
query: WorkcardQueryWire;
|
|
57
|
+
}, PlanningReply<ListResult<Workcard>>>;
|
|
58
|
+
summary: EntrypointProtocol<{
|
|
59
|
+
query: SummaryQueryWire;
|
|
60
|
+
}, SummaryView>;
|
|
61
|
+
get: EntrypointProtocol<{
|
|
62
|
+
params: WorkcardParams;
|
|
63
|
+
}, PlanningReply<Workcard>>;
|
|
64
|
+
transitions: EntrypointProtocol<{
|
|
65
|
+
params: WorkcardParams;
|
|
66
|
+
query: TransitionQueryWire;
|
|
67
|
+
}, PlanningReply<ListResult<Transition>>>;
|
|
68
|
+
specifications: EntrypointProtocol<{
|
|
69
|
+
params: WorkcardParams;
|
|
70
|
+
query: SpecificationQueryWire;
|
|
71
|
+
}, PlanningReply<ListResult<Specification>>>;
|
|
72
|
+
};
|
|
73
|
+
spec: {
|
|
74
|
+
get: EntrypointProtocol<{
|
|
75
|
+
params: WorkcardParams;
|
|
76
|
+
}, PlanningReply<Specification>>;
|
|
77
|
+
revisions: EntrypointProtocol<{
|
|
78
|
+
params: WorkcardParams;
|
|
79
|
+
query: RevisionsQuery;
|
|
80
|
+
}, SpecificationRevisionList>;
|
|
81
|
+
};
|
|
82
|
+
link: {
|
|
83
|
+
list: EntrypointProtocol<{
|
|
84
|
+
query: RelationshipQueryWire;
|
|
85
|
+
}, PlanningReply<ListResult<Relationship>>>;
|
|
86
|
+
};
|
|
87
|
+
transition: {
|
|
88
|
+
get: EntrypointProtocol<{
|
|
89
|
+
params: TransitionParams;
|
|
90
|
+
}, PlanningReply<Transition>>;
|
|
91
|
+
};
|
|
92
|
+
execute: EntrypointProtocol<{
|
|
93
|
+
body: ExecuteRequest;
|
|
94
|
+
}, PlanningReply<TransitionReceiptView>>;
|
|
95
|
+
commit: {
|
|
96
|
+
get: EntrypointProtocol<{
|
|
97
|
+
params: TransitionParams;
|
|
98
|
+
query: CommitQuery;
|
|
99
|
+
}, PlanningReply<CommitStatus>>;
|
|
100
|
+
events: EntrypointProtocol<{
|
|
101
|
+
query: CommitFeedQuery;
|
|
102
|
+
}, PlanningReply<CommitEvent>>;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":""}
|
package/build/entrypoints.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PlanningProtocolOptions, PlanningProtocols } from './types.js';
|
|
1
|
+
import type { PlanningProtocolOptions, PlanningProtocols } from './entrypoints/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Declare the planning surface — one immutable tree a server binds and a client calls.
|
|
4
4
|
*
|
|
@@ -9,6 +9,10 @@ import type { PlanningProtocolOptions, PlanningProtocols } from './types.js';
|
|
|
9
9
|
*
|
|
10
10
|
* Queries travel as their `*Wire` shapes: encode with `encode*Query` before a call, decode with
|
|
11
11
|
* `decode*Query` in a handler.
|
|
12
|
+
*
|
|
13
|
+
* `definitions: true` adds the data-defined schema surface: `schema.list` takes a `project` query
|
|
14
|
+
* and answers that layer's scoped bundle, and `schema.define` (POST `/schemas`) writes. Without it
|
|
15
|
+
* the tree declares exactly the other leaves.
|
|
12
16
|
*/
|
|
13
17
|
export declare const makePlanningProtocols: (opts: PlanningProtocolOptions) => PlanningProtocols;
|
|
14
18
|
//# sourceMappingURL=entrypoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AASxF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,SAAU,uBAAuB,KAAG,iBAsHrE,CAAA"}
|