@bett3r-dev/blueprint-schema 1.6.0 → 1.7.0
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/CHANGELOG.md +42 -0
- package/build/cjs/apply-design.d.ts +5 -5
- package/build/cjs/apply-design.d.ts.map +1 -1
- package/build/cjs/apply-design.js +10 -1
- package/build/cjs/apply-design.js.map +1 -1
- package/build/cjs/apply-overrides.d.ts +3 -3
- package/build/cjs/apply-overrides.d.ts.map +1 -1
- package/build/cjs/apply-overrides.js +3 -0
- package/build/cjs/apply-overrides.js.map +1 -1
- package/build/cjs/card-channel.d.ts +18 -0
- package/build/cjs/card-channel.d.ts.map +1 -0
- package/build/cjs/card-channel.js +30 -0
- package/build/cjs/card-channel.js.map +1 -0
- package/build/cjs/convergence.d.ts +2 -2
- package/build/cjs/convergence.d.ts.map +1 -1
- package/build/cjs/coverage-links.d.ts +27 -0
- package/build/cjs/coverage-links.d.ts.map +1 -0
- package/build/cjs/coverage-links.js +117 -0
- package/build/cjs/coverage-links.js.map +1 -0
- package/build/cjs/design.d.ts +32 -2
- package/build/cjs/design.d.ts.map +1 -1
- package/build/cjs/design.js +27 -2
- package/build/cjs/design.js.map +1 -1
- package/build/cjs/diagnostics.d.ts +2 -2
- package/build/cjs/diagnostics.d.ts.map +1 -1
- package/build/cjs/edges.d.ts +2 -2
- package/build/cjs/edges.d.ts.map +1 -1
- package/build/cjs/edges.js +2 -1
- package/build/cjs/edges.js.map +1 -1
- package/build/cjs/entry-points.d.ts +2 -2
- package/build/cjs/entry-points.d.ts.map +1 -1
- package/build/cjs/find-orphan-nodes.d.ts +3 -3
- package/build/cjs/find-orphan-nodes.d.ts.map +1 -1
- package/build/cjs/flow-traversal.d.ts +3 -3
- package/build/cjs/flow-traversal.d.ts.map +1 -1
- package/build/cjs/fork-scenarios.d.ts +44 -0
- package/build/cjs/fork-scenarios.d.ts.map +1 -0
- package/build/cjs/fork-scenarios.js +83 -0
- package/build/cjs/fork-scenarios.js.map +1 -0
- package/build/cjs/graph.d.ts +2 -2
- package/build/cjs/graph.d.ts.map +1 -1
- package/build/cjs/graph.js.map +1 -1
- package/build/cjs/handler-scope.d.ts +3 -3
- package/build/cjs/handler-scope.d.ts.map +1 -1
- package/build/cjs/index.d.ts +5 -0
- package/build/cjs/index.d.ts.map +1 -1
- package/build/cjs/index.js +5 -0
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/invariants.d.ts +26 -0
- package/build/cjs/invariants.d.ts.map +1 -0
- package/build/cjs/invariants.js +39 -0
- package/build/cjs/invariants.js.map +1 -0
- package/build/cjs/map-links.d.ts +1 -0
- package/build/cjs/map-links.d.ts.map +1 -1
- package/build/cjs/map-links.js +14 -1
- package/build/cjs/map-links.js.map +1 -1
- package/build/cjs/map-structure.d.ts +171 -2
- package/build/cjs/map-structure.d.ts.map +1 -1
- package/build/cjs/map-structure.js +46 -4
- package/build/cjs/map-structure.js.map +1 -1
- package/build/cjs/map-vocabulary.d.ts +29 -1
- package/build/cjs/map-vocabulary.d.ts.map +1 -1
- package/build/cjs/map-vocabulary.js +72 -2
- package/build/cjs/map-vocabulary.js.map +1 -1
- package/build/cjs/nodes.d.ts +11 -1
- package/build/cjs/nodes.d.ts.map +1 -1
- package/build/cjs/nodes.js +4 -2
- package/build/cjs/nodes.js.map +1 -1
- package/build/cjs/ops.d.ts +43 -10
- package/build/cjs/ops.d.ts.map +1 -1
- package/build/cjs/ops.js +1 -1
- package/build/cjs/ops.js.map +1 -1
- package/build/cjs/overrides.d.ts +5 -2
- package/build/cjs/overrides.d.ts.map +1 -1
- package/build/cjs/overrides.js.map +1 -1
- package/build/cjs/package.json +1 -0
- package/build/cjs/reachability.d.ts +4 -4
- package/build/cjs/reachability.d.ts.map +1 -1
- package/build/cjs/reachability.js +4 -0
- package/build/cjs/reachability.js.map +1 -1
- package/build/cjs/reality-check.d.ts +4 -4
- package/build/cjs/reality-check.d.ts.map +1 -1
- package/build/cjs/reality-check.js +9 -0
- package/build/cjs/reality-check.js.map +1 -1
- package/build/cjs/session.d.ts +21 -0
- package/build/cjs/session.d.ts.map +1 -1
- package/build/cjs/session.js +19 -0
- package/build/cjs/session.js.map +1 -1
- package/build/cjs/spec.d.ts +137 -0
- package/build/cjs/spec.d.ts.map +1 -0
- package/build/cjs/spec.js +462 -0
- package/build/cjs/spec.js.map +1 -0
- package/build/cjs/topology.d.ts +2 -2
- package/build/cjs/topology.d.ts.map +1 -1
- package/build/cjs/topology.js +2 -0
- package/build/cjs/topology.js.map +1 -1
- package/build/cjs/validate-design.d.ts +3 -3
- package/build/cjs/validate-design.d.ts.map +1 -1
- package/build/cjs/validate-design.js +34 -0
- package/build/cjs/validate-design.js.map +1 -1
- package/build/esm/apply-design.d.ts +5 -5
- package/build/esm/apply-design.d.ts.map +1 -1
- package/build/esm/apply-design.js +10 -1
- package/build/esm/apply-design.js.map +1 -1
- package/build/esm/apply-overrides.d.ts +3 -3
- package/build/esm/apply-overrides.d.ts.map +1 -1
- package/build/esm/apply-overrides.js +3 -0
- package/build/esm/apply-overrides.js.map +1 -1
- package/build/esm/card-channel.d.ts +18 -0
- package/build/esm/card-channel.d.ts.map +1 -0
- package/build/esm/card-channel.js +25 -0
- package/build/esm/card-channel.js.map +1 -0
- package/build/esm/convergence.d.ts +2 -2
- package/build/esm/convergence.d.ts.map +1 -1
- package/build/esm/coverage-links.d.ts +27 -0
- package/build/esm/coverage-links.d.ts.map +1 -0
- package/build/esm/coverage-links.js +113 -0
- package/build/esm/coverage-links.js.map +1 -0
- package/build/esm/design.d.ts +32 -2
- package/build/esm/design.d.ts.map +1 -1
- package/build/esm/design.js +25 -1
- package/build/esm/design.js.map +1 -1
- package/build/esm/diagnostics.d.ts +2 -2
- package/build/esm/diagnostics.d.ts.map +1 -1
- package/build/esm/edges.d.ts +2 -2
- package/build/esm/edges.d.ts.map +1 -1
- package/build/esm/edges.js +2 -1
- package/build/esm/edges.js.map +1 -1
- package/build/esm/entry-points.d.ts +2 -2
- package/build/esm/entry-points.d.ts.map +1 -1
- package/build/esm/find-orphan-nodes.d.ts +3 -3
- package/build/esm/find-orphan-nodes.d.ts.map +1 -1
- package/build/esm/flow-traversal.d.ts +3 -3
- package/build/esm/flow-traversal.d.ts.map +1 -1
- package/build/esm/fork-scenarios.d.ts +44 -0
- package/build/esm/fork-scenarios.d.ts.map +1 -0
- package/build/esm/fork-scenarios.js +78 -0
- package/build/esm/fork-scenarios.js.map +1 -0
- package/build/esm/graph.d.ts +2 -2
- package/build/esm/graph.d.ts.map +1 -1
- package/build/esm/graph.js.map +1 -1
- package/build/esm/handler-scope.d.ts +3 -3
- package/build/esm/handler-scope.d.ts.map +1 -1
- package/build/esm/index.d.ts +5 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +5 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/invariants.d.ts +26 -0
- package/build/esm/invariants.d.ts.map +1 -0
- package/build/esm/invariants.js +36 -0
- package/build/esm/invariants.js.map +1 -0
- package/build/esm/map-links.d.ts +1 -0
- package/build/esm/map-links.d.ts.map +1 -1
- package/build/esm/map-links.js +14 -1
- package/build/esm/map-links.js.map +1 -1
- package/build/esm/map-structure.d.ts +171 -2
- package/build/esm/map-structure.d.ts.map +1 -1
- package/build/esm/map-structure.js +42 -3
- package/build/esm/map-structure.js.map +1 -1
- package/build/esm/map-vocabulary.d.ts +29 -1
- package/build/esm/map-vocabulary.d.ts.map +1 -1
- package/build/esm/map-vocabulary.js +64 -1
- package/build/esm/map-vocabulary.js.map +1 -1
- package/build/esm/nodes.d.ts +11 -1
- package/build/esm/nodes.d.ts.map +1 -1
- package/build/esm/nodes.js +4 -2
- package/build/esm/nodes.js.map +1 -1
- package/build/esm/ops.d.ts +43 -10
- package/build/esm/ops.d.ts.map +1 -1
- package/build/esm/ops.js +1 -1
- package/build/esm/ops.js.map +1 -1
- package/build/esm/overrides.d.ts +5 -2
- package/build/esm/overrides.d.ts.map +1 -1
- package/build/esm/overrides.js.map +1 -1
- package/build/esm/reachability.d.ts +4 -4
- package/build/esm/reachability.d.ts.map +1 -1
- package/build/esm/reachability.js +4 -0
- package/build/esm/reachability.js.map +1 -1
- package/build/esm/reality-check.d.ts +4 -4
- package/build/esm/reality-check.d.ts.map +1 -1
- package/build/esm/reality-check.js +9 -0
- package/build/esm/reality-check.js.map +1 -1
- package/build/esm/session.d.ts +21 -0
- package/build/esm/session.d.ts.map +1 -1
- package/build/esm/session.js +17 -0
- package/build/esm/session.js.map +1 -1
- package/build/esm/spec.d.ts +137 -0
- package/build/esm/spec.d.ts.map +1 -0
- package/build/esm/spec.js +449 -0
- package/build/esm/spec.js.map +1 -0
- package/build/esm/topology.d.ts +2 -2
- package/build/esm/topology.d.ts.map +1 -1
- package/build/esm/topology.js +2 -0
- package/build/esm/topology.js.map +1 -1
- package/build/esm/validate-design.d.ts +3 -3
- package/build/esm/validate-design.d.ts.map +1 -1
- package/build/esm/validate-design.js +35 -1
- package/build/esm/validate-design.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -4
- package/schema/map.schema.json +62 -1
package/build/esm/design.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { EdgeKind, EdgeKindSource } from './edges.js';
|
|
2
|
-
import { DesignAuthor, NodeType, ReadModelQuery } from './nodes.js';
|
|
1
|
+
import type { EdgeKind, EdgeKindSource } from './edges.js';
|
|
2
|
+
import type { DesignAuthor, NodeType, ReadModelQuery } from './nodes.js';
|
|
3
3
|
export type DesignSchemaVersion = 1;
|
|
4
4
|
export declare const BLUEPRINT_DESIGN_FILENAME = "design.json";
|
|
5
5
|
export type DesignAttribution = {
|
|
6
6
|
author: DesignAuthor;
|
|
7
7
|
ts: string;
|
|
8
8
|
note?: string;
|
|
9
|
+
/** ESAS-205: the member an agent wrote this for, when it wrote with a job key that member's press queued. */
|
|
10
|
+
onBehalfOf?: string;
|
|
9
11
|
};
|
|
10
12
|
export type ProposedNode = DesignAttribution & {
|
|
11
13
|
type: NodeType;
|
|
@@ -13,6 +15,9 @@ export type ProposedNode = DesignAttribution & {
|
|
|
13
15
|
subdomain: string;
|
|
14
16
|
resourceKey?: string;
|
|
15
17
|
queries?: ReadModelQuery[];
|
|
18
|
+
rule?: string;
|
|
19
|
+
errorCodes?: string[];
|
|
20
|
+
generic?: boolean;
|
|
16
21
|
};
|
|
17
22
|
export type ProposedEdge = DesignAttribution & {
|
|
18
23
|
from: string;
|
|
@@ -26,6 +31,9 @@ export type ModifiableNodeFields = {
|
|
|
26
31
|
subdomain: string;
|
|
27
32
|
resourceKey: string;
|
|
28
33
|
queries: ReadModelQuery[];
|
|
34
|
+
rule: string;
|
|
35
|
+
errorCodes: string[];
|
|
36
|
+
generic: boolean;
|
|
29
37
|
};
|
|
30
38
|
export declare const MODIFIABLE_NODE_FIELDS: readonly (keyof ModifiableNodeFields)[];
|
|
31
39
|
export type ModifyEntry = DesignAttribution & {
|
|
@@ -50,13 +58,35 @@ export type CommentIdRef = {
|
|
|
50
58
|
commentId: string;
|
|
51
59
|
};
|
|
52
60
|
export type CommentAnchor = string | EdgeRef | CommentIdRef | null;
|
|
61
|
+
/**
|
|
62
|
+
* The impact map's own general channel. `null` stays the eventstorming board's (and every pre-split
|
|
63
|
+
* board-wide comment's) general channel; a board-wide remark made on the map is anchored here instead,
|
|
64
|
+
* so a reader knows which board it was made on. `#` appears in no artifact name and no map entry id.
|
|
65
|
+
*/
|
|
66
|
+
export declare const MAP_GENERAL_ANCHOR = "#map";
|
|
53
67
|
export type DesignComment = DesignAttribution & {
|
|
54
68
|
id: string;
|
|
55
69
|
anchor: CommentAnchor;
|
|
56
70
|
resolved: boolean;
|
|
57
71
|
text: string;
|
|
58
72
|
mentions?: string[];
|
|
73
|
+
/** ESAS-266: a board reaction to its thread, not a remark; it asks the agent nothing. */
|
|
74
|
+
reaction?: CommentReaction;
|
|
59
75
|
};
|
|
76
|
+
export type CommentReaction = 'thumbs-up';
|
|
77
|
+
export declare const COMMENT_REACTIONS: readonly CommentReaction[];
|
|
78
|
+
/** The mention that names the design agent, with or without its leading "@", in any case. */
|
|
79
|
+
export declare const BLUEPRINT_AGENT_HANDLE = "blueprint";
|
|
80
|
+
/**
|
|
81
|
+
* ESAS-266 (ADR-109), ESAS-242 F4: whether a comment asks the design agent to reply. A reaction never does;
|
|
82
|
+
* otherwise a comment naming nobody does, and one naming people does only when the agent is among them.
|
|
83
|
+
* The server's reply trigger and the board's summon both read it. The hosted engine does not validate a comment
|
|
84
|
+
* before it lands, so a malformed mention list reads as naming nobody and a non-string mention as no one, not a throw.
|
|
85
|
+
*/
|
|
86
|
+
export declare const commentSummonsAgent: (entry: {
|
|
87
|
+
readonly mentions?: unknown;
|
|
88
|
+
readonly reaction?: unknown;
|
|
89
|
+
}) => boolean;
|
|
60
90
|
export type MemberRef = {
|
|
61
91
|
id: string;
|
|
62
92
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"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"}
|
package/build/esm/design.js
CHANGED
|
@@ -3,8 +3,32 @@ export const MODIFIABLE_NODE_FIELDS = [
|
|
|
3
3
|
'label',
|
|
4
4
|
'subdomain',
|
|
5
5
|
'resourceKey',
|
|
6
|
-
'queries'
|
|
6
|
+
'queries',
|
|
7
|
+
'rule',
|
|
8
|
+
'errorCodes',
|
|
9
|
+
'generic'
|
|
7
10
|
];
|
|
11
|
+
/**
|
|
12
|
+
* The impact map's own general channel. `null` stays the eventstorming board's (and every pre-split
|
|
13
|
+
* board-wide comment's) general channel; a board-wide remark made on the map is anchored here instead,
|
|
14
|
+
* so a reader knows which board it was made on. `#` appears in no artifact name and no map entry id.
|
|
15
|
+
*/
|
|
16
|
+
export const MAP_GENERAL_ANCHOR = '#map';
|
|
17
|
+
export const COMMENT_REACTIONS = ['thumbs-up'];
|
|
18
|
+
/** The mention that names the design agent, with or without its leading "@", in any case. */
|
|
19
|
+
export const BLUEPRINT_AGENT_HANDLE = 'blueprint';
|
|
20
|
+
/**
|
|
21
|
+
* ESAS-266 (ADR-109), ESAS-242 F4: whether a comment asks the design agent to reply. A reaction never does;
|
|
22
|
+
* otherwise a comment naming nobody does, and one naming people does only when the agent is among them.
|
|
23
|
+
* The server's reply trigger and the board's summon both read it. The hosted engine does not validate a comment
|
|
24
|
+
* before it lands, so a malformed mention list reads as naming nobody and a non-string mention as no one, not a throw.
|
|
25
|
+
*/
|
|
26
|
+
export const commentSummonsAgent = (entry) => {
|
|
27
|
+
const mentions = Array.isArray(entry.mentions) ? entry.mentions : [];
|
|
28
|
+
return entry.reaction === undefined
|
|
29
|
+
&& (mentions.length === 0
|
|
30
|
+
|| mentions.some(mention => typeof mention === 'string' && mention.replace(/^@/, '').toLowerCase() === BLUEPRINT_AGENT_HANDLE));
|
|
31
|
+
};
|
|
8
32
|
const MENTION_TOKEN = /@([A-Za-z0-9._-]+)/g;
|
|
9
33
|
export const resolveMentions = (text, directory) => {
|
|
10
34
|
const ids = [];
|
package/build/esm/design.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;AAuCvD,MAAM,CAAC,MAAM,sBAAsB,GAA8C;IAC/E,OAAO;IACP,WAAW;IACX,aAAa;IACb,SAAS;IACT,MAAM;IACN,YAAY;IACZ,SAAS;CACD,CAAC;AAwBX;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAczC,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAE,WAAW,CAAE,CAAC;AAE7E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAE,KAAmE,EAAY,EAAE;IACpH,MAAM,QAAQ,GAAuB,KAAK,CAAC,OAAO,CAAE,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;WAC9B,CAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;eACrB,QAAQ,CAAC,IAAI,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAE,IAAI,EAAE,EAAE,CAAE,CAAC,WAAW,EAAE,KAAK,sBAAsB,CAAE,CAAC,CAAC;AAC1I,CAAC,CAAC;AAOF,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,SAA+B,EACrB,EAAE;IACZ,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAM,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAE,aAAa,CAAE,EAAG,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAE,CAAC,CAAE,EAAE,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAE,CAAE,KAAK,EAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAE,CAAC;QACjF,IAAK,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,MAAM,CAAC,EAAE,CAAE;YAAG,GAAG,CAAC,IAAI,CAAE,MAAM,CAAC,EAAE,CAAE,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAOF,MAAM,UAAU,eAAe,CAAE,MAAe;IAC9C,IAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,MAA0B,CAAC;IACvC,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,MAAe;IAChD,IAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,MAA+B,CAAC;IAC5C,OAAO,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,MAAqB;IACrD,IAAK,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAG,OAAO,QAAQ,CAAC;IAC/D,IAAK,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,QAAS,MAAO,EAAE,CAAC;IAC5D,IAAK,iBAAiB,CAAE,MAAM,CAAE;QAAE,OAAO,WAAY,MAAM,CAAC,SAAU,EAAE,CAAC;IACzE,OAAO,QAAS,MAAM,CAAC,IAAK,IAAK,MAAM,CAAC,EAAG,IAAK,MAAM,CAAC,IAAK,EAAE,CAAC;AACjE,CAAC;AAgBD,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EdgeKind } from './edges.js';
|
|
2
|
-
import { NodeType } from './nodes.js';
|
|
1
|
+
import type { EdgeKind } from './edges.js';
|
|
2
|
+
import type { NodeType } from './nodes.js';
|
|
3
3
|
export type UnresolvedEdgeDirection = 'source' | 'target';
|
|
4
4
|
export type UnresolvedEdge = {
|
|
5
5
|
anchorId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,uBAAuB,CAAC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EACJ,UAAU,GACV,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,0BAA0B,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,2BAA2B,EAAE,0BAA0B,EAAE,CAAC;IAC1D,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,WAAW,CAW9C"}
|
package/build/esm/edges.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DesignStatus, Origin } from './nodes.js';
|
|
2
|
-
export type EdgeKind = 'handled-by' | 'produces' | 'emits' | 'triggers' | 'issues' | 'projected-to' | 'reads-from' | 'transactionally-writes-to' | 'writes-to' | 'calls' | 'uses-cache' | 'causes' | 'invokes' | 'subscribes-to';
|
|
1
|
+
import type { DesignStatus, Origin } from './nodes.js';
|
|
2
|
+
export type EdgeKind = 'handled-by' | 'produces' | 'emits' | 'triggers' | 'issues' | 'projected-to' | 'reads-from' | 'transactionally-writes-to' | 'writes-to' | 'calls' | 'uses-cache' | 'causes' | 'invokes' | 'subscribes-to' | 'guarded-by';
|
|
3
3
|
export declare const EDGE_KINDS: readonly EdgeKind[];
|
|
4
4
|
export type EdgeKindSource = 'chosen' | 'guessed';
|
|
5
5
|
export declare const EDGE_KIND_SOURCES: readonly EdgeKindSource[];
|
package/build/esm/edges.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/edges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,UAAU,GACV,OAAO,GACP,UAAU,GACV,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,2BAA2B,GAC3B,WAAW,GACX,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,eAAe,GACf,YAAY,CAAC;AAEjB,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAgBhC,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAAqC,CAAC;AAE7F,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC"}
|
package/build/esm/edges.js
CHANGED
package/build/esm/edges.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edges.js","sourceRoot":"","sources":["../../src/edges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edges.js","sourceRoot":"","sources":["../../src/edges.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,YAAY;IACZ,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,2BAA2B;IAC3B,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,eAAe;IACf,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAE,QAAQ,EAAE,SAAS,CAAW,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BlueprintGraph } from './graph.js';
|
|
2
|
-
import { BlueprintNode } from './nodes.js';
|
|
1
|
+
import type { BlueprintGraph } from './graph.js';
|
|
2
|
+
import type { BlueprintNode } from './nodes.js';
|
|
3
3
|
export type EntryPointIndex = {
|
|
4
4
|
entryPoints: ReadonlySet<string>;
|
|
5
5
|
crossSubdomainEntryPoints: ReadonlySet<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-points.d.ts","sourceRoot":"","sources":["../../src/entry-points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"entry-points.d.ts","sourceRoot":"","sources":["../../src/entry-points.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,cAAc,EACrB,YAAW,WAAW,CAAC,MAAM,EAAE,aAAa,CAE3C,KACA,eA0CF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,OAAO,eAAe,EACtB,UAAS,gBAAqB,KAC7B,OAE2E,CAAC;AAE/E,eAAO,MAAM,cAAc,GACzB,IAAI,MAAM,EACV,OAAO,eAAe,EACtB,UAAS,gBAAqB,KAC7B,OAOA,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BlueprintEdge } from './edges.js';
|
|
2
|
-
import { BlueprintNode } from './nodes.js';
|
|
3
|
-
import { OrphanNode } from './diagnostics.js';
|
|
1
|
+
import type { BlueprintEdge } from './edges.js';
|
|
2
|
+
import type { BlueprintNode } from './nodes.js';
|
|
3
|
+
import type { OrphanNode } from './diagnostics.js';
|
|
4
4
|
export declare function findOrphanNodes(nodes: BlueprintNode[], edges: BlueprintEdge[]): OrphanNode[];
|
|
5
5
|
//# sourceMappingURL=find-orphan-nodes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-orphan-nodes.d.ts","sourceRoot":"","sources":["../../src/find-orphan-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"find-orphan-nodes.d.ts","sourceRoot":"","sources":["../../src/find-orphan-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAgB,eAAe,CAAE,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAI,UAAU,EAAE,CAU9F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EdgeKind, BlueprintEdge } from './edges.js';
|
|
2
|
-
import { BlueprintGraph } from './graph.js';
|
|
3
|
-
import { BlueprintNode } from './nodes.js';
|
|
1
|
+
import type { EdgeKind, BlueprintEdge } from './edges.js';
|
|
2
|
+
import type { BlueprintGraph } from './graph.js';
|
|
3
|
+
import type { BlueprintNode } from './nodes.js';
|
|
4
4
|
export declare const TRAVERSABLE_KINDS: ReadonlySet<EdgeKind>;
|
|
5
5
|
export type CrossSubdomainMode = 'full' | 'leaf' | 'exclude';
|
|
6
6
|
export type ScopedDataEdge = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-traversal.d.ts","sourceRoot":"","sources":["../../src/flow-traversal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-traversal.d.ts","sourceRoot":"","sources":["../../src/flow-traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,QAAQ,CAWjD,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC9C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACjD,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,wBAAgB,cAAc,CAAE,KAAK,EAAE,cAAc,GAAI,SAAS,CAiCjE;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,iBAAiB,GACtB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAkD7B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC,EACrD,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAIT"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { DecidedSource } from './map-vocabulary.js';
|
|
2
|
+
import type { GherkinStep, MapEntryId, MapFile, MapOptionId, MapScenario } from './map-structure.js';
|
|
3
|
+
/** Why a stored fork-derived scenario stops feeding tests until a human strikes or supersedes it. */
|
|
4
|
+
export type ScenarioReviewReason = 'option-changed' | 'reopened' | 'moot' | 'fork-gone' | 'walk-changed' | 'walk-gone';
|
|
5
|
+
/** `ready` when the walk carries given, when and then; `needs-gherkin` when it is prose. */
|
|
6
|
+
export type ForkScenarioState = 'ready' | 'needs-gherkin';
|
|
7
|
+
/** A virtual scenario a decided fork proposes; its key is read-only and never an entry id. */
|
|
8
|
+
export type ForkScenarioProposal = {
|
|
9
|
+
key: string;
|
|
10
|
+
forkId: MapEntryId;
|
|
11
|
+
optionId: MapOptionId;
|
|
12
|
+
walk: string;
|
|
13
|
+
source: DecidedSource;
|
|
14
|
+
state: ForkScenarioState;
|
|
15
|
+
title: string;
|
|
16
|
+
text: string;
|
|
17
|
+
anchors: MapEntryId[];
|
|
18
|
+
given: GherkinStep[];
|
|
19
|
+
when: GherkinStep[];
|
|
20
|
+
then: GherkinStep[];
|
|
21
|
+
};
|
|
22
|
+
/** A stored scenario with derivedFrom, and why it is under review; null when its fork still stands. */
|
|
23
|
+
export type DerivedScenarioJudgement = {
|
|
24
|
+
scenarioId: MapEntryId;
|
|
25
|
+
reviewReason: ScenarioReviewReason | null;
|
|
26
|
+
};
|
|
27
|
+
export type ForkScenarioReport = {
|
|
28
|
+
proposals: ForkScenarioProposal[];
|
|
29
|
+
derived: DerivedScenarioJudgement[];
|
|
30
|
+
};
|
|
31
|
+
/** What the join reads: the forks, and of each stored scenario only its id and derivation. */
|
|
32
|
+
export type ForkScenarioMap = Pick<MapFile, 'forks'> & {
|
|
33
|
+
scenarios: ReadonlyArray<Pick<MapScenario, 'id' | 'derivedFrom'>>;
|
|
34
|
+
};
|
|
35
|
+
/** Every virtual proposal's key starts with it; no entry id can, since a map id never holds a colon. */
|
|
36
|
+
export declare const FORK_SCENARIO_KEY_PREFIX = "derived:";
|
|
37
|
+
export declare const forkScenarioKey: (forkId: MapEntryId, optionId: MapOptionId, walk: string) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Every decided, testable fork proposes one scenario per behavioural walk of its chosen option, in
|
|
40
|
+
* map order, unless a stored scenario already names that (fork, option, walk) in any status; and
|
|
41
|
+
* every stored scenario with derivedFrom is judged against its fork, in map order.
|
|
42
|
+
*/
|
|
43
|
+
export declare function joinForkScenarios(map: ForkScenarioMap): ForkScenarioReport;
|
|
44
|
+
//# sourceMappingURL=fork-scenarios.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fork-scenarios.d.ts","sourceRoot":"","sources":["../../src/fork-scenarios.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,OAAO,EAEP,WAAW,EAEX,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAO5B,qGAAqG;AACrG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,CAAC;AAEvH,4FAA4F;AAC5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,eAAe,CAAC;AAE1D,8FAA8F;AAC9F,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB,CAAC;AAEF,uGAAuG;AACvG,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,OAAO,EAAE,wBAAwB,EAAE,CAAC;CACrC,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG;IAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAA;CAAE,CAAC;AAE7H,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAEnD,eAAO,MAAM,eAAe,GAAK,QAAQ,UAAU,EAAE,UAAU,WAAW,EAAE,MAAM,MAAM,KAAI,MACxB,CAAC;AAgCrE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,eAAe,GAAI,kBAAkB,CAuC5E"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Every virtual proposal's key starts with it; no entry id can, since a map id never holds a colon. */
|
|
2
|
+
export const FORK_SCENARIO_KEY_PREFIX = 'derived:';
|
|
3
|
+
export const forkScenarioKey = (forkId, optionId, walk) => `${FORK_SCENARIO_KEY_PREFIX}${forkId}/${optionId}/${walk}`;
|
|
4
|
+
const isStructural = (walk) => walk.kind === 'structural';
|
|
5
|
+
const hasGherkin = (walk) => walk.given !== undefined && walk.when !== undefined && walk.then !== undefined;
|
|
6
|
+
const stepsOf = (text) => text === undefined ? [] : [{ text }];
|
|
7
|
+
// The walk's fields a basis records; `kind` absent reads as behavioral, so spelling it out changes nothing.
|
|
8
|
+
const sameWalk = (walk, basis) => walk.text === basis.text
|
|
9
|
+
&& isStructural(walk) === isStructural(basis)
|
|
10
|
+
&& walk.given === basis.given
|
|
11
|
+
&& walk.when === basis.when
|
|
12
|
+
&& walk.then === basis.then;
|
|
13
|
+
function reviewReasonOf(derivedFrom, forks) {
|
|
14
|
+
const fork = forks.get(derivedFrom.forkId);
|
|
15
|
+
if (fork === undefined)
|
|
16
|
+
return 'fork-gone';
|
|
17
|
+
if (fork.status.kind === 'open')
|
|
18
|
+
return 'reopened';
|
|
19
|
+
if (fork.status.kind === 'moot')
|
|
20
|
+
return 'moot';
|
|
21
|
+
if (fork.status.option !== derivedFrom.optionId)
|
|
22
|
+
return 'option-changed';
|
|
23
|
+
// A derivation from before ESAS-296 names no walk; it is judged on its fork and option alone.
|
|
24
|
+
if (derivedFrom.walk === undefined)
|
|
25
|
+
return null;
|
|
26
|
+
const option = fork.card?.options.find(candidate => candidate.id === derivedFrom.optionId);
|
|
27
|
+
const walk = option?.walks.find(candidate => candidate.scenario === derivedFrom.walk);
|
|
28
|
+
if (walk === undefined)
|
|
29
|
+
return 'walk-gone';
|
|
30
|
+
if (derivedFrom.basis !== undefined && !sameWalk(walk, derivedFrom.basis))
|
|
31
|
+
return 'walk-changed';
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Every decided, testable fork proposes one scenario per behavioural walk of its chosen option, in
|
|
36
|
+
* map order, unless a stored scenario already names that (fork, option, walk) in any status; and
|
|
37
|
+
* every stored scenario with derivedFrom is judged against its fork, in map order.
|
|
38
|
+
*/
|
|
39
|
+
export function joinForkScenarios(map) {
|
|
40
|
+
const stored = new Set(map.scenarios.flatMap(({ derivedFrom }) => derivedFrom?.walk === undefined
|
|
41
|
+
? []
|
|
42
|
+
: [forkScenarioKey(derivedFrom.forkId, derivedFrom.optionId, derivedFrom.walk)]));
|
|
43
|
+
const proposals = [];
|
|
44
|
+
for (const fork of map.forks) {
|
|
45
|
+
const status = fork.status;
|
|
46
|
+
if (status.kind !== 'decided' || fork.testable === false)
|
|
47
|
+
continue;
|
|
48
|
+
const chosenWalks = (fork.card?.options ?? [])
|
|
49
|
+
.filter(option => option.id === status.option)
|
|
50
|
+
.flatMap(option => option.walks);
|
|
51
|
+
for (const walk of chosenWalks) {
|
|
52
|
+
const key = forkScenarioKey(fork.id, status.option, walk.scenario);
|
|
53
|
+
if (isStructural(walk) || stored.has(key))
|
|
54
|
+
continue;
|
|
55
|
+
const ready = hasGherkin(walk);
|
|
56
|
+
proposals.push({
|
|
57
|
+
key,
|
|
58
|
+
forkId: fork.id,
|
|
59
|
+
optionId: status.option,
|
|
60
|
+
walk: walk.scenario,
|
|
61
|
+
source: status.source,
|
|
62
|
+
state: ready ? 'ready' : 'needs-gherkin',
|
|
63
|
+
title: walk.scenario,
|
|
64
|
+
text: walk.text,
|
|
65
|
+
anchors: [fork.anchor ?? fork.id],
|
|
66
|
+
given: ready ? stepsOf(walk.given) : [],
|
|
67
|
+
when: ready ? stepsOf(walk.when) : [],
|
|
68
|
+
then: ready ? stepsOf(walk.then) : []
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const forks = new Map(map.forks.map(fork => [fork.id, fork]));
|
|
73
|
+
const derived = map.scenarios.flatMap(({ id, derivedFrom }) => derivedFrom === undefined
|
|
74
|
+
? []
|
|
75
|
+
: [{ scenarioId: id, reviewReason: reviewReasonOf(derivedFrom, forks) }]);
|
|
76
|
+
return { proposals, derived };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=fork-scenarios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fork-scenarios.js","sourceRoot":"","sources":["../../src/fork-scenarios.ts"],"names":[],"mappings":"AAsDA,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAE,MAAkB,EAAE,QAAqB,EAAE,IAAY,EAAW,EAAE,CACnG,GAAI,wBAAyB,GAAI,MAAO,IAAK,QAAS,IAAK,IAAK,EAAE,CAAC;AAErE,MAAM,YAAY,GAAG,CAAE,IAAiC,EAAY,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AAElG,MAAM,UAAU,GAAG,CAAE,IAAmB,EAAY,EAAE,CACpD,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AAEjF,MAAM,OAAO,GAAG,CAAE,IAAwB,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAE,CAAC;AAEtG,4GAA4G;AAC5G,MAAM,QAAQ,GAAG,CAAE,IAAmB,EAAE,KAA8B,EAAY,EAAE,CAClF,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;OACrB,YAAY,CAAE,IAAI,CAAE,KAAK,YAAY,CAAE,KAAK,CAAE;OAC9C,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;OAC1B,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;OACxB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;AAE9B,SAAS,cAAc,CAAE,WAA+B,EAAE,KAAuC;IAC/F,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAE,WAAW,CAAC,MAAM,CAAE,CAAC;IAC7C,IAAK,IAAI,KAAK,SAAS;QAAG,OAAO,WAAW,CAAC;IAC7C,IAAK,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;QAAG,OAAO,UAAU,CAAC;IACrD,IAAK,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;QAAG,OAAO,MAAM,CAAC;IACjD,IAAK,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,QAAQ;QAAG,OAAO,gBAAgB,CAAC;IAC3E,8FAA8F;IAC9F,IAAK,WAAW,CAAC,IAAI,KAAK,SAAS;QAAG,OAAO,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,WAAW,CAAC,QAAQ,CAAE,CAAC;IAC7F,MAAM,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAE,CAAC;IACxF,IAAK,IAAI,KAAK,SAAS;QAAG,OAAO,WAAW,CAAC;IAC7C,IAAK,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAE;QAAE,OAAO,cAAc,CAAC;IACpG,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAE,GAAoB;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,SAAS;QAChG,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAE,eAAe,CAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAE,CAAE,CAAC,CAAC,CAAC;IAExF,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAM,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAK,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAG,SAAS;QACrE,MAAM,WAAW,GAAG,CAAE,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAE;aAC/C,OAAO,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;QACrC,KAAM,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,eAAe,CAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAE,CAAC;YACrE,IAAK,YAAY,CAAE,IAAI,CAAE,IAAI,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE;gBAAE,SAAS;YACzD,MAAM,KAAK,GAAG,UAAU,CAAE,IAAI,CAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG;gBACH,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBACxC,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,CAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAE;gBACnC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAE,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE;gBACzC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAE,CAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,SAAS;QACtF,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,cAAc,CAAE,WAAW,EAAE,KAAK,CAAE,EAAE,CAAE,CAAC,CAAC;IAEhF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
|
package/build/esm/graph.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BlueprintEdge } from './edges.js';
|
|
2
|
-
import { BlueprintNode, NodeType } from './nodes.js';
|
|
1
|
+
import type { BlueprintEdge } from './edges.js';
|
|
2
|
+
import { type BlueprintNode, type NodeType } from './nodes.js';
|
|
3
3
|
export type SchemaVersion = 1;
|
|
4
4
|
export type BlueprintGraph = {
|
|
5
5
|
schemaVersion: SchemaVersion;
|
package/build/esm/graph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAoC,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC;AAE9B,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAgB,UAAU,IAAI,cAAc,CAE3C;AAED,wBAAgB,OAAO,CAAE,KAAK,EAAE,MAAM,GAAI,MAAM,CAO/C;AAED,wBAAgB,MAAM,CAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAI,MAAM,CAEjF;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,WAAW,CAAE,EAAE,EAAE,MAAM,GAAI,YAAY,GAAG,SAAS,CAOlE"}
|
package/build/esm/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AAWjG,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAE,oBAAoB,EAAE,OAAO,CAAE;SACxC,OAAO,CAAE,uBAAuB,EAAE,OAAO,CAAE;SAC3C,OAAO,CAAE,gBAAgB,EAAE,GAAG,CAAE;SAChC,OAAO,CAAE,UAAU,EAAE,EAAE,CAAE;SACzB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,MAAM,CAAE,SAAiB,EAAE,IAAc,EAAE,KAAa;IACtE,OAAO,GAAI,OAAO,CAAE,SAAS,CAAG,IAAK,WAAW,CAAE,IAAI,CAAG,IAAK,OAAO,CAAE,KAAK,CAAG,EAAE,CAAC;AACpF,CAAC;AAQD,MAAM,UAAU,WAAW,CAAE,EAAU;IACrC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;IACjC,IAAK,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,SAAS,CAAC;IAC9C,MAAM,CAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAE,GAAG,QAAQ,CAAC;IAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAE,MAAM,CAAE,CAAC;IAC3C,IAAK,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,SAAS,CAAC;IAC1F,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HandlerScopeIssue } from './diagnostics.js';
|
|
2
|
-
import { EdgeKind } from './edges.js';
|
|
3
|
-
import { BlueprintNode, NodeType } from './nodes.js';
|
|
1
|
+
import type { HandlerScopeIssue } from './diagnostics.js';
|
|
2
|
+
import type { EdgeKind } from './edges.js';
|
|
3
|
+
import type { BlueprintNode, NodeType } from './nodes.js';
|
|
4
4
|
export type HandlerAttachment = {
|
|
5
5
|
discriminator: NodeType;
|
|
6
6
|
via: EdgeKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-scope.d.ts","sourceRoot":"","sources":["../../src/handler-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler-scope.d.ts","sourceRoot":"","sources":["../../src/handler-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,QAAQ,CAAC;IACxB,GAAG,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAKtF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC9C,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC;AAKF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC9B,KAAK,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GAC5D,iBAAiB,CAenB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACvC,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CA4BpB"}
|
package/build/esm/index.d.ts
CHANGED
|
@@ -24,4 +24,9 @@ export * from './retention.js';
|
|
|
24
24
|
export * from './map-vocabulary.js';
|
|
25
25
|
export * from './map-structure.js';
|
|
26
26
|
export * from './map-links.js';
|
|
27
|
+
export * from './coverage-links.js';
|
|
28
|
+
export * from './card-channel.js';
|
|
29
|
+
export * from './fork-scenarios.js';
|
|
30
|
+
export * from './invariants.js';
|
|
31
|
+
export * from './spec.js';
|
|
27
32
|
//# sourceMappingURL=index.d.ts.map
|
package/build/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
|
package/build/esm/index.js
CHANGED
|
@@ -24,4 +24,9 @@ export * from './retention.js';
|
|
|
24
24
|
export * from './map-vocabulary.js';
|
|
25
25
|
export * from './map-structure.js';
|
|
26
26
|
export * from './map-links.js';
|
|
27
|
+
export * from './coverage-links.js';
|
|
28
|
+
export * from './card-channel.js';
|
|
29
|
+
export * from './fork-scenarios.js';
|
|
30
|
+
export * from './invariants.js';
|
|
31
|
+
export * from './spec.js';
|
|
27
32
|
//# sourceMappingURL=index.js.map
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CoverageReport } from './coverage-links.js';
|
|
2
|
+
import type { BlueprintEdge } from './edges.js';
|
|
3
|
+
import type { MapEntryId } from './map-structure.js';
|
|
4
|
+
import type { BlueprintNode } from './nodes.js';
|
|
5
|
+
/**
|
|
6
|
+
* ESAS-305: what the board says about one invariant, judged on read. `unproven` when no scenario
|
|
7
|
+
* covers it; `indistinct` when it is covered but its rejection cannot be told apart from another
|
|
8
|
+
* rule's on a command it guards: it has no error code, or one other invariant guarding one of the
|
|
9
|
+
* same commands carries every one of its codes.
|
|
10
|
+
*/
|
|
11
|
+
export type InvariantJudgement = {
|
|
12
|
+
coveredBy: MapEntryId[];
|
|
13
|
+
unproven: boolean;
|
|
14
|
+
indistinct: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type InvariantGraph = {
|
|
17
|
+
nodes: ReadonlyArray<Pick<BlueprintNode, 'id' | 'type' | 'status' | 'errorCodes'>>;
|
|
18
|
+
edges: ReadonlyArray<Pick<BlueprintEdge, 'from' | 'to' | 'kind' | 'status'>>;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Judges every invariant of the merged graph against the coverage join (joinCoverageLinks). Pure:
|
|
22
|
+
* it reads its inputs and returns a fresh record keyed by invariant id; it never refuses a write
|
|
23
|
+
* (ADR-106). A removed invariant or a removed guarded-by edge takes no part.
|
|
24
|
+
*/
|
|
25
|
+
export declare function judgeInvariants(merged: InvariantGraph, coverage: Pick<CoverageReport, 'coveredBy'>): Record<string, InvariantJudgement>;
|
|
26
|
+
//# sourceMappingURL=invariants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../src/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;IACnF,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;CAC9E,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA6BpC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Judges every invariant of the merged graph against the coverage join (joinCoverageLinks). Pure:
|
|
3
|
+
* it reads its inputs and returns a fresh record keyed by invariant id; it never refuses a write
|
|
4
|
+
* (ADR-106). A removed invariant or a removed guarded-by edge takes no part.
|
|
5
|
+
*/
|
|
6
|
+
export function judgeInvariants(merged, coverage) {
|
|
7
|
+
const invariants = merged.nodes.filter(node => node.type === 'invariant' && node.status !== 'removed');
|
|
8
|
+
const codesOf = new Map(invariants.map(node => [node.id, new Set(node.errorCodes ?? [])]));
|
|
9
|
+
const guardedBy = new Map();
|
|
10
|
+
for (const edge of merged.edges) {
|
|
11
|
+
if (edge.kind !== 'guarded-by' || edge.status === 'removed' || !codesOf.has(edge.to))
|
|
12
|
+
continue;
|
|
13
|
+
guardedBy.set(edge.from, (guardedBy.get(edge.from) ?? new Set()).add(edge.to));
|
|
14
|
+
}
|
|
15
|
+
const neighboursOf = (id) => {
|
|
16
|
+
const neighbours = new Set();
|
|
17
|
+
for (const guards of guardedBy.values()) {
|
|
18
|
+
if (!guards.has(id))
|
|
19
|
+
continue;
|
|
20
|
+
for (const other of guards)
|
|
21
|
+
if (other !== id)
|
|
22
|
+
neighbours.add(other);
|
|
23
|
+
}
|
|
24
|
+
return neighbours;
|
|
25
|
+
};
|
|
26
|
+
const judged = {};
|
|
27
|
+
for (const { id } of invariants) {
|
|
28
|
+
const coveredBy = [...(coverage.coveredBy[id] ?? [])];
|
|
29
|
+
const unproven = coveredBy.length === 0;
|
|
30
|
+
const codes = [...codesOf.get(id)];
|
|
31
|
+
const indistinct = !unproven && (codes.length === 0 || [...neighboursOf(id)].some(other => codes.every(code => codesOf.get(other).has(code))));
|
|
32
|
+
judged[id] = { coveredBy, unproven, indistinct };
|
|
33
|
+
}
|
|
34
|
+
return judged;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=invariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/invariants.ts"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,QAA2C;IAE3C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC;IACzG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAE,UAAU,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,GAAG,CAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAE,CAAE,CAAC,CAAC;IAEjG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,KAAM,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,IAAK,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE;YAAE,SAAS;QAClG,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,IAAI,EAAE,CAAE,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,IAAI,CAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,YAAY,GAAG,CAAE,EAAU,EAAgB,EAAE;QACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAM,MAAM,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAK,CAAC,MAAM,CAAC,GAAG,CAAE,EAAE,CAAE;gBAAE,SAAS;YACjC,KAAM,MAAM,KAAK,IAAI,MAAM;gBAAG,IAAK,KAAK,KAAK,EAAE;oBAAG,UAAU,CAAC,GAAG,CAAE,KAAK,CAAE,CAAC;QAC5E,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAM,MAAM,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,CAAE,GAAG,CAAE,QAAQ,CAAC,SAAS,CAAE,EAAE,CAAE,IAAI,EAAE,CAAC,CAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAE,GAAG,OAAO,CAAC,GAAG,CAAE,EAAE,CAAiB,CAAE,CAAC;QACtD,MAAM,UAAU,GAAG,CAAC,QAAQ,IAAI,CAAE,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAE,GAAG,YAAY,CAAE,EAAE,CAAE,CAAE,CAAC,IAAI,CAAE,KAAK,CAAC,EAAE,CAC9F,KAAK,CAAC,KAAK,CAAE,IAAI,CAAC,EAAE,CAAG,OAAO,CAAC,GAAG,CAAE,KAAK,CAAmB,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAE,EAAE,CAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/build/esm/map-links.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type MapLinkReport = {
|
|
|
7
7
|
orphanedBy: Record<MapEntryId, string[]>;
|
|
8
8
|
dangling: MapLink[];
|
|
9
9
|
removed: MapLink[];
|
|
10
|
+
unserved: MapEntryId[];
|
|
10
11
|
};
|
|
11
12
|
export declare function joinMapLinks(merged: BlueprintGraph, design: DesignFile, map: MapFile): MapLinkReport;
|
|
12
13
|
//# sourceMappingURL=map-links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-links.d.ts","sourceRoot":"","sources":["../../src/map-links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"map-links.d.ts","sourceRoot":"","sources":["../../src/map-links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC;AAgBF,wBAAgB,YAAY,CAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAI,aAAa,CAwDtG"}
|
package/build/esm/map-links.js
CHANGED
|
@@ -51,6 +51,19 @@ export function joinMapLinks(merged, design, map) {
|
|
|
51
51
|
.filter(link => mapNodes.has(link.deliverableId) && removedIds.has(link.esId))
|
|
52
52
|
.map(link => ({ esId: link.esId, deliverableId: link.deliverableId }))
|
|
53
53
|
.sort((a, b) => byString(a.esId, b.esId) || byString(a.deliverableId, b.deliverableId));
|
|
54
|
-
|
|
54
|
+
// ESAS-330 D3: a link serves its deliverable when it names a live graph node. A1: under a graph
|
|
55
|
+
// that knows no node (the Design done check joins against emptyGraph()) liveness cannot be judged,
|
|
56
|
+
// so any link serves; struck deliverables are excluded.
|
|
57
|
+
const graphKnown = merged.nodes.length > 0;
|
|
58
|
+
const served = new Set(map.links
|
|
59
|
+
.filter(link => !graphKnown || (nodeIds.has(link.esId) && !removedIds.has(link.esId)))
|
|
60
|
+
.map(link => link.deliverableId));
|
|
61
|
+
const unserved = [];
|
|
62
|
+
for (const node of [...map.nodes].sort((a, b) => byString(a.id, b.id))) {
|
|
63
|
+
if (node.level !== 'deliverable' || node.struck !== undefined || served.has(node.id))
|
|
64
|
+
continue;
|
|
65
|
+
unserved.push(node.id);
|
|
66
|
+
}
|
|
67
|
+
return { unlinked, orphaned, orphanedBy, dangling, removed, unserved };
|
|
55
68
|
}
|
|
56
69
|
//# sourceMappingURL=map-links.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-links.js","sourceRoot":"","sources":["../../src/map-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"map-links.js","sourceRoot":"","sources":["../../src/map-links.ts"],"names":[],"mappings":"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"}
|