@intentset/architecture 0.10.0 → 0.12.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/dist/claims.d.ts +2 -1
- package/dist/claims.d.ts.map +1 -1
- package/dist/claims.js +7 -3
- package/dist/claims.js.map +1 -1
- package/dist/delivery.d.ts +13 -0
- package/dist/delivery.d.ts.map +1 -0
- package/dist/delivery.js +26 -0
- package/dist/delivery.js.map +1 -0
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +39 -26
- package/dist/extract.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ownership.d.ts +5 -2
- package/dist/ownership.d.ts.map +1 -1
- package/dist/ownership.js +23 -4
- package/dist/ownership.js.map +1 -1
- package/dist/typescript.d.ts +17 -0
- package/dist/typescript.d.ts.map +1 -0
- package/dist/typescript.js +57 -0
- package/dist/typescript.js.map +1 -0
- package/package.json +2 -2
- package/src/claims.ts +7 -3
- package/src/delivery.ts +24 -0
- package/src/extract.ts +44 -26
- package/src/index.ts +1 -0
- package/src/ownership.ts +34 -6
- package/src/typescript.ts +67 -0
package/dist/claims.d.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Path and resource ownership (VSA §3, §7; VSA009; profile AMP004).
|
|
3
3
|
*
|
|
4
4
|
* - A nonempty claim that matches no file is VSA009: a warning while the
|
|
5
|
-
* slice is draft (planned, not yet owned), an error once it is not
|
|
5
|
+
* slice is draft (planned, not yet owned), an error once it is not, or once
|
|
6
|
+
* it or a behavior it implements says its work is built (ADR 0017).
|
|
6
7
|
* - Two slices resolving one file is VSA009, once per pair of claims, naming
|
|
7
8
|
* both slices, both claims and the files.
|
|
8
9
|
* - A file claimed by a slice and recorded as a registry resource has two
|
package/dist/claims.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAkB,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAGvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,CAiNzF"}
|
package/dist/claims.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Path and resource ownership (VSA §3, §7; VSA009; profile AMP004).
|
|
3
3
|
*
|
|
4
4
|
* - A nonempty claim that matches no file is VSA009: a warning while the
|
|
5
|
-
* slice is draft (planned, not yet owned), an error once it is not
|
|
5
|
+
* slice is draft (planned, not yet owned), an error once it is not, or once
|
|
6
|
+
* it or a behavior it implements says its work is built (ADR 0017).
|
|
6
7
|
* - Two slices resolving one file is VSA009, once per pair of claims, naming
|
|
7
8
|
* both slices, both claims and the files.
|
|
8
9
|
* - A file claimed by a slice and recorded as a registry resource has two
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
* neither is repeated here.
|
|
20
21
|
*/
|
|
21
22
|
import { patternProblem } from "@intentset/core";
|
|
23
|
+
import { pathsMayBePlanned } from "./delivery.js";
|
|
22
24
|
import { finding, listSome, plural } from "./finding.js";
|
|
23
25
|
import { isCode } from "./paths.js";
|
|
24
26
|
import { compareStrings, validatePattern } from "./patterns.js";
|
|
@@ -42,7 +44,7 @@ export function checkClaims(model, graph, registriesPath) {
|
|
|
42
44
|
return;
|
|
43
45
|
}
|
|
44
46
|
if (slice.claimFiles[i].length === 0) {
|
|
45
|
-
const planned = slice.artifact
|
|
47
|
+
const { planned, built } = pathsMayBePlanned(slice.artifact, graph);
|
|
46
48
|
findings.push(finding({
|
|
47
49
|
code: "VSA009",
|
|
48
50
|
...(planned ? { severity: "warning" } : {}),
|
|
@@ -51,7 +53,9 @@ export function checkClaims(model, graph, registriesPath) {
|
|
|
51
53
|
field,
|
|
52
54
|
message: planned
|
|
53
55
|
? `The ${claim.kind} claim ${claim.path} of draft slice ${slice.id} matches no file yet; it is planned, and an error once the slice leaves draft.`
|
|
54
|
-
:
|
|
56
|
+
: built !== null
|
|
57
|
+
? `The ${claim.kind} claim ${claim.path} of draft slice ${slice.id} matches no file, and ${built}, so the claim cannot be planned.`
|
|
58
|
+
: `The ${claim.kind} claim ${claim.path} of ${slice.id} matches no file in the repository.`,
|
|
55
59
|
remediation: "Correct the path, add the files it promises, or remove the claim; an empty claim is not ownership (VSA §3).",
|
|
56
60
|
}));
|
|
57
61
|
}
|
package/dist/claims.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSA §3, ADR 0017: whether a slice's missing paths may be planned. A draft slice's claim that matches no file
|
|
3
|
+
* (VSA009) and entrypoint that is not a file (VSA002) are warnings, because its paths may not be written yet. A draft
|
|
4
|
+
* slice whose effective delivery is `built`, or that implements a behavior whose effective delivery is `built`,
|
|
5
|
+
* describes code that exists, so it has no planned paths and both are errors.
|
|
6
|
+
*/
|
|
7
|
+
import { type Artifact, type Graph } from "@intentset/core";
|
|
8
|
+
/** Null when the slice's missing paths are errors for its status alone; otherwise whether they may be planned, and why not. */
|
|
9
|
+
export declare function pathsMayBePlanned(slice: Artifact, graph: Graph): {
|
|
10
|
+
planned: boolean;
|
|
11
|
+
built: string | null;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAc,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxE,+HAA+H;AAC/H,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAa3G"}
|
package/dist/delivery.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSA §3, ADR 0017: whether a slice's missing paths may be planned. A draft slice's claim that matches no file
|
|
3
|
+
* (VSA009) and entrypoint that is not a file (VSA002) are warnings, because its paths may not be written yet. A draft
|
|
4
|
+
* slice whose effective delivery is `built`, or that implements a behavior whose effective delivery is `built`,
|
|
5
|
+
* describes code that exists, so it has no planned paths and both are errors.
|
|
6
|
+
*/
|
|
7
|
+
import { deliveryOf } from "@intentset/core";
|
|
8
|
+
import { compareStrings } from "./patterns.js";
|
|
9
|
+
/** Null when the slice's missing paths are errors for its status alone; otherwise whether they may be planned, and why not. */
|
|
10
|
+
export function pathsMayBePlanned(slice, graph) {
|
|
11
|
+
if (slice.meta.status !== "draft")
|
|
12
|
+
return { planned: false, built: null };
|
|
13
|
+
if (deliveryOf(slice.meta) === "built")
|
|
14
|
+
return { planned: false, built: `${slice.meta.id} says its work is built` };
|
|
15
|
+
const behavior = (slice.meta.links.implements ?? [])
|
|
16
|
+
.filter((id) => {
|
|
17
|
+
const target = graph.artifacts.get(id);
|
|
18
|
+
return target?.meta.type === "behavior" && deliveryOf(target.meta) === "built";
|
|
19
|
+
})
|
|
20
|
+
.sort(compareStrings)[0];
|
|
21
|
+
if (behavior !== undefined) {
|
|
22
|
+
return { planned: false, built: `${slice.meta.id} implements ${behavior}, whose work is built` };
|
|
23
|
+
}
|
|
24
|
+
return { planned: true, built: null };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAiB,UAAU,EAAc,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,+HAA+H;AAC/H,MAAM,UAAU,iBAAiB,CAAC,KAAe,EAAE,KAAY;IAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1E,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpH,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;SACjD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;IACjF,CAAC,CAAC;SACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,eAAe,QAAQ,uBAAuB,EAAE,CAAC;IACnG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC"}
|
package/dist/extract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAiDA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,qGAAqG;IACrG,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,mGAAmG;IACnG,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAuTD,qHAAqH;AACrH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAkQrE;AAED,6EAA6E;AAC7E,eAAO,MAAM,YAAY,YAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAC1G,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8GAA8G;IAC9G,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kHAAkH;AAClH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAOD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAuF1E;AAED,oHAAoH;AACpH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5E"}
|
package/dist/extract.js
CHANGED
|
@@ -33,8 +33,14 @@
|
|
|
33
33
|
* the file the names the file exports itself, so a name taken through an
|
|
34
34
|
* entrypoint or a barrel can be followed to the file that defines it (VSA006).
|
|
35
35
|
*/
|
|
36
|
-
import {
|
|
37
|
-
|
|
36
|
+
import { typescript } from "./typescript.js";
|
|
37
|
+
// The scanner's exports, taken from TypeScript by `load()` on the first tokenize rather than at import, so this
|
|
38
|
+
// module loads where TypeScript 7 is absent and the first check that needs it fails with TypeScriptMissingError.
|
|
39
|
+
let SyntaxKind;
|
|
40
|
+
let LanguageVariant;
|
|
41
|
+
let createScanner;
|
|
42
|
+
let computeLineStarts;
|
|
43
|
+
let tokenIsIdentifierOrKeyword;
|
|
38
44
|
/** Keywords after which `/` begins a regular expression rather than a division. */
|
|
39
45
|
const REGEX_AFTER_WORD = new Set([
|
|
40
46
|
"return",
|
|
@@ -52,23 +58,36 @@ const REGEX_AFTER_WORD = new Set([
|
|
|
52
58
|
"yield",
|
|
53
59
|
"await",
|
|
54
60
|
]);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
SyntaxKind
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
/** Tokens after which `/` is a division, not a regular expression; filled by `load()`. */
|
|
62
|
+
let VALUE_ENDING;
|
|
63
|
+
/** Takes the scanner from TypeScript once; throws TypeScriptMissingError where TypeScript 7 does not resolve. */
|
|
64
|
+
function load() {
|
|
65
|
+
if (VALUE_ENDING !== undefined)
|
|
66
|
+
return VALUE_ENDING;
|
|
67
|
+
const { ast, scanner } = typescript();
|
|
68
|
+
({ SyntaxKind, LanguageVariant } = ast);
|
|
69
|
+
({ createScanner, computeLineStarts, tokenIsIdentifierOrKeyword } = scanner);
|
|
70
|
+
VALUE_ENDING = new Set([
|
|
71
|
+
SyntaxKind.NumericLiteral,
|
|
72
|
+
SyntaxKind.BigIntLiteral,
|
|
73
|
+
SyntaxKind.StringLiteral,
|
|
74
|
+
SyntaxKind.RegularExpressionLiteral,
|
|
75
|
+
SyntaxKind.NoSubstitutionTemplateLiteral,
|
|
76
|
+
SyntaxKind.TemplateTail,
|
|
77
|
+
SyntaxKind.CloseParenToken,
|
|
78
|
+
SyntaxKind.CloseBracketToken,
|
|
79
|
+
SyntaxKind.CloseBraceToken,
|
|
80
|
+
SyntaxKind.PlusPlusToken,
|
|
81
|
+
SyntaxKind.MinusMinusToken,
|
|
82
|
+
]);
|
|
83
|
+
OPENERS = new Set([SyntaxKind.OpenBraceToken, SyntaxKind.OpenParenToken, SyntaxKind.OpenBracketToken]);
|
|
84
|
+
CLOSERS = new Set([SyntaxKind.CloseBraceToken, SyntaxKind.CloseParenToken, SyntaxKind.CloseBracketToken]);
|
|
85
|
+
return VALUE_ENDING;
|
|
86
|
+
}
|
|
68
87
|
function regexAllowed(previous) {
|
|
69
88
|
if (previous === undefined)
|
|
70
89
|
return true;
|
|
71
|
-
if (
|
|
90
|
+
if (load().has(previous.kind))
|
|
72
91
|
return false;
|
|
73
92
|
if (tokenIsIdentifierOrKeyword(previous.kind))
|
|
74
93
|
return REGEX_AFTER_WORD.has(previous.text);
|
|
@@ -78,6 +97,7 @@ function isJsx(path) {
|
|
|
78
97
|
return path.endsWith(".tsx") || path.endsWith(".jsx");
|
|
79
98
|
}
|
|
80
99
|
function tokenize(path, text) {
|
|
100
|
+
load();
|
|
81
101
|
const jsx = isJsx(path);
|
|
82
102
|
const scanner = createScanner(true, jsx ? LanguageVariant.JSX : LanguageVariant.Standard, text);
|
|
83
103
|
const starts = computeLineStarts(text);
|
|
@@ -620,16 +640,9 @@ export function extractImports(path, text) {
|
|
|
620
640
|
/** What an Amplify schema declares at its top level (profile §9, AMP009). */
|
|
621
641
|
export const SCHEMA_KINDS = ["model", "enum", "query", "mutation", "subscription", "customType"];
|
|
622
642
|
const REFERENCE_CALLS = new Set(["belongsTo", "hasMany", "hasOne", "ref"]);
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
SyntaxKind.OpenBracketToken,
|
|
627
|
-
]);
|
|
628
|
-
const CLOSERS = new Set([
|
|
629
|
-
SyntaxKind.CloseBraceToken,
|
|
630
|
-
SyntaxKind.CloseParenToken,
|
|
631
|
-
SyntaxKind.CloseBracketToken,
|
|
632
|
-
]);
|
|
643
|
+
/** Brackets that open and close a nesting level; filled by `load()` with VALUE_ENDING, since they name the scanner's kinds. */
|
|
644
|
+
let OPENERS;
|
|
645
|
+
let CLOSERS;
|
|
633
646
|
/**
|
|
634
647
|
* The top-level names an Amplify Gen 2 schema file declares, and the names its
|
|
635
648
|
* relationships and references point at, read from TypeScript's tokens as
|
package/dist/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* whole check; the rest is exported for reports, tools and tests.
|
|
6
6
|
*/
|
|
7
7
|
export { AREA_REVIEW_REQUIRED, areaOf, backendAreaOf, checkAreas, isAreaSchema } from "./areas.ts";
|
|
8
|
+
export { TypeScriptMissingError, typescriptVersion } from "./typescript.ts";
|
|
8
9
|
export { applyBaseline, type BaselineComparison, type BaselineEntry, baselineKeys, type BaselineSubject, compareBaselines, describeEntry, FINGERPRINT_V2, fingerprint, type Mode, parseBaseline, plainMessage, STALE_ENTRY_CODE, staleEntryDiagnostics, writeBaseline, } from "./baseline.ts";
|
|
9
10
|
export { type BoundaryResult, checkBoundaries, checkJsx, checkUnclassified, type SliceEdge } from "./boundaries.ts";
|
|
10
11
|
export { type ArchitectureResult, type ArchitectureSummary, type CheckOptions, checkArchitecture, ownershipReport, REVIEW_REQUIRED, } from "./check.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,eAAe,EACpB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,IAAI,EACT,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EACL,QAAQ,EACR,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,KAAK,eAAe,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,cAAc,EACd,KAAK,YAAY,EACjB,aAAa,EACb,SAAS,EACT,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,WAAW,EACX,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,eAAe,EACpB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,IAAI,EACT,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EACL,QAAQ,EACR,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,KAAK,eAAe,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,cAAc,EACd,KAAK,YAAY,EACjB,aAAa,EACb,SAAS,EACT,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,WAAW,EACX,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* whole check; the rest is exported for reports, tools and tests.
|
|
6
6
|
*/
|
|
7
7
|
export { AREA_REVIEW_REQUIRED, areaOf, backendAreaOf, checkAreas, isAreaSchema } from "./areas.js";
|
|
8
|
+
export { TypeScriptMissingError, typescriptVersion } from "./typescript.js";
|
|
8
9
|
export { applyBaseline, baselineKeys, compareBaselines, describeEntry, FINGERPRINT_V2, fingerprint, parseBaseline, plainMessage, STALE_ENTRY_CODE, staleEntryDiagnostics, writeBaseline, } from "./baseline.js";
|
|
9
10
|
export { checkBoundaries, checkJsx, checkUnclassified } from "./boundaries.js";
|
|
10
11
|
export { checkArchitecture, ownershipReport, REVIEW_REQUIRED, } from "./check.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EACL,aAAa,EAGb,YAAY,EAEZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EAEX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAuB,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAIL,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EAGxB,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EACL,QAAQ,EACR,eAAe,EACf,MAAM,EACN,mBAAmB,EAEnB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,cAAc,EAEd,aAAa,EACb,SAAS,EAET,YAAY,GAMb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAqC,OAAO,EAAyB,MAAM,cAAc,CAAC;AACnH,OAAO,EAAmB,SAAS,EAAe,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA6D,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,YAAY,EACZ,UAAU,EAIV,WAAW,GAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,QAAQ,EAAY,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAiB,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EACL,aAAa,EAGb,YAAY,EAEZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EAEX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAuB,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAIL,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EAGxB,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EACL,QAAQ,EACR,eAAe,EACf,MAAM,EACN,mBAAmB,EAEnB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,cAAc,EAEd,aAAa,EACb,SAAS,EAET,YAAY,GAMb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAqC,OAAO,EAAyB,MAAM,cAAc,CAAC;AACnH,OAAO,EAAmB,SAAS,EAAe,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA6D,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,YAAY,EACZ,UAAU,EAIV,WAAW,GAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,QAAQ,EAAY,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAiB,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/ownership.d.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Behavior ownership and contract surfaces (VSA001, VSA002; Core §5).
|
|
3
3
|
*
|
|
4
4
|
* VSA001 at L2 and above: an approved, implemented, released or deprecated
|
|
5
|
-
* behavior has exactly one incoming `implements` from a product slice.
|
|
5
|
+
* behavior has exactly one incoming `implements` from a product slice. A
|
|
6
|
+
* draft behavior that says its work is built and that no product slice
|
|
7
|
+
* implements is a warning (ADR 0017). Core
|
|
6
8
|
* reports the same condition as CORE006 from the graph alone; VSA001 is the
|
|
7
9
|
* architecture's own statement of it, so a VSA report stands by itself.
|
|
8
10
|
*
|
|
@@ -12,7 +14,8 @@
|
|
|
12
14
|
* repository root): a slice has one public surface per package it spans. An
|
|
13
15
|
* empty entrypoint module is allowed for a leaf. While the slice is draft, an
|
|
14
16
|
* entrypoint that is not a file yet is a warning: planned, not yet owned
|
|
15
|
-
* (VSA §3)
|
|
17
|
+
* (VSA §3), unless the slice or a behavior it implements says its work is
|
|
18
|
+
* built (ADR 0017).
|
|
16
19
|
*
|
|
17
20
|
* VSA012 (deleting or splitting a slice dispositions its behavior, paths and
|
|
18
21
|
* contracts) is a diff between two snapshots. This check sees one snapshot,
|
package/dist/ownership.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAY,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,cAAc,CAAC;AAErD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAI3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAsIlF"}
|
package/dist/ownership.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { LEVELS } from "@intentset/core";
|
|
1
|
+
import { deliveryOf, LEVELS } from "@intentset/core";
|
|
2
|
+
import { pathsMayBePlanned } from "./delivery.js";
|
|
2
3
|
import { finding } from "./finding.js";
|
|
3
4
|
import { compareStrings, matchPattern, validatePattern } from "./patterns.js";
|
|
4
5
|
import { describePackage } from "./regions.js";
|
|
@@ -6,8 +7,10 @@ const OWNED_STATUSES = new Set(["approved", "implemented", "released", "deprecat
|
|
|
6
7
|
export function checkOwnership(model, graph, level) {
|
|
7
8
|
const findings = [];
|
|
8
9
|
if (LEVELS.indexOf(level) >= LEVELS.indexOf("L2")) {
|
|
10
|
+
// ADR 0017: a draft behavior that says its work is built and that no product slice implements is a warning.
|
|
11
|
+
const builtDraft = (artifact) => artifact.meta.status === "draft" && deliveryOf(artifact.meta) === "built";
|
|
9
12
|
const behaviors = [...graph.artifacts.values()]
|
|
10
|
-
.filter((artifact) => artifact.meta.type === "behavior" && OWNED_STATUSES.has(artifact.meta.status))
|
|
13
|
+
.filter((artifact) => artifact.meta.type === "behavior" && (OWNED_STATUSES.has(artifact.meta.status) || builtDraft(artifact)))
|
|
11
14
|
.sort((a, b) => compareStrings(a.meta.id, b.meta.id));
|
|
12
15
|
for (const behavior of behaviors) {
|
|
13
16
|
const id = behavior.meta.id;
|
|
@@ -20,6 +23,20 @@ export function checkOwnership(model, graph, level) {
|
|
|
20
23
|
const unique = [...new Set(owners)];
|
|
21
24
|
if (unique.length === 1)
|
|
22
25
|
continue;
|
|
26
|
+
if (builtDraft(behavior)) {
|
|
27
|
+
if (unique.length > 0)
|
|
28
|
+
continue;
|
|
29
|
+
findings.push(finding({
|
|
30
|
+
code: "VSA001",
|
|
31
|
+
severity: "warning",
|
|
32
|
+
artifact: id,
|
|
33
|
+
path: behavior.path,
|
|
34
|
+
field: "/intentset/delivery",
|
|
35
|
+
message: `Draft behavior ${id} says its work is built, and no product slice implements it.`,
|
|
36
|
+
remediation: "Add it to the implements of the product slice whose code delivers it, so the built code has an owner before the behavior is approved (VSA001, ADR 0017).",
|
|
37
|
+
}));
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
23
40
|
findings.push(finding({
|
|
24
41
|
code: "VSA001",
|
|
25
42
|
artifact: id,
|
|
@@ -67,7 +84,7 @@ export function checkOwnership(model, graph, level) {
|
|
|
67
84
|
else
|
|
68
85
|
byPackage.set(pkg, entrypoint);
|
|
69
86
|
if (!model.files.has(entrypoint)) {
|
|
70
|
-
const planned = slice.artifact
|
|
87
|
+
const { planned, built } = pathsMayBePlanned(slice.artifact, graph);
|
|
71
88
|
findings.push(finding({
|
|
72
89
|
code: "VSA002",
|
|
73
90
|
...(planned ? { severity: "warning" } : {}),
|
|
@@ -76,7 +93,9 @@ export function checkOwnership(model, graph, level) {
|
|
|
76
93
|
field,
|
|
77
94
|
message: planned
|
|
78
95
|
? `The entrypoint ${entrypoint} of draft slice ${slice.id} is not a file yet; it is planned, and an error once the slice leaves draft.`
|
|
79
|
-
:
|
|
96
|
+
: built !== null
|
|
97
|
+
? `The entrypoint ${entrypoint} of draft slice ${slice.id} is not a file, and ${built}, so the entrypoint cannot be planned.`
|
|
98
|
+
: `The entrypoint ${entrypoint} of ${slice.id} is not a file in the repository.`,
|
|
80
99
|
remediation: "Create the entrypoint, empty if the slice exposes nothing yet, or correct the path (VSA002).",
|
|
81
100
|
paths: [entrypoint],
|
|
82
101
|
}));
|
package/dist/ownership.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type Ast = typeof import("typescript/unstable/ast");
|
|
2
|
+
type Scanner = typeof import("typescript/unstable/ast/scanner");
|
|
3
|
+
/** Thrown by the first check that needs the scanner when `typescript/unstable/ast` cannot be loaded. */
|
|
4
|
+
export declare class TypeScriptMissingError extends Error {
|
|
5
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
6
|
+
readonly found: string | null;
|
|
7
|
+
constructor(found: string | null, cause: unknown);
|
|
8
|
+
}
|
|
9
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
10
|
+
export declare function typescriptVersion(): string | null;
|
|
11
|
+
/** The scanner's modules, loaded once. */
|
|
12
|
+
export declare function typescript(): {
|
|
13
|
+
ast: Ast;
|
|
14
|
+
scanner: Scanner;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":"AAeA,KAAK,GAAG,GAAG,cAAc,yBAAyB,CAAC,CAAC;AACpD,KAAK,OAAO,GAAG,cAAc,iCAAiC,CAAC,CAAC;AAEhE,wGAAwG;AACxG,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,YAAY,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAS/C;CACF;AAYD,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAMjD;AAID,0CAA0C;AAC1C,wBAAgB,UAAU,IAAI;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAS3D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript 7's scanner, loaded on first use rather than when this package
|
|
3
|
+
* is imported. `typescript` is a peer dependency, and a package manager that
|
|
4
|
+
* resolves peers to the repository's own copy (pnpm) gives this package
|
|
5
|
+
* whatever TypeScript the repository has: on one earlier than 7 the modules
|
|
6
|
+
* below do not exist. Loading them at import time made every `intentset`
|
|
7
|
+
* command fail there, `init` and `validate` included, with a raw module
|
|
8
|
+
* resolution error. Loading them here, when a check first needs them, lets
|
|
9
|
+
* the rest of the toolchain run, and the one check that needs the scanner
|
|
10
|
+
* fails with a `TypeScriptMissingError` that names the TypeScript found, so
|
|
11
|
+
* the CLI can say what to run instead.
|
|
12
|
+
*/
|
|
13
|
+
import { createRequire } from "node:module";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
/** Thrown by the first check that needs the scanner when `typescript/unstable/ast` cannot be loaded. */
|
|
16
|
+
export class TypeScriptMissingError extends Error {
|
|
17
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
18
|
+
found;
|
|
19
|
+
constructor(found, cause) {
|
|
20
|
+
super(found === null
|
|
21
|
+
? "The architecture check needs TypeScript 7, and no `typescript` resolves from @intentset/architecture."
|
|
22
|
+
: `The architecture check needs TypeScript 7, and the \`typescript\` that resolves from @intentset/architecture is ${found}.`, { cause });
|
|
23
|
+
this.name = "TypeScriptMissingError";
|
|
24
|
+
this.found = found;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const require = createRequire(import.meta.url);
|
|
28
|
+
/**
|
|
29
|
+
* One of TypeScript's modules, found as an import would find it (so a repository's module resolution, hooks
|
|
30
|
+
* included, decides what `typescript` is here) and loaded synchronously, since the scanner is used that way.
|
|
31
|
+
*/
|
|
32
|
+
function load(id) {
|
|
33
|
+
return require(fileURLToPath(import.meta.resolve(id)));
|
|
34
|
+
}
|
|
35
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
36
|
+
export function typescriptVersion() {
|
|
37
|
+
try {
|
|
38
|
+
return load("typescript/package.json").version;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
let loaded;
|
|
45
|
+
/** The scanner's modules, loaded once. */
|
|
46
|
+
export function typescript() {
|
|
47
|
+
if (loaded === undefined) {
|
|
48
|
+
try {
|
|
49
|
+
loaded = { ast: load("typescript/unstable/ast"), scanner: load("typescript/unstable/ast/scanner") };
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
throw new TypeScriptMissingError(typescriptVersion(), error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return loaded;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,wGAAwG;AACxG,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,qFAAqF;IAC5E,KAAK,CAAgB;IAE9B,YAAY,KAAoB,EAAE,KAAc;QAC9C,KAAK,CACH,KAAK,KAAK,IAAI;YACZ,CAAC,CAAC,uGAAuG;YACzG,CAAC,CAAC,mHAAmH,KAAK,GAAG,EAC/H,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;GAGG;AACH,SAAS,IAAI,CAAI,EAAU;IACzB,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAM,CAAC;AAC9D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAsB,yBAAyB,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAI,MAAkD,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,CAAM,yBAAyB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAU,iCAAiC,CAAC,EAAE,CAAC;QACpH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentset/architecture",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Traceable VSA checks: path claims, import graph, layer matrix, resources, exceptions, baseline.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"intentset",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@intentset/core": "^0.
|
|
39
|
+
"@intentset/core": "^0.12.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"typescript": "^7.0.2"
|
package/src/claims.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Path and resource ownership (VSA §3, §7; VSA009; profile AMP004).
|
|
3
3
|
*
|
|
4
4
|
* - A nonempty claim that matches no file is VSA009: a warning while the
|
|
5
|
-
* slice is draft (planned, not yet owned), an error once it is not
|
|
5
|
+
* slice is draft (planned, not yet owned), an error once it is not, or once
|
|
6
|
+
* it or a behavior it implements says its work is built (ADR 0017).
|
|
6
7
|
* - Two slices resolving one file is VSA009, once per pair of claims, naming
|
|
7
8
|
* both slices, both claims and the files.
|
|
8
9
|
* - A file claimed by a slice and recorded as a registry resource has two
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
* neither is repeated here.
|
|
20
21
|
*/
|
|
21
22
|
import { type Graph, patternProblem } from "@intentset/core";
|
|
23
|
+
import { pathsMayBePlanned } from "./delivery.ts";
|
|
22
24
|
import { type Finding, finding, listSome, plural } from "./finding.ts";
|
|
23
25
|
import { isCode } from "./paths.ts";
|
|
24
26
|
import { compareStrings, validatePattern } from "./patterns.ts";
|
|
@@ -47,7 +49,7 @@ export function checkClaims(model: Model, graph: Graph, registriesPath: string):
|
|
|
47
49
|
return;
|
|
48
50
|
}
|
|
49
51
|
if (slice.claimFiles[i].length === 0) {
|
|
50
|
-
const planned = slice.artifact
|
|
52
|
+
const { planned, built } = pathsMayBePlanned(slice.artifact, graph);
|
|
51
53
|
findings.push(
|
|
52
54
|
finding({
|
|
53
55
|
code: "VSA009",
|
|
@@ -57,7 +59,9 @@ export function checkClaims(model: Model, graph: Graph, registriesPath: string):
|
|
|
57
59
|
field,
|
|
58
60
|
message: planned
|
|
59
61
|
? `The ${claim.kind} claim ${claim.path} of draft slice ${slice.id} matches no file yet; it is planned, and an error once the slice leaves draft.`
|
|
60
|
-
:
|
|
62
|
+
: built !== null
|
|
63
|
+
? `The ${claim.kind} claim ${claim.path} of draft slice ${slice.id} matches no file, and ${built}, so the claim cannot be planned.`
|
|
64
|
+
: `The ${claim.kind} claim ${claim.path} of ${slice.id} matches no file in the repository.`,
|
|
61
65
|
remediation:
|
|
62
66
|
"Correct the path, add the files it promises, or remove the claim; an empty claim is not ownership (VSA §3).",
|
|
63
67
|
}),
|
package/src/delivery.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSA §3, ADR 0017: whether a slice's missing paths may be planned. A draft slice's claim that matches no file
|
|
3
|
+
* (VSA009) and entrypoint that is not a file (VSA002) are warnings, because its paths may not be written yet. A draft
|
|
4
|
+
* slice whose effective delivery is `built`, or that implements a behavior whose effective delivery is `built`,
|
|
5
|
+
* describes code that exists, so it has no planned paths and both are errors.
|
|
6
|
+
*/
|
|
7
|
+
import { type Artifact, deliveryOf, type Graph } from "@intentset/core";
|
|
8
|
+
import { compareStrings } from "./patterns.ts";
|
|
9
|
+
|
|
10
|
+
/** Null when the slice's missing paths are errors for its status alone; otherwise whether they may be planned, and why not. */
|
|
11
|
+
export function pathsMayBePlanned(slice: Artifact, graph: Graph): { planned: boolean; built: string | null } {
|
|
12
|
+
if (slice.meta.status !== "draft") return { planned: false, built: null };
|
|
13
|
+
if (deliveryOf(slice.meta) === "built") return { planned: false, built: `${slice.meta.id} says its work is built` };
|
|
14
|
+
const behavior = (slice.meta.links.implements ?? [])
|
|
15
|
+
.filter((id) => {
|
|
16
|
+
const target = graph.artifacts.get(id);
|
|
17
|
+
return target?.meta.type === "behavior" && deliveryOf(target.meta) === "built";
|
|
18
|
+
})
|
|
19
|
+
.sort(compareStrings)[0];
|
|
20
|
+
if (behavior !== undefined) {
|
|
21
|
+
return { planned: false, built: `${slice.meta.id} implements ${behavior}, whose work is built` };
|
|
22
|
+
}
|
|
23
|
+
return { planned: true, built: null };
|
|
24
|
+
}
|
package/src/extract.ts
CHANGED
|
@@ -33,8 +33,19 @@
|
|
|
33
33
|
* the file the names the file exports itself, so a name taken through an
|
|
34
34
|
* entrypoint or a barrel can be followed to the file that defines it (VSA006).
|
|
35
35
|
*/
|
|
36
|
-
import {
|
|
37
|
-
|
|
36
|
+
import { typescript } from "./typescript.ts";
|
|
37
|
+
|
|
38
|
+
type Ast = typeof import("typescript/unstable/ast");
|
|
39
|
+
type Scanner = typeof import("typescript/unstable/ast/scanner");
|
|
40
|
+
type SyntaxKind = import("typescript/unstable/ast").SyntaxKind;
|
|
41
|
+
|
|
42
|
+
// The scanner's exports, taken from TypeScript by `load()` on the first tokenize rather than at import, so this
|
|
43
|
+
// module loads where TypeScript 7 is absent and the first check that needs it fails with TypeScriptMissingError.
|
|
44
|
+
let SyntaxKind: Ast["SyntaxKind"];
|
|
45
|
+
let LanguageVariant: Ast["LanguageVariant"];
|
|
46
|
+
let createScanner: Scanner["createScanner"];
|
|
47
|
+
let computeLineStarts: Scanner["computeLineStarts"];
|
|
48
|
+
let tokenIsIdentifierOrKeyword: Scanner["tokenIsIdentifierOrKeyword"];
|
|
38
49
|
|
|
39
50
|
export interface RawImport {
|
|
40
51
|
specifier: string;
|
|
@@ -122,23 +133,36 @@ const REGEX_AFTER_WORD = new Set([
|
|
|
122
133
|
"await",
|
|
123
134
|
]);
|
|
124
135
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
SyntaxKind
|
|
133
|
-
|
|
134
|
-
SyntaxKind
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
/** Tokens after which `/` is a division, not a regular expression; filled by `load()`. */
|
|
137
|
+
let VALUE_ENDING: Set<SyntaxKind> | undefined;
|
|
138
|
+
|
|
139
|
+
/** Takes the scanner from TypeScript once; throws TypeScriptMissingError where TypeScript 7 does not resolve. */
|
|
140
|
+
function load(): Set<SyntaxKind> {
|
|
141
|
+
if (VALUE_ENDING !== undefined) return VALUE_ENDING;
|
|
142
|
+
const { ast, scanner } = typescript();
|
|
143
|
+
({ SyntaxKind, LanguageVariant } = ast);
|
|
144
|
+
({ createScanner, computeLineStarts, tokenIsIdentifierOrKeyword } = scanner);
|
|
145
|
+
VALUE_ENDING = new Set<SyntaxKind>([
|
|
146
|
+
SyntaxKind.NumericLiteral,
|
|
147
|
+
SyntaxKind.BigIntLiteral,
|
|
148
|
+
SyntaxKind.StringLiteral,
|
|
149
|
+
SyntaxKind.RegularExpressionLiteral,
|
|
150
|
+
SyntaxKind.NoSubstitutionTemplateLiteral,
|
|
151
|
+
SyntaxKind.TemplateTail,
|
|
152
|
+
SyntaxKind.CloseParenToken,
|
|
153
|
+
SyntaxKind.CloseBracketToken,
|
|
154
|
+
SyntaxKind.CloseBraceToken,
|
|
155
|
+
SyntaxKind.PlusPlusToken,
|
|
156
|
+
SyntaxKind.MinusMinusToken,
|
|
157
|
+
]);
|
|
158
|
+
OPENERS = new Set<SyntaxKind>([SyntaxKind.OpenBraceToken, SyntaxKind.OpenParenToken, SyntaxKind.OpenBracketToken]);
|
|
159
|
+
CLOSERS = new Set<SyntaxKind>([SyntaxKind.CloseBraceToken, SyntaxKind.CloseParenToken, SyntaxKind.CloseBracketToken]);
|
|
160
|
+
return VALUE_ENDING;
|
|
161
|
+
}
|
|
138
162
|
|
|
139
163
|
function regexAllowed(previous: Token | undefined): boolean {
|
|
140
164
|
if (previous === undefined) return true;
|
|
141
|
-
if (
|
|
165
|
+
if (load().has(previous.kind)) return false;
|
|
142
166
|
if (tokenIsIdentifierOrKeyword(previous.kind)) return REGEX_AFTER_WORD.has(previous.text);
|
|
143
167
|
return true;
|
|
144
168
|
}
|
|
@@ -148,6 +172,7 @@ function isJsx(path: string): boolean {
|
|
|
148
172
|
}
|
|
149
173
|
|
|
150
174
|
function tokenize(path: string, text: string): { tokens: Token[]; problems: ExtractProblem[] } {
|
|
175
|
+
load();
|
|
151
176
|
const jsx = isJsx(path);
|
|
152
177
|
const scanner = createScanner(true, jsx ? LanguageVariant.JSX : LanguageVariant.Standard, text);
|
|
153
178
|
const starts = computeLineStarts(text);
|
|
@@ -680,16 +705,9 @@ export interface SchemaExtraction {
|
|
|
680
705
|
}
|
|
681
706
|
|
|
682
707
|
const REFERENCE_CALLS = new Set(["belongsTo", "hasMany", "hasOne", "ref"]);
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
SyntaxKind.OpenBracketToken,
|
|
687
|
-
]);
|
|
688
|
-
const CLOSERS = new Set<SyntaxKind>([
|
|
689
|
-
SyntaxKind.CloseBraceToken,
|
|
690
|
-
SyntaxKind.CloseParenToken,
|
|
691
|
-
SyntaxKind.CloseBracketToken,
|
|
692
|
-
]);
|
|
708
|
+
/** Brackets that open and close a nesting level; filled by `load()` with VALUE_ENDING, since they name the scanner's kinds. */
|
|
709
|
+
let OPENERS: Set<SyntaxKind>;
|
|
710
|
+
let CLOSERS: Set<SyntaxKind>;
|
|
693
711
|
|
|
694
712
|
/**
|
|
695
713
|
* The top-level names an Amplify Gen 2 schema file declares, and the names its
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* whole check; the rest is exported for reports, tools and tests.
|
|
6
6
|
*/
|
|
7
7
|
export { AREA_REVIEW_REQUIRED, areaOf, backendAreaOf, checkAreas, isAreaSchema } from "./areas.ts";
|
|
8
|
+
export { TypeScriptMissingError, typescriptVersion } from "./typescript.ts";
|
|
8
9
|
export {
|
|
9
10
|
applyBaseline,
|
|
10
11
|
type BaselineComparison,
|
package/src/ownership.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Behavior ownership and contract surfaces (VSA001, VSA002; Core §5).
|
|
3
3
|
*
|
|
4
4
|
* VSA001 at L2 and above: an approved, implemented, released or deprecated
|
|
5
|
-
* behavior has exactly one incoming `implements` from a product slice.
|
|
5
|
+
* behavior has exactly one incoming `implements` from a product slice. A
|
|
6
|
+
* draft behavior that says its work is built and that no product slice
|
|
7
|
+
* implements is a warning (ADR 0017). Core
|
|
6
8
|
* reports the same condition as CORE006 from the graph alone; VSA001 is the
|
|
7
9
|
* architecture's own statement of it, so a VSA report stands by itself.
|
|
8
10
|
*
|
|
@@ -12,7 +14,8 @@
|
|
|
12
14
|
* repository root): a slice has one public surface per package it spans. An
|
|
13
15
|
* empty entrypoint module is allowed for a leaf. While the slice is draft, an
|
|
14
16
|
* entrypoint that is not a file yet is a warning: planned, not yet owned
|
|
15
|
-
* (VSA §3)
|
|
17
|
+
* (VSA §3), unless the slice or a behavior it implements says its work is
|
|
18
|
+
* built (ADR 0017).
|
|
16
19
|
*
|
|
17
20
|
* VSA012 (deleting or splitting a slice dispositions its behavior, paths and
|
|
18
21
|
* contracts) is a diff between two snapshots. This check sees one snapshot,
|
|
@@ -21,7 +24,8 @@
|
|
|
21
24
|
* orphaned files.
|
|
22
25
|
*/
|
|
23
26
|
import type { Artifact, Graph, Level } from "@intentset/core";
|
|
24
|
-
import { LEVELS } from "@intentset/core";
|
|
27
|
+
import { deliveryOf, LEVELS } from "@intentset/core";
|
|
28
|
+
import { pathsMayBePlanned } from "./delivery.ts";
|
|
25
29
|
import { type Finding, finding } from "./finding.ts";
|
|
26
30
|
import { compareStrings, matchPattern, validatePattern } from "./patterns.ts";
|
|
27
31
|
import { describePackage, type Model } from "./regions.ts";
|
|
@@ -32,8 +36,14 @@ export function checkOwnership(model: Model, graph: Graph, level: Level): Findin
|
|
|
32
36
|
const findings: Finding[] = [];
|
|
33
37
|
|
|
34
38
|
if (LEVELS.indexOf(level) >= LEVELS.indexOf("L2")) {
|
|
39
|
+
// ADR 0017: a draft behavior that says its work is built and that no product slice implements is a warning.
|
|
40
|
+
const builtDraft = (artifact: Artifact) =>
|
|
41
|
+
artifact.meta.status === "draft" && deliveryOf(artifact.meta) === "built";
|
|
35
42
|
const behaviors = [...graph.artifacts.values()]
|
|
36
|
-
.filter(
|
|
43
|
+
.filter(
|
|
44
|
+
(artifact) =>
|
|
45
|
+
artifact.meta.type === "behavior" && (OWNED_STATUSES.has(artifact.meta.status) || builtDraft(artifact)),
|
|
46
|
+
)
|
|
37
47
|
.sort((a, b) => compareStrings(a.meta.id, b.meta.id));
|
|
38
48
|
for (const behavior of behaviors) {
|
|
39
49
|
const id = behavior.meta.id;
|
|
@@ -45,6 +55,22 @@ export function checkOwnership(model: Model, graph: Graph, level: Level): Findin
|
|
|
45
55
|
.sort(compareStrings);
|
|
46
56
|
const unique = [...new Set(owners)];
|
|
47
57
|
if (unique.length === 1) continue;
|
|
58
|
+
if (builtDraft(behavior)) {
|
|
59
|
+
if (unique.length > 0) continue;
|
|
60
|
+
findings.push(
|
|
61
|
+
finding({
|
|
62
|
+
code: "VSA001",
|
|
63
|
+
severity: "warning",
|
|
64
|
+
artifact: id,
|
|
65
|
+
path: behavior.path,
|
|
66
|
+
field: "/intentset/delivery",
|
|
67
|
+
message: `Draft behavior ${id} says its work is built, and no product slice implements it.`,
|
|
68
|
+
remediation:
|
|
69
|
+
"Add it to the implements of the product slice whose code delivers it, so the built code has an owner before the behavior is approved (VSA001, ADR 0017).",
|
|
70
|
+
}),
|
|
71
|
+
);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
48
74
|
findings.push(
|
|
49
75
|
finding({
|
|
50
76
|
code: "VSA001",
|
|
@@ -100,7 +126,7 @@ export function checkOwnership(model: Model, graph: Graph, level: Level): Findin
|
|
|
100
126
|
);
|
|
101
127
|
} else byPackage.set(pkg, entrypoint);
|
|
102
128
|
if (!model.files.has(entrypoint)) {
|
|
103
|
-
const planned = slice.artifact
|
|
129
|
+
const { planned, built } = pathsMayBePlanned(slice.artifact, graph);
|
|
104
130
|
findings.push(
|
|
105
131
|
finding({
|
|
106
132
|
code: "VSA002",
|
|
@@ -110,7 +136,9 @@ export function checkOwnership(model: Model, graph: Graph, level: Level): Findin
|
|
|
110
136
|
field,
|
|
111
137
|
message: planned
|
|
112
138
|
? `The entrypoint ${entrypoint} of draft slice ${slice.id} is not a file yet; it is planned, and an error once the slice leaves draft.`
|
|
113
|
-
:
|
|
139
|
+
: built !== null
|
|
140
|
+
? `The entrypoint ${entrypoint} of draft slice ${slice.id} is not a file, and ${built}, so the entrypoint cannot be planned.`
|
|
141
|
+
: `The entrypoint ${entrypoint} of ${slice.id} is not a file in the repository.`,
|
|
114
142
|
remediation: "Create the entrypoint, empty if the slice exposes nothing yet, or correct the path (VSA002).",
|
|
115
143
|
paths: [entrypoint],
|
|
116
144
|
}),
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript 7's scanner, loaded on first use rather than when this package
|
|
3
|
+
* is imported. `typescript` is a peer dependency, and a package manager that
|
|
4
|
+
* resolves peers to the repository's own copy (pnpm) gives this package
|
|
5
|
+
* whatever TypeScript the repository has: on one earlier than 7 the modules
|
|
6
|
+
* below do not exist. Loading them at import time made every `intentset`
|
|
7
|
+
* command fail there, `init` and `validate` included, with a raw module
|
|
8
|
+
* resolution error. Loading them here, when a check first needs them, lets
|
|
9
|
+
* the rest of the toolchain run, and the one check that needs the scanner
|
|
10
|
+
* fails with a `TypeScriptMissingError` that names the TypeScript found, so
|
|
11
|
+
* the CLI can say what to run instead.
|
|
12
|
+
*/
|
|
13
|
+
import { createRequire } from "node:module";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
|
|
16
|
+
type Ast = typeof import("typescript/unstable/ast");
|
|
17
|
+
type Scanner = typeof import("typescript/unstable/ast/scanner");
|
|
18
|
+
|
|
19
|
+
/** Thrown by the first check that needs the scanner when `typescript/unstable/ast` cannot be loaded. */
|
|
20
|
+
export class TypeScriptMissingError extends Error {
|
|
21
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
22
|
+
readonly found: string | null;
|
|
23
|
+
|
|
24
|
+
constructor(found: string | null, cause: unknown) {
|
|
25
|
+
super(
|
|
26
|
+
found === null
|
|
27
|
+
? "The architecture check needs TypeScript 7, and no `typescript` resolves from @intentset/architecture."
|
|
28
|
+
: `The architecture check needs TypeScript 7, and the \`typescript\` that resolves from @intentset/architecture is ${found}.`,
|
|
29
|
+
{ cause },
|
|
30
|
+
);
|
|
31
|
+
this.name = "TypeScriptMissingError";
|
|
32
|
+
this.found = found;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const require = createRequire(import.meta.url);
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* One of TypeScript's modules, found as an import would find it (so a repository's module resolution, hooks
|
|
40
|
+
* included, decides what `typescript` is here) and loaded synchronously, since the scanner is used that way.
|
|
41
|
+
*/
|
|
42
|
+
function load<T>(id: string): T {
|
|
43
|
+
return require(fileURLToPath(import.meta.resolve(id))) as T;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** The version of the `typescript` this package resolves, or null when none does. */
|
|
47
|
+
export function typescriptVersion(): string | null {
|
|
48
|
+
try {
|
|
49
|
+
return load<{ version: string }>("typescript/package.json").version;
|
|
50
|
+
} catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
let loaded: { ast: Ast; scanner: Scanner } | undefined;
|
|
56
|
+
|
|
57
|
+
/** The scanner's modules, loaded once. */
|
|
58
|
+
export function typescript(): { ast: Ast; scanner: Scanner } {
|
|
59
|
+
if (loaded === undefined) {
|
|
60
|
+
try {
|
|
61
|
+
loaded = { ast: load<Ast>("typescript/unstable/ast"), scanner: load<Scanner>("typescript/unstable/ast/scanner") };
|
|
62
|
+
} catch (error) {
|
|
63
|
+
throw new TypeScriptMissingError(typescriptVersion(), error);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return loaded;
|
|
67
|
+
}
|