@bett3r-dev/blueprint-schema 1.8.0 → 1.10.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 +44 -0
- package/build/cjs/apply-design.d.ts.map +1 -1
- package/build/cjs/apply-design.js +11 -1
- package/build/cjs/apply-design.js.map +1 -1
- package/build/cjs/apply-overrides.d.ts.map +1 -1
- package/build/cjs/apply-overrides.js +18 -1
- package/build/cjs/apply-overrides.js.map +1 -1
- package/build/cjs/card-holds.d.ts +4 -0
- package/build/cjs/card-holds.d.ts.map +1 -0
- package/build/cjs/card-holds.js +51 -0
- package/build/cjs/card-holds.js.map +1 -0
- package/build/cjs/channel-link.d.ts +11 -0
- package/build/cjs/channel-link.d.ts.map +1 -0
- package/build/cjs/channel-link.js +39 -0
- package/build/cjs/channel-link.js.map +1 -0
- package/build/cjs/coverage-links.d.ts +1 -1
- package/build/cjs/coverage-links.d.ts.map +1 -1
- package/build/cjs/coverage-links.js +10 -3
- package/build/cjs/coverage-links.js.map +1 -1
- package/build/cjs/design.d.ts +38 -7
- package/build/cjs/design.d.ts.map +1 -1
- package/build/cjs/design.js +6 -4
- package/build/cjs/design.js.map +1 -1
- package/build/cjs/diagnostics.d.ts +12 -0
- package/build/cjs/diagnostics.d.ts.map +1 -1
- package/build/cjs/diagnostics.js.map +1 -1
- package/build/cjs/effective-design.d.ts +2 -2
- package/build/cjs/effective-design.d.ts.map +1 -1
- package/build/cjs/effective-design.js +30 -2
- package/build/cjs/effective-design.js.map +1 -1
- package/build/cjs/entry-points.d.ts.map +1 -1
- package/build/cjs/entry-points.js +3 -1
- package/build/cjs/entry-points.js.map +1 -1
- package/build/cjs/fork-scenarios.d.ts +3 -1
- package/build/cjs/fork-scenarios.d.ts.map +1 -1
- package/build/cjs/fork-scenarios.js +20 -5
- package/build/cjs/fork-scenarios.js.map +1 -1
- package/build/cjs/index.d.ts +6 -0
- package/build/cjs/index.d.ts.map +1 -1
- package/build/cjs/index.js +6 -0
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/map-review-view.d.ts +29 -0
- package/build/cjs/map-review-view.d.ts.map +1 -0
- package/build/cjs/map-review-view.js +64 -0
- package/build/cjs/map-review-view.js.map +1 -0
- package/build/cjs/map-structure.d.ts +25 -1
- package/build/cjs/map-structure.d.ts.map +1 -1
- package/build/cjs/map-structure.js.map +1 -1
- package/build/cjs/map-vocabulary.d.ts +8 -1
- package/build/cjs/map-vocabulary.d.ts.map +1 -1
- package/build/cjs/map-vocabulary.js +15 -2
- package/build/cjs/map-vocabulary.js.map +1 -1
- package/build/cjs/nodes.d.ts +67 -0
- package/build/cjs/nodes.d.ts.map +1 -1
- package/build/cjs/nodes.js +8 -1
- package/build/cjs/nodes.js.map +1 -1
- package/build/cjs/overrides.d.ts +21 -0
- package/build/cjs/overrides.d.ts.map +1 -1
- package/build/cjs/overrides.js +53 -1
- package/build/cjs/overrides.js.map +1 -1
- package/build/cjs/reality-check.d.ts +19 -1
- package/build/cjs/reality-check.d.ts.map +1 -1
- package/build/cjs/reality-check.js +113 -6
- package/build/cjs/reality-check.js.map +1 -1
- package/build/cjs/scenario-test-level.d.ts +25 -0
- package/build/cjs/scenario-test-level.d.ts.map +1 -0
- package/build/cjs/scenario-test-level.js +43 -0
- package/build/cjs/scenario-test-level.js.map +1 -0
- package/build/cjs/session.d.ts +21 -2
- package/build/cjs/session.d.ts.map +1 -1
- package/build/cjs/session.js +3 -2
- package/build/cjs/session.js.map +1 -1
- package/build/cjs/spec.d.ts.map +1 -1
- package/build/cjs/spec.js +70 -13
- package/build/cjs/spec.js.map +1 -1
- package/build/cjs/step-elements.d.ts +27 -0
- package/build/cjs/step-elements.d.ts.map +1 -0
- package/build/cjs/step-elements.js +28 -0
- package/build/cjs/step-elements.js.map +1 -0
- package/build/cjs/tags.d.ts +26 -0
- package/build/cjs/tags.d.ts.map +1 -0
- package/build/cjs/tags.js +28 -0
- package/build/cjs/tags.js.map +1 -0
- 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 +1 -1
- package/build/cjs/validate-design.d.ts.map +1 -1
- package/build/cjs/validate-design.js +242 -10
- package/build/cjs/validate-design.js.map +1 -1
- package/build/esm/apply-design.d.ts.map +1 -1
- package/build/esm/apply-design.js +11 -1
- package/build/esm/apply-design.js.map +1 -1
- package/build/esm/apply-overrides.d.ts.map +1 -1
- package/build/esm/apply-overrides.js +18 -1
- package/build/esm/apply-overrides.js.map +1 -1
- package/build/esm/card-holds.d.ts +4 -0
- package/build/esm/card-holds.d.ts.map +1 -0
- package/build/esm/card-holds.js +48 -0
- package/build/esm/card-holds.js.map +1 -0
- package/build/esm/channel-link.d.ts +11 -0
- package/build/esm/channel-link.d.ts.map +1 -0
- package/build/esm/channel-link.js +34 -0
- package/build/esm/channel-link.js.map +1 -0
- package/build/esm/coverage-links.d.ts +1 -1
- package/build/esm/coverage-links.d.ts.map +1 -1
- package/build/esm/coverage-links.js +10 -3
- package/build/esm/coverage-links.js.map +1 -1
- package/build/esm/design.d.ts +38 -7
- package/build/esm/design.d.ts.map +1 -1
- package/build/esm/design.js +6 -4
- package/build/esm/design.js.map +1 -1
- package/build/esm/diagnostics.d.ts +12 -0
- package/build/esm/diagnostics.d.ts.map +1 -1
- package/build/esm/diagnostics.js.map +1 -1
- package/build/esm/effective-design.d.ts +2 -2
- package/build/esm/effective-design.d.ts.map +1 -1
- package/build/esm/effective-design.js +30 -2
- package/build/esm/effective-design.js.map +1 -1
- package/build/esm/entry-points.d.ts.map +1 -1
- package/build/esm/entry-points.js +3 -1
- package/build/esm/entry-points.js.map +1 -1
- package/build/esm/fork-scenarios.d.ts +3 -1
- package/build/esm/fork-scenarios.d.ts.map +1 -1
- package/build/esm/fork-scenarios.js +20 -5
- package/build/esm/fork-scenarios.js.map +1 -1
- package/build/esm/index.d.ts +6 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +6 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/map-review-view.d.ts +29 -0
- package/build/esm/map-review-view.d.ts.map +1 -0
- package/build/esm/map-review-view.js +58 -0
- package/build/esm/map-review-view.js.map +1 -0
- package/build/esm/map-structure.d.ts +25 -1
- package/build/esm/map-structure.d.ts.map +1 -1
- package/build/esm/map-structure.js.map +1 -1
- package/build/esm/map-vocabulary.d.ts +8 -1
- package/build/esm/map-vocabulary.d.ts.map +1 -1
- package/build/esm/map-vocabulary.js +13 -1
- package/build/esm/map-vocabulary.js.map +1 -1
- package/build/esm/nodes.d.ts +67 -0
- package/build/esm/nodes.d.ts.map +1 -1
- package/build/esm/nodes.js +7 -0
- package/build/esm/nodes.js.map +1 -1
- package/build/esm/overrides.d.ts +21 -0
- package/build/esm/overrides.d.ts.map +1 -1
- package/build/esm/overrides.js +51 -1
- package/build/esm/overrides.js.map +1 -1
- package/build/esm/reality-check.d.ts +19 -1
- package/build/esm/reality-check.d.ts.map +1 -1
- package/build/esm/reality-check.js +112 -6
- package/build/esm/reality-check.js.map +1 -1
- package/build/esm/scenario-test-level.d.ts +25 -0
- package/build/esm/scenario-test-level.d.ts.map +1 -0
- package/build/esm/scenario-test-level.js +37 -0
- package/build/esm/scenario-test-level.js.map +1 -0
- package/build/esm/session.d.ts +21 -2
- package/build/esm/session.d.ts.map +1 -1
- package/build/esm/session.js +3 -2
- package/build/esm/session.js.map +1 -1
- package/build/esm/spec.d.ts.map +1 -1
- package/build/esm/spec.js +71 -14
- package/build/esm/spec.js.map +1 -1
- package/build/esm/step-elements.d.ts +27 -0
- package/build/esm/step-elements.d.ts.map +1 -0
- package/build/esm/step-elements.js +21 -0
- package/build/esm/step-elements.js.map +1 -0
- package/build/esm/tags.d.ts +26 -0
- package/build/esm/tags.d.ts.map +1 -0
- package/build/esm/tags.js +21 -0
- package/build/esm/tags.js.map +1 -0
- 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 +1 -1
- package/build/esm/validate-design.d.ts.map +1 -1
- package/build/esm/validate-design.js +243 -11
- package/build/esm/validate-design.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/schema/map.schema.json +9 -1
|
@@ -27,7 +27,13 @@ export declare function isKpiDirection(value: unknown): value is KpiDirection;
|
|
|
27
27
|
export type KpiSourceKind = 'events' | 'query';
|
|
28
28
|
export declare const KPI_SOURCE_KINDS: readonly KpiSourceKind[];
|
|
29
29
|
export declare function isKpiSourceKind(value: unknown): value is KpiSourceKind;
|
|
30
|
-
export type
|
|
30
|
+
export type KpiQueryLanguage = 'promql';
|
|
31
|
+
export declare const KPI_QUERY_LANGUAGES: readonly KpiQueryLanguage[];
|
|
32
|
+
export declare function isKpiQueryLanguage(value: unknown): value is KpiQueryLanguage;
|
|
33
|
+
export declare const APM_QUERY_LANGUAGE: Readonly<{
|
|
34
|
+
grafana: KpiQueryLanguage;
|
|
35
|
+
}>;
|
|
36
|
+
export type KpiFilterOutcome = 'ok' | 'rejected' | 'aborted';
|
|
31
37
|
export declare const KPI_FILTER_OUTCOMES: readonly KpiFilterOutcome[];
|
|
32
38
|
export declare function isKpiFilterOutcome(value: unknown): value is KpiFilterOutcome;
|
|
33
39
|
export type WalkKind = 'behavioral' | 'structural';
|
|
@@ -53,6 +59,7 @@ export type MapSchemaDocument = {
|
|
|
53
59
|
kpiKind: MapSchemaVocabulary;
|
|
54
60
|
kpiDirection: MapSchemaVocabulary;
|
|
55
61
|
kpiSourceKind: MapSchemaVocabulary;
|
|
62
|
+
kpiQueryLanguage: MapSchemaVocabulary;
|
|
56
63
|
kpiFilterOutcome: MapSchemaVocabulary;
|
|
57
64
|
walkKind: MapSchemaVocabulary;
|
|
58
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-vocabulary.d.ts","sourceRoot":"","sources":["../../src/map-vocabulary.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAEjC,eAAO,MAAM,kBAAkB,EAAE,gBAAoB,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAEtD,CAAC;AAEF,wBAAgB,gBAAgB,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,cAAc,CAE1E;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEhE,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAEnD,CAAC;AAEF,wBAAgB,eAAe,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,aAAa,CAExE;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1E,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAKhD,CAAC;AAEJ,wBAAgB,cAAc,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,YAAY,CAEtE;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAA8C,CAAC;AAEzF,wBAAgB,UAAU,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,QAAQ,CAE9D;AAID,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAE5D,CAAC;AAEF,wBAAgB,mBAAmB,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,iBAAiB,CAEhF;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAA+C,CAAC;AAExF,wBAAgB,SAAS,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,OAAO,CAE5D;AAED,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,qBAAqB,GAAG,OAAO,CAAC;AAErF,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAEvC,CAAC;AAEF,wBAAgB,SAAS,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,OAAO,CAE5D;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAA8C,CAAC;AAEjG,wBAAgB,cAAc,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,YAAY,CAEtE;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAA2C,CAAC;AAEjG,wBAAgB,eAAe,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,aAAa,CAExE;
|
|
1
|
+
{"version":3,"file":"map-vocabulary.d.ts","sourceRoot":"","sources":["../../src/map-vocabulary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WALK_KINDS = exports.KPI_FILTER_OUTCOMES = exports.KPI_SOURCE_KINDS = exports.KPI_DIRECTIONS = exports.KPI_KINDS = exports.KPI_MODES = exports.EXAMPLE_STATUS_KINDS = exports.MAP_SHAPES = exports.MAP_NODE_LEVELS = exports.DECIDED_SOURCES = exports.FORK_STATUS_KINDS = exports.MAP_SCHEMA_VERSION = void 0;
|
|
3
|
+
exports.WALK_KINDS = exports.KPI_FILTER_OUTCOMES = exports.APM_QUERY_LANGUAGE = exports.KPI_QUERY_LANGUAGES = exports.KPI_SOURCE_KINDS = exports.KPI_DIRECTIONS = exports.KPI_KINDS = exports.KPI_MODES = exports.EXAMPLE_STATUS_KINDS = exports.MAP_SHAPES = exports.MAP_NODE_LEVELS = exports.DECIDED_SOURCES = exports.FORK_STATUS_KINDS = exports.MAP_SCHEMA_VERSION = void 0;
|
|
4
4
|
exports.isForkStatusKind = isForkStatusKind;
|
|
5
5
|
exports.isDecidedSource = isDecidedSource;
|
|
6
6
|
exports.isMapNodeLevel = isMapNodeLevel;
|
|
@@ -10,6 +10,7 @@ exports.isKpiMode = isKpiMode;
|
|
|
10
10
|
exports.isKpiKind = isKpiKind;
|
|
11
11
|
exports.isKpiDirection = isKpiDirection;
|
|
12
12
|
exports.isKpiSourceKind = isKpiSourceKind;
|
|
13
|
+
exports.isKpiQueryLanguage = isKpiQueryLanguage;
|
|
13
14
|
exports.isKpiFilterOutcome = isKpiFilterOutcome;
|
|
14
15
|
exports.isWalkKind = isWalkKind;
|
|
15
16
|
exports.mapSchemaDocument = mapSchemaDocument;
|
|
@@ -57,7 +58,14 @@ exports.KPI_SOURCE_KINDS = Object.freeze(['events', 'query']);
|
|
|
57
58
|
function isKpiSourceKind(value) {
|
|
58
59
|
return typeof value === 'string' && exports.KPI_SOURCE_KINDS.includes(value);
|
|
59
60
|
}
|
|
60
|
-
exports.
|
|
61
|
+
exports.KPI_QUERY_LANGUAGES = Object.freeze(['promql']);
|
|
62
|
+
function isKpiQueryLanguage(value) {
|
|
63
|
+
return typeof value === 'string' && exports.KPI_QUERY_LANGUAGES.includes(value);
|
|
64
|
+
}
|
|
65
|
+
// BP-230: the query language each APM reads, keyed by the raw observability.apm value
|
|
66
|
+
// (blueprint-scaffold-core ObservabilityApm, grafana alone).
|
|
67
|
+
exports.APM_QUERY_LANGUAGE = Object.freeze({ grafana: 'promql' });
|
|
68
|
+
exports.KPI_FILTER_OUTCOMES = Object.freeze(['ok', 'rejected', 'aborted']);
|
|
61
69
|
function isKpiFilterOutcome(value) {
|
|
62
70
|
return typeof value === 'string' && exports.KPI_FILTER_OUTCOMES.includes(value);
|
|
63
71
|
}
|
|
@@ -119,6 +127,11 @@ function mapSchemaDocument() {
|
|
|
119
127
|
description: 'Where a defined KPI is read from: eventstorming ids, or a query on a logical datasource role.',
|
|
120
128
|
enum: [...exports.KPI_SOURCE_KINDS]
|
|
121
129
|
},
|
|
130
|
+
kpiQueryLanguage: {
|
|
131
|
+
type: 'string',
|
|
132
|
+
description: 'The language a query KPI\'s expr is written in; a query that states none is promql.',
|
|
133
|
+
enum: [...exports.KPI_QUERY_LANGUAGES]
|
|
134
|
+
},
|
|
122
135
|
kpiFilterOutcome: {
|
|
123
136
|
type: 'string',
|
|
124
137
|
description: 'The logical outcome a KPI event side may be filtered on.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-vocabulary.js","sourceRoot":"","sources":["../../src/map-vocabulary.ts"],"names":[],"mappings":";;;AAUA,4CAEC;AAQD,0CAEC;AAWD,wCAEC;AAMD,gCAEC;AAUD,kDAEC;AAMD,8BAEC;AAQD,8BAEC;AAMD,wCAEC;AAMD,0CAEC;
|
|
1
|
+
{"version":3,"file":"map-vocabulary.js","sourceRoot":"","sources":["../../src/map-vocabulary.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/nodes.d.ts
CHANGED
|
@@ -10,6 +10,11 @@ export type NodeMeta = {
|
|
|
10
10
|
* to the label's PascalCase.
|
|
11
11
|
*/
|
|
12
12
|
runtimeName?: string;
|
|
13
|
+
/**
|
|
14
|
+
* BP-270: why an extractor could not read this node's data shape from code (a union, an unresolved identifier). A
|
|
15
|
+
* shape is read whole or not at all, so a node carrying this reason carries no `dataShape`.
|
|
16
|
+
*/
|
|
17
|
+
dataShapeUnread?: string;
|
|
13
18
|
};
|
|
14
19
|
export type Origin = 'extracted' | 'manual' | 'human' | 'ai' | 'derived';
|
|
15
20
|
export type DesignAuthor = 'human' | 'ai';
|
|
@@ -27,6 +32,65 @@ export type ReadModelSearchIndex = {
|
|
|
27
32
|
engine: string;
|
|
28
33
|
source: NodeSource;
|
|
29
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* BP-270 (ADR-127): the type of one field of a data shape, from a closed, framework-neutral vocabulary. A `string` may
|
|
37
|
+
* name a `format` (`date-time`, `email`, `uuid`); an `enum` lists its `values`; a `list` holds `items`; a `map` keys
|
|
38
|
+
* strings to `values`; an `object` lists its own `fields` and is `open` when it admits fields it does not list; a
|
|
39
|
+
* `ref` names the node whose shape it carries by `target` id; a `schema` names a schema the design does not shape.
|
|
40
|
+
*/
|
|
41
|
+
export type DataType = {
|
|
42
|
+
kind: 'string';
|
|
43
|
+
format?: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: 'number';
|
|
46
|
+
} | {
|
|
47
|
+
kind: 'integer';
|
|
48
|
+
} | {
|
|
49
|
+
kind: 'boolean';
|
|
50
|
+
} | {
|
|
51
|
+
kind: 'any';
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'enum';
|
|
54
|
+
values: string[];
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'list';
|
|
57
|
+
items: DataType;
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'map';
|
|
60
|
+
values: DataType;
|
|
61
|
+
} | {
|
|
62
|
+
kind: 'object';
|
|
63
|
+
fields: DataField[];
|
|
64
|
+
open?: boolean;
|
|
65
|
+
} | {
|
|
66
|
+
kind: 'ref';
|
|
67
|
+
target: string;
|
|
68
|
+
} | {
|
|
69
|
+
kind: 'schema';
|
|
70
|
+
name: string;
|
|
71
|
+
};
|
|
72
|
+
export type DataTypeKind = DataType['kind'];
|
|
73
|
+
export declare const DATA_TYPE_KINDS: readonly DataTypeKind[];
|
|
74
|
+
/** BP-270: one named field of a data shape. A field with no `type` is owed. */
|
|
75
|
+
export type DataField = {
|
|
76
|
+
name: string;
|
|
77
|
+
type?: DataType;
|
|
78
|
+
optional?: boolean;
|
|
79
|
+
nullable?: boolean;
|
|
80
|
+
note?: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* BP-270 (ADR-127): what a command, event, aggregate's state or read-model row carries: its fields, `open` when it
|
|
84
|
+
* admits fields it does not list; or `sameAs` the node id whose shape it repeats.
|
|
85
|
+
*/
|
|
86
|
+
export type DataShape = {
|
|
87
|
+
fields: DataField[];
|
|
88
|
+
open?: boolean;
|
|
89
|
+
} | {
|
|
90
|
+
sameAs: string;
|
|
91
|
+
};
|
|
92
|
+
/** BP-270 D4: the node types a data shape may sit on; validateDesign refuses one elsewhere as DATA_SHAPE_NOT_ALLOWED. */
|
|
93
|
+
export declare const DATA_SHAPE_NODE_TYPES: readonly NodeType[];
|
|
30
94
|
export type BlueprintNode = {
|
|
31
95
|
id: string;
|
|
32
96
|
type: NodeType;
|
|
@@ -41,6 +105,9 @@ export type BlueprintNode = {
|
|
|
41
105
|
rule?: string;
|
|
42
106
|
errorCodes?: string[];
|
|
43
107
|
generic?: boolean;
|
|
108
|
+
/** BP-279: the node's tags (tags.ts); absent when it has none. */
|
|
109
|
+
tags?: string[];
|
|
110
|
+
dataShape?: DataShape;
|
|
44
111
|
origin?: Origin;
|
|
45
112
|
status?: DesignStatus;
|
|
46
113
|
previousLabel?: string;
|
package/build/cjs/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/nodes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/nodes.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/nodes.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NODE_TYPE_BY_ABBREV = exports.NODE_ABBREV = exports.NODE_TYPES = void 0;
|
|
3
|
+
exports.DATA_SHAPE_NODE_TYPES = exports.DATA_TYPE_KINDS = exports.NODE_TYPE_BY_ABBREV = exports.NODE_ABBREV = exports.NODE_TYPES = void 0;
|
|
4
4
|
exports.NODE_TYPES = [
|
|
5
5
|
'aggregate',
|
|
6
6
|
'system',
|
|
@@ -30,4 +30,11 @@ exports.NODE_ABBREV = {
|
|
|
30
30
|
'invariant': 'inv'
|
|
31
31
|
};
|
|
32
32
|
exports.NODE_TYPE_BY_ABBREV = Object.fromEntries(exports.NODE_TYPES.map(type => [exports.NODE_ABBREV[type], type]));
|
|
33
|
+
exports.DATA_TYPE_KINDS = [
|
|
34
|
+
'string', 'number', 'integer', 'boolean', 'any', 'enum', 'list', 'map', 'object', 'ref', 'schema'
|
|
35
|
+
];
|
|
36
|
+
/** BP-270 D4: the node types a data shape may sit on; validateDesign refuses one elsewhere as DATA_SHAPE_NOT_ALLOWED. */
|
|
37
|
+
exports.DATA_SHAPE_NODE_TYPES = [
|
|
38
|
+
'command', 'event', 'aggregate', 'read-model', 'postgres-view'
|
|
39
|
+
];
|
|
33
40
|
//# sourceMappingURL=nodes.js.map
|
package/build/cjs/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/nodes.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/nodes.ts"],"names":[],"mappings":";;;AA0Ca,QAAA,UAAU,GAAwB;IAC7C,WAAW;IACX,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,iBAAiB;IACjB,WAAW;IACX,OAAO;IACP,IAAI;IACJ,eAAe;IACf,WAAW;CACH,CAAC;AAEE,QAAA,WAAW,GAA6B;IACnD,WAAW,EAAE,KAAK;IAClB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,IAAI;IAClB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,IAAI;IACV,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,KAAK;CACnB,CAAC;AAEW,QAAA,mBAAmB,GAAuC,MAAM,CAAC,WAAW,CACvF,kBAAU,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAE,mBAAW,CAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAE,CACxD,CAAC;AAiCW,QAAA,eAAe,GAA4B;IACtD,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;CACzF,CAAC;AAmBX,yHAAyH;AAC5G,QAAA,qBAAqB,GAAwB;IACxD,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe;CACtD,CAAC"}
|
package/build/cjs/overrides.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type ManualNode = {
|
|
|
12
12
|
rule?: string;
|
|
13
13
|
errorCodes?: string[];
|
|
14
14
|
generic?: boolean;
|
|
15
|
+
tags?: string[];
|
|
15
16
|
author?: DesignAuthor;
|
|
16
17
|
note?: string;
|
|
17
18
|
};
|
|
@@ -29,6 +30,7 @@ export type NodePatch = {
|
|
|
29
30
|
label: string;
|
|
30
31
|
subdomain: string;
|
|
31
32
|
resourceKey: string;
|
|
33
|
+
tags: string[];
|
|
32
34
|
}>;
|
|
33
35
|
note?: string;
|
|
34
36
|
};
|
|
@@ -61,6 +63,21 @@ export type BlueprintOverrides = {
|
|
|
61
63
|
suppress?: Suppression[];
|
|
62
64
|
};
|
|
63
65
|
export declare function emptyOverrides(): BlueprintOverrides;
|
|
66
|
+
/**
|
|
67
|
+
* BP-279 E2: a tag in the overrides layer meets the same rules as a design-written tag. On load the layer is judged
|
|
68
|
+
* by `checkOverridesTags` (a malformed name or a non-list refuses with the design's own code, TAG_MALFORMED) and
|
|
69
|
+
* carried through `normaliseOverridesTags` (every name normalised, sorted, each once), so a hand-written or
|
|
70
|
+
* reclassified entry never passes a raw tag through to the merge.
|
|
71
|
+
*/
|
|
72
|
+
export type OverridesTagIssue = {
|
|
73
|
+
code: 'TAG_MALFORMED';
|
|
74
|
+
path: string;
|
|
75
|
+
message: string;
|
|
76
|
+
};
|
|
77
|
+
/** Every tag the overrides layer carries that fails the tag-name rule, by path; empty when the layer is well-formed. */
|
|
78
|
+
export declare function checkOverridesTags(overrides: BlueprintOverrides): OverridesTagIssue[];
|
|
79
|
+
/** The overrides layer with every tag list as it is stored: normalised, sorted, each name once. Call after `checkOverridesTags`. */
|
|
80
|
+
export declare function normaliseOverridesTags(overrides: BlueprintOverrides): BlueprintOverrides;
|
|
64
81
|
export type OverridesReadFailure = {
|
|
65
82
|
ok: false;
|
|
66
83
|
reason: 'not-a-document';
|
|
@@ -68,6 +85,10 @@ export type OverridesReadFailure = {
|
|
|
68
85
|
ok: false;
|
|
69
86
|
reason: 'wrong-version';
|
|
70
87
|
observed: unknown;
|
|
88
|
+
} | {
|
|
89
|
+
ok: false;
|
|
90
|
+
reason: 'tag-malformed';
|
|
91
|
+
issues: OverridesTagIssue[];
|
|
71
92
|
};
|
|
72
93
|
export type OverridesRead = {
|
|
73
94
|
ok: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/overrides.js
CHANGED
|
@@ -2,12 +2,61 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BLUEPRINT_OVERRIDES_FILENAME = exports.OVERRIDES_SCHEMA_VERSION = void 0;
|
|
4
4
|
exports.emptyOverrides = emptyOverrides;
|
|
5
|
+
exports.checkOverridesTags = checkOverridesTags;
|
|
6
|
+
exports.normaliseOverridesTags = normaliseOverridesTags;
|
|
5
7
|
exports.readOverrides = readOverrides;
|
|
8
|
+
const tags_js_1 = require("./tags.js");
|
|
6
9
|
exports.OVERRIDES_SCHEMA_VERSION = 1;
|
|
7
10
|
exports.BLUEPRINT_OVERRIDES_FILENAME = '.blueprint.overrides.json';
|
|
8
11
|
function emptyOverrides() {
|
|
9
12
|
return { schemaVersion: 1 };
|
|
10
13
|
}
|
|
14
|
+
function checkEntryTags(entry, path, issues) {
|
|
15
|
+
const { tags } = entry;
|
|
16
|
+
if (tags === undefined)
|
|
17
|
+
return;
|
|
18
|
+
if (!Array.isArray(tags)) {
|
|
19
|
+
issues.push({ code: 'TAG_MALFORMED', path, message: `${path} must be a list of tag names` });
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const tag of tags) {
|
|
23
|
+
if ((0, tags_js_1.isTagName)(tag))
|
|
24
|
+
continue;
|
|
25
|
+
issues.push({
|
|
26
|
+
code: 'TAG_MALFORMED',
|
|
27
|
+
path,
|
|
28
|
+
message: `${path} holds ${JSON.stringify(tag)}, which is not a tag name: ${tags_js_1.TAG_NAME_RULE}`
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Every tag the overrides layer carries that fails the tag-name rule, by path; empty when the layer is well-formed. */
|
|
33
|
+
function checkOverridesTags(overrides) {
|
|
34
|
+
const issues = [];
|
|
35
|
+
const nodes = overrides.add?.nodes;
|
|
36
|
+
if (Array.isArray(nodes)) {
|
|
37
|
+
nodes.forEach((node, index) => checkEntryTags(node ?? {}, `add.nodes[${index}].tags`, issues));
|
|
38
|
+
}
|
|
39
|
+
const patches = overrides.patch?.nodes;
|
|
40
|
+
if (Array.isArray(patches)) {
|
|
41
|
+
patches.forEach((patch, index) => checkEntryTags(patch?.set ?? {}, `patch.nodes[${index}].set.tags`, issues));
|
|
42
|
+
}
|
|
43
|
+
return issues;
|
|
44
|
+
}
|
|
45
|
+
/** The overrides layer with every tag list as it is stored: normalised, sorted, each name once. Call after `checkOverridesTags`. */
|
|
46
|
+
function normaliseOverridesTags(overrides) {
|
|
47
|
+
const nodes = overrides.add?.nodes;
|
|
48
|
+
const patches = overrides.patch?.nodes;
|
|
49
|
+
const withTags = (entry) => (Array.isArray(entry.tags) ? { ...entry, tags: (0, tags_js_1.normaliseTags)(entry.tags) } : entry);
|
|
50
|
+
return {
|
|
51
|
+
...overrides,
|
|
52
|
+
...(Array.isArray(nodes)
|
|
53
|
+
? { add: { ...overrides.add, nodes: nodes.map(withTags) } }
|
|
54
|
+
: {}),
|
|
55
|
+
...(Array.isArray(patches)
|
|
56
|
+
? { patch: { ...overrides.patch, nodes: patches.map(patch => ({ ...patch, set: withTags(patch.set ?? {}) })) } }
|
|
57
|
+
: {})
|
|
58
|
+
};
|
|
59
|
+
}
|
|
11
60
|
function readOverrides(parsed) {
|
|
12
61
|
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
13
62
|
return { ok: false, reason: 'not-a-document' };
|
|
@@ -15,6 +64,9 @@ function readOverrides(parsed) {
|
|
|
15
64
|
const observed = parsed.schemaVersion;
|
|
16
65
|
if (observed !== exports.OVERRIDES_SCHEMA_VERSION)
|
|
17
66
|
return { ok: false, reason: 'wrong-version', observed };
|
|
18
|
-
|
|
67
|
+
const issues = checkOverridesTags(parsed);
|
|
68
|
+
if (issues.length > 0)
|
|
69
|
+
return { ok: false, reason: 'tag-malformed', issues };
|
|
70
|
+
return { ok: true, overrides: normaliseOverridesTags(parsed) };
|
|
19
71
|
}
|
|
20
72
|
//# sourceMappingURL=overrides.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EdgeKind } from './edges.js';
|
|
2
2
|
import { type DesignFile } from './design.js';
|
|
3
3
|
import { type BlueprintGraph } from './graph.js';
|
|
4
|
-
import type { DesignAuthor } from './nodes.js';
|
|
4
|
+
import type { DataField, DesignAuthor } from './nodes.js';
|
|
5
5
|
export type VerbOutcome = 'satisfied' | 'stale' | 'pending';
|
|
6
6
|
export type VerbSubject = {
|
|
7
7
|
kind: 'node';
|
|
@@ -13,6 +13,15 @@ export type VerbSubject = {
|
|
|
13
13
|
edgeKind: EdgeKind;
|
|
14
14
|
};
|
|
15
15
|
export declare function verbSubjectKey(subject: VerbSubject): string;
|
|
16
|
+
/**
|
|
17
|
+
* BP-270 D17: how a satisfied verdict's designed data shape stood against the extracted node's. `verified` is false when
|
|
18
|
+
* the shape counted by existence alone (the node carries no shape, its shape was unread, or either side is a `sameAs`);
|
|
19
|
+
* `extra` lists, by path (`traceId`, `address.zip`), the code fields the design does not name, which never fail it (F15=B).
|
|
20
|
+
*/
|
|
21
|
+
export type ShapeCheck = {
|
|
22
|
+
verified: boolean;
|
|
23
|
+
extra: string[];
|
|
24
|
+
};
|
|
16
25
|
export type VerbVerdict = {
|
|
17
26
|
path: string;
|
|
18
27
|
verb: 'propose' | 'modify' | 'remove';
|
|
@@ -20,6 +29,8 @@ export type VerbVerdict = {
|
|
|
20
29
|
outcome: VerbOutcome;
|
|
21
30
|
subject: VerbSubject;
|
|
22
31
|
reason: string;
|
|
32
|
+
/** Present on a satisfied propose or modify whose design carries a data shape. */
|
|
33
|
+
shape?: ShapeCheck;
|
|
23
34
|
};
|
|
24
35
|
export type RealityCheck = {
|
|
25
36
|
verdicts: VerbVerdict[];
|
|
@@ -28,6 +39,13 @@ export type RealityCheck = {
|
|
|
28
39
|
note: string;
|
|
29
40
|
};
|
|
30
41
|
export declare function realityMovedNote(satisfied: number, stale: number, degraded?: number): string;
|
|
42
|
+
/**
|
|
43
|
+
* BP-270 D17: why the extracted field `extracted` (undefined: none of that name) does not carry the designed one, by the
|
|
44
|
+
* rule {@link checkDesignAgainstReality} judges a field by; empty when it does. Extra code fields inside it are allowed,
|
|
45
|
+
* as there. The scaffolder (BP-270 D8) calls a designed field changed by this rule, so a field it owes as changed is one
|
|
46
|
+
* the reality check holds pending. (A removed field it also owes is not held pending: extra code fields are allowed.)
|
|
47
|
+
*/
|
|
48
|
+
export declare function designedFieldMismatches(designed: DataField, extracted: DataField | undefined): string[];
|
|
31
49
|
export declare function checkDesignAgainstReality(reality: BlueprintGraph, design: DesignFile | undefined): RealityCheck;
|
|
32
50
|
export type DecorateSatisfiedInput = {
|
|
33
51
|
reality: BlueprintGraph;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reality-check.d.ts","sourceRoot":"","sources":["../../src/reality-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,KAAK,UAAU,EAOhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,cAAc,EAAgE,MAAM,YAAY,CAAC;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"reality-check.d.ts","sourceRoot":"","sources":["../../src/reality-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,KAAK,UAAU,EAOhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,cAAc,EAAgE,MAAM,YAAY,CAAC;AAC/G,OAAO,KAAK,EAAE,SAAS,EAAuB,YAAY,EAAiC,MAAM,YAAY,CAAC;AAE9G,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnE,wBAAgB,cAAc,CAAE,OAAO,EAAE,WAAW,GAAI,MAAM,CAI7D;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,gBAAgB,CAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAI,MAAM,CAGzF;AA+GD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAI,MAAM,EAAE,CAEzG;AA+LD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B,YAAY,CA4Dd;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,sBAAsB,GAAI,uBAAuB,CA6B1F"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.verbSubjectKey = verbSubjectKey;
|
|
4
4
|
exports.realityMovedNote = realityMovedNote;
|
|
5
|
+
exports.designedFieldMismatches = designedFieldMismatches;
|
|
5
6
|
exports.checkDesignAgainstReality = checkDesignAgainstReality;
|
|
6
7
|
exports.decorateSatisfied = decorateSatisfied;
|
|
7
8
|
const design_js_1 = require("./design.js");
|
|
@@ -47,6 +48,91 @@ function routesOf(queries) {
|
|
|
47
48
|
function codesOf(errorCodes) {
|
|
48
49
|
return [...new Set(errorCodes ?? [])].sort().join('\u0000');
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* BP-270 D17: a designed type that leaves the code's type open. `ref` and `schema` match by name only at every depth,
|
|
53
|
+
* since the extractor reads a named schema inline; `any` matches whatever the code narrows it to (F2).
|
|
54
|
+
*/
|
|
55
|
+
const leavesTypeOpen = (type) => type.kind === 'any' || type.kind === 'ref' || type.kind === 'schema';
|
|
56
|
+
/**
|
|
57
|
+
* BP-270 D17 (ADR-127 decision 8): why an extracted type does not carry a designed one, recursively. List items and
|
|
58
|
+
* map values recurse; an object's fields are compared as a shape of their own (ADR-127 decision 4); enum values must
|
|
59
|
+
* all be present in code, which may add more; a string format is compared only when the design sets it. `subject`
|
|
60
|
+
* names what a kind mismatch is about: the field's path, or its list items or map values.
|
|
61
|
+
*/
|
|
62
|
+
function typeMismatches(path, subject, designed, extracted, extra) {
|
|
63
|
+
if (leavesTypeOpen(designed))
|
|
64
|
+
return [];
|
|
65
|
+
if (designed.kind === 'list' && extracted?.kind === 'list') {
|
|
66
|
+
return typeMismatches(path, `${subject} items`, designed.items, extracted.items, extra);
|
|
67
|
+
}
|
|
68
|
+
if (designed.kind === 'map' && extracted?.kind === 'map') {
|
|
69
|
+
return typeMismatches(path, `${subject} values`, designed.values, extracted.values, extra);
|
|
70
|
+
}
|
|
71
|
+
if (designed.kind === 'object' && extracted?.kind === 'object')
|
|
72
|
+
return fieldsMismatches(`${path}.`, designed.fields, extracted.fields, extra);
|
|
73
|
+
if (designed.kind === 'enum' && extracted?.kind === 'enum') {
|
|
74
|
+
const lacking = designed.values.filter(value => !extracted.values.includes(value));
|
|
75
|
+
return lacking.length > 0 ? [`${path} lacks ${lacking.join(', ')}`] : [];
|
|
76
|
+
}
|
|
77
|
+
if (designed.kind === 'string' && extracted?.kind === 'string') {
|
|
78
|
+
return designed.format !== undefined && designed.format !== extracted.format
|
|
79
|
+
? [`${path} has format ${extracted.format ?? 'none'}, designed ${designed.format}`]
|
|
80
|
+
: [];
|
|
81
|
+
}
|
|
82
|
+
return designed.kind === extracted?.kind ? [] : [`${subject} ${subject === path ? 'is' : 'are'} ${extracted?.kind ?? 'untyped'}, designed ${designed.kind}`];
|
|
83
|
+
}
|
|
84
|
+
/** BP-270 D17: an untyped, `ref` or `schema` designed field matches by name only; any other compares its flags and type. */
|
|
85
|
+
function fieldMismatches(path, designed, extracted, extra) {
|
|
86
|
+
if (extracted === undefined)
|
|
87
|
+
return [`${path} is missing`];
|
|
88
|
+
if (designed.type === undefined || designed.type.kind === 'ref' || designed.type.kind === 'schema')
|
|
89
|
+
return [];
|
|
90
|
+
const flags = [];
|
|
91
|
+
if ((designed.optional ?? false) !== (extracted.optional ?? false)) {
|
|
92
|
+
flags.push(`${path} is ${extracted.optional ? 'optional' : 'required'}, designed ${designed.optional ? 'optional' : 'required'}`);
|
|
93
|
+
}
|
|
94
|
+
if ((designed.nullable ?? false) !== (extracted.nullable ?? false)) {
|
|
95
|
+
flags.push(`${path} is ${extracted.nullable ? 'nullable' : 'not nullable'}, designed ${designed.nullable ? 'nullable' : 'not nullable'}`);
|
|
96
|
+
}
|
|
97
|
+
return [...typeMismatches(path, path, designed.type, extracted.type, extra), ...flags];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* BP-270 D17: why the extracted field `extracted` (undefined: none of that name) does not carry the designed one, by the
|
|
101
|
+
* rule {@link checkDesignAgainstReality} judges a field by; empty when it does. Extra code fields inside it are allowed,
|
|
102
|
+
* as there. The scaffolder (BP-270 D8) calls a designed field changed by this rule, so a field it owes as changed is one
|
|
103
|
+
* the reality check holds pending. (A removed field it also owes is not held pending: extra code fields are allowed.)
|
|
104
|
+
*/
|
|
105
|
+
function designedFieldMismatches(designed, extracted) {
|
|
106
|
+
return fieldMismatches(designed.name, designed, extracted, []);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* BP-270 D17 (F15=B): the designed fields the extracted ones do not carry, each named by its path (`address.street`,
|
|
110
|
+
* ADR-127 decision 6). Extra code fields at this level are pushed onto `extra` by path, never failed on; an object's
|
|
111
|
+
* `open` flag is not compared, since extras are allowed either way.
|
|
112
|
+
*/
|
|
113
|
+
function fieldsMismatches(prefix, designed, extracted, extra) {
|
|
114
|
+
const byName = new Map(extracted.map(field => [field.name, field]));
|
|
115
|
+
const named = new Set(designed.map(field => field.name));
|
|
116
|
+
extra.push(...extracted.map(field => field.name).filter(name => !named.has(name)).map(name => `${prefix}${name}`));
|
|
117
|
+
return designed.flatMap(field => fieldMismatches(`${prefix}${field.name}`, field, byName.get(field.name), extra));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* BP-270 D17 (F15=B): whether the extracted node carries every designed field with its type, compared recursively,
|
|
121
|
+
* and its optional and nullable flags. Extra code fields, at any depth, are listed, never failed on. A node with no
|
|
122
|
+
* shape, an unread one, or a `sameAs` on either side counts by existence and is flagged shape not verified.
|
|
123
|
+
*/
|
|
124
|
+
function judgeShape(node, designed) {
|
|
125
|
+
const extracted = node.dataShape;
|
|
126
|
+
if (!('fields' in designed) || extracted === undefined || !('fields' in extracted) || node.meta?.dataShapeUnread !== undefined) {
|
|
127
|
+
const why = node.meta?.dataShapeUnread ?? ('fields' in designed ? 'the extracted node carries no field list' : 'the designed shape repeats another node\'s');
|
|
128
|
+
return { met: true, check: { verified: false, extra: [] }, note: `; shape not verified (${why})` };
|
|
129
|
+
}
|
|
130
|
+
const extra = [];
|
|
131
|
+
const mismatches = fieldsMismatches('', designed.fields, extracted.fields, extra);
|
|
132
|
+
if (mismatches.length > 0)
|
|
133
|
+
return { met: false, reason: mismatches.join('; ') };
|
|
134
|
+
return { met: true, check: { verified: true, extra }, note: extra.length > 0 ? `; extra code fields: ${extra.join(', ')}` : '' };
|
|
135
|
+
}
|
|
50
136
|
function exhibitsFields(node, set) {
|
|
51
137
|
if (set.resourceKey !== undefined && node.resourceKey !== set.resourceKey)
|
|
52
138
|
return false;
|
|
@@ -58,6 +144,11 @@ function exhibitsFields(node, set) {
|
|
|
58
144
|
return false;
|
|
59
145
|
if (set.generic !== undefined && (node.generic ?? false) !== set.generic)
|
|
60
146
|
return false;
|
|
147
|
+
// BP-279: tags compare as sets, so a modify setting keyed stays pending until the extracted node carries it.
|
|
148
|
+
if (set.tags !== undefined && codesOf(node.tags) !== codesOf(set.tags))
|
|
149
|
+
return false;
|
|
150
|
+
if (set.dataShape !== undefined && !judgeShape(node, set.dataShape).met)
|
|
151
|
+
return false;
|
|
61
152
|
return true;
|
|
62
153
|
}
|
|
63
154
|
function modifyTargetIdentity(entry, reality) {
|
|
@@ -94,11 +185,20 @@ function typeWordBuilds(proposedNodes, reality) {
|
|
|
94
185
|
}
|
|
95
186
|
function judgeProposedNode(proposed, reality, identity, builds) {
|
|
96
187
|
const built = builds.get(identity);
|
|
97
|
-
|
|
98
|
-
|
|
188
|
+
const node = reality.byIdentity.get(identity) ?? (built === undefined ? undefined : nodeAt(reality, built));
|
|
189
|
+
const shape = node === undefined || proposed.dataShape === undefined ? undefined : judgeShape(node, proposed.dataShape);
|
|
190
|
+
const exists = reality.byIdentity.has(identity)
|
|
191
|
+
? `${identity} now exists in the extracted graph`
|
|
99
192
|
: built !== undefined
|
|
100
|
-
?
|
|
101
|
-
: undefined
|
|
193
|
+
? `${identity} now exists in the extracted graph as ${built}, its code name under the repository's type words`
|
|
194
|
+
: undefined;
|
|
195
|
+
return decide(exists !== undefined && shape?.met !== false
|
|
196
|
+
? shape === undefined
|
|
197
|
+
? { outcome: 'satisfied', reason: exists }
|
|
198
|
+
: { outcome: 'satisfied', reason: `${exists}${shape.note}`, shape: shape.check }
|
|
199
|
+
: undefined, undefined, shape?.met === false
|
|
200
|
+
? { outcome: 'pending', reason: `${proposed.label} is built without its designed shape: ${shape.reason}` }
|
|
201
|
+
: { outcome: 'pending', reason: `${proposed.label} has not been built yet` });
|
|
102
202
|
}
|
|
103
203
|
function exhibitsScope(proposed, reality, key) {
|
|
104
204
|
const declared = proposed.handlers;
|
|
@@ -131,13 +231,20 @@ function judgeModifyEntry(entry, reality, proposedIdentities, identity) {
|
|
|
131
231
|
// re-extraction never confirms it: it stays pending until the design closes, never satisfied by the node existing.
|
|
132
232
|
const built = target !== undefined && !(0, design_js_1.isNoteOnlyModify)(entry) && exhibitsFields(target, entry.set ?? {});
|
|
133
233
|
const resolves = nodeAt(reality, entry.id) !== undefined || proposedIdentities.has(entry.id);
|
|
234
|
+
const designedShape = entry.set?.dataShape;
|
|
235
|
+
const shape = target === undefined || designedShape === undefined ? undefined : judgeShape(target, designedShape);
|
|
236
|
+
const asked = `${identity} now exists in the extracted graph as asked`;
|
|
134
237
|
return decide(built
|
|
135
|
-
?
|
|
238
|
+
? shape?.met === true
|
|
239
|
+
? { outcome: 'satisfied', reason: `${asked}${shape.note}`, shape: shape.check }
|
|
240
|
+
: { outcome: 'satisfied', reason: asked }
|
|
136
241
|
: undefined, !resolves
|
|
137
242
|
? { outcome: 'stale', reason: `modify targets ${entry.id}, which reality no longer has` }
|
|
138
243
|
: undefined, (0, design_js_1.isNoteOnlyModify)(entry)
|
|
139
244
|
? { outcome: 'pending', reason: `${entry.id} carries a change the extracted graph cannot show; it stays pending` }
|
|
140
|
-
:
|
|
245
|
+
: shape?.met === false
|
|
246
|
+
? { outcome: 'pending', reason: `${entry.id} has not been changed yet: ${shape.reason}` }
|
|
247
|
+
: { outcome: 'pending', reason: `${entry.id} has not been changed yet` });
|
|
141
248
|
}
|
|
142
249
|
function judgeRemoveEntry(entry, reality, proposedIdentities, proposedEdgeKeys) {
|
|
143
250
|
const [present, subject] = entry.kind === 'node'
|