@hozu/validator 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +8 -2
- package/dist/contracts/verify.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/rules/seed.d.ts +3 -0
- package/dist/rules/seed.d.ts.map +1 -0
- package/dist/rules/seed.js +29 -0
- package/dist/rules/seed.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/contracts/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAoC,MAAM,eAAe,CAAA;AAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAwB,KAAK,QAAQ,EAAU,MAAM,WAAW,CAAA;AAuBvE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,UAAQ,GACb,QAAQ,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/contracts/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAoC,MAAM,eAAe,CAAA;AAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAwB,KAAK,QAAQ,EAAU,MAAM,WAAW,CAAA;AAuBvE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,UAAQ,GACb,QAAQ,CA+EV"}
|
package/dist/contracts/verify.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join, routeTable } from '@hozu/core/ir';
|
|
2
2
|
import { compileMachine } from '@hozu/machine';
|
|
3
3
|
import { drift, lockOf } from './lock.js';
|
|
4
|
-
import { isMechanical } from './mechanical.js';
|
|
4
|
+
import { isMechanical, locate } from './mechanical.js';
|
|
5
5
|
import { runContract } from './run.js';
|
|
6
6
|
import { skeleton } from './skeleton.js';
|
|
7
7
|
const transitionPointer = (feature, id) => join('', 'features', feature, 'machine', 'states', ...id.split('/'));
|
|
@@ -37,8 +37,14 @@ export function verifyContracts(ctx, bindings, lock, accept = false) {
|
|
|
37
37
|
patch: null,
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
+
const shape = (id) => {
|
|
41
|
+
const kind = id.split('/').slice(1, -1).join('/');
|
|
42
|
+
const { from, transition } = locate(feature, id);
|
|
43
|
+
return `${kind} ${JSON.stringify({ ...transition, target: transition.target === from ? '@self' : transition.target })}`;
|
|
44
|
+
};
|
|
45
|
+
const coveredShapes = new Set([...cov].filter(([, c]) => c.size > 0).map(([id]) => shape(id)));
|
|
40
46
|
for (const [id, contracts] of cov)
|
|
41
|
-
if (contracts.size === 0 && !isMechanical(feature, id))
|
|
47
|
+
if (contracts.size === 0 && !isMechanical(feature, id) && !coveredShapes.has(shape(id)))
|
|
42
48
|
ctx.report('HZ016', feature.id, transitionPointer(feature.id, id), `Transition ${id} is not covered by any contract`, 'It makes a decision (a guard, a navigation or a computed value), so a contract must specify it (ADR 0037). Transitions that only copy values are reviewed through the lock instead.', {
|
|
43
49
|
summary: `Add a contract that fires ${id}`,
|
|
44
50
|
snippet: skeleton(ctx.ir, feature, id),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/contracts/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAwB,cAAc,EAAE,MAAM,eAAe,CAAA;AAEpE,OAAO,EAAiB,KAAK,EAAiB,MAAM,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/contracts/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAyBnD,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAyChD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,CAejF;AAED,eAAO,MAAM,QAAQ,OAAQ,SAAS,YAAW,eAAe,KAAQ,UAAU,EACjD,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,7 @@ import { offlinePage } from './rules/pwa.js';
|
|
|
18
18
|
import { featureLinks, references, routes } from './rules/refs.js';
|
|
19
19
|
import { rendering } from './rules/rendering.js';
|
|
20
20
|
import { routeParams, searchSchemas } from './rules/routes.js';
|
|
21
|
+
import { seed } from './rules/seed.js';
|
|
21
22
|
import { deadEnds, reachability, shadowing, stateNames } from './rules/states.js';
|
|
22
23
|
import { domText } from './rules/text.js';
|
|
23
24
|
import { widgetEvents } from './rules/widgets.js';
|
|
@@ -27,6 +28,7 @@ export { impact, UnknownSymbolError } from './impact.js';
|
|
|
27
28
|
export { closest, distance } from './suggest.js';
|
|
28
29
|
const rules = [
|
|
29
30
|
endpoints,
|
|
31
|
+
seed,
|
|
30
32
|
featureLinks,
|
|
31
33
|
references,
|
|
32
34
|
routes,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/rules/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAIxC,wBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,QAqC5B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { schemaIn } from '../env.js';
|
|
2
|
+
import { featurePointer } from '../walk.js';
|
|
3
|
+
export function seed(ctx) {
|
|
4
|
+
for (const f of Object.values(ctx.ir.features))
|
|
5
|
+
for (const [sym, v] of Object.entries(f.views)) {
|
|
6
|
+
if (!v.seed || !f.machine)
|
|
7
|
+
continue;
|
|
8
|
+
const context = schemaIn(f, f.machine.context);
|
|
9
|
+
if (!context)
|
|
10
|
+
continue;
|
|
11
|
+
const fields = Object.keys(context.properties ?? {});
|
|
12
|
+
for (const key of Object.keys(v.seed))
|
|
13
|
+
if (!fields.includes(key))
|
|
14
|
+
ctx.report('HZ048', f.id, featurePointer(f.id, 'views', sym, 'seed', key), `seed sets "${key}", which is not a context field of ${f.id}`, 'seed replaces top-level fields of initialContext.', { summary: `Seed one of: ${fields.join(', ')}`, snippet: null, patch: null });
|
|
15
|
+
}
|
|
16
|
+
for (const [route, page] of Object.entries(ctx.ir.pages)) {
|
|
17
|
+
const byMachine = new Map();
|
|
18
|
+
for (const ref of page.views) {
|
|
19
|
+
const dot = ref.indexOf('.');
|
|
20
|
+
const view = ctx.ir.features[ref.slice(0, dot)]?.views[ref.slice(dot + 1)];
|
|
21
|
+
if (view?.seed && view.machine)
|
|
22
|
+
byMachine.set(view.machine, [...(byMachine.get(view.machine) ?? []), ref]);
|
|
23
|
+
}
|
|
24
|
+
for (const [machine, views] of byMachine)
|
|
25
|
+
if (views.length > 1)
|
|
26
|
+
ctx.report('HZ048', machine, featurePointer(machine, 'views', views[1].slice(views[1].indexOf('.') + 1), 'seed'), `Page ${route} lists ${views.join(' and ')}, which both seed the ${machine} machine`, 'A page creates one machine per feature, so only one of its views may seed it.', { summary: `Keep seed on one view (${views[0]})`, snippet: null, patch: null });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/rules/seed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hozu/validator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Hozu validator: structured diagnostics with fixes, contract runner and behaviour lock",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hozu",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@hozu/core": "0.
|
|
43
|
-
"@hozu/compiler": "0.
|
|
42
|
+
"@hozu/core": "0.7.0",
|
|
43
|
+
"@hozu/compiler": "0.7.0"
|
|
44
44
|
},
|
|
45
45
|
"sideEffects": false
|
|
46
46
|
}
|