@agent-teams/feature-module-standard 0.2.4 → 0.3.1

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +29 -20
  3. package/dist/features/conformance-fixtures/testing/conformance-case-inputs.d.ts +53 -0
  4. package/dist/features/conformance-fixtures/testing/conformance-case-inputs.d.ts.map +1 -0
  5. package/dist/features/conformance-fixtures/testing/conformance-case-inputs.js +70 -0
  6. package/dist/features/conformance-fixtures/testing/conformance-case-inputs.js.map +1 -0
  7. package/dist/features/conformance-fixtures/testing/conformance-cases-later.d.ts +3 -0
  8. package/dist/features/conformance-fixtures/testing/conformance-cases-later.d.ts.map +1 -0
  9. package/dist/features/conformance-fixtures/testing/conformance-cases-later.js +170 -0
  10. package/dist/features/conformance-fixtures/testing/conformance-cases-later.js.map +1 -0
  11. package/dist/features/conformance-fixtures/testing/conformance-cases.d.ts +3 -16
  12. package/dist/features/conformance-fixtures/testing/conformance-cases.d.ts.map +1 -1
  13. package/dist/features/conformance-fixtures/testing/conformance-cases.js +102 -215
  14. package/dist/features/conformance-fixtures/testing/conformance-cases.js.map +1 -1
  15. package/dist/features/conformance-fixtures/testing/example-sources.d.ts.map +1 -1
  16. package/dist/features/conformance-fixtures/testing/example-sources.js +12 -8
  17. package/dist/features/conformance-fixtures/testing/example-sources.js.map +1 -1
  18. package/dist/features/conformance-fixtures/testing/example-tree.d.ts +8 -8
  19. package/dist/features/conformance-fixtures/testing/example-tree.d.ts.map +1 -1
  20. package/dist/features/conformance-fixtures/testing/example-tree.js +39 -27
  21. package/dist/features/conformance-fixtures/testing/example-tree.js.map +1 -1
  22. package/dist/features/feature-dependencies/application/check-feature-dependencies.d.ts +2 -2
  23. package/dist/features/feature-dependencies/application/check-feature-dependencies.d.ts.map +1 -1
  24. package/dist/features/feature-dependencies/application/check-feature-dependencies.js +88 -56
  25. package/dist/features/feature-dependencies/application/check-feature-dependencies.js.map +1 -1
  26. package/dist/features/feature-dependencies/application/feature-graphs.d.ts.map +1 -1
  27. package/dist/features/feature-dependencies/application/feature-graphs.js +1 -1
  28. package/dist/features/feature-dependencies/application/feature-graphs.js.map +1 -1
  29. package/dist/features/feature-dependencies/application/layer-direction.d.ts +2 -2
  30. package/dist/features/feature-dependencies/application/layer-direction.d.ts.map +1 -1
  31. package/dist/features/feature-dependencies/application/layer-direction.js +17 -11
  32. package/dist/features/feature-dependencies/application/layer-direction.js.map +1 -1
  33. package/dist/features/feature-layout/application/analyze-feature-tree.d.ts +1 -1
  34. package/dist/features/feature-layout/application/analyze-feature-tree.d.ts.map +1 -1
  35. package/dist/features/feature-layout/application/analyze-feature-tree.js +62 -28
  36. package/dist/features/feature-layout/application/analyze-feature-tree.js.map +1 -1
  37. package/dist/features/feature-layout/application/find-overlapping-roots.d.ts.map +1 -1
  38. package/dist/features/feature-layout/application/find-overlapping-roots.js +3 -2
  39. package/dist/features/feature-layout/application/find-overlapping-roots.js.map +1 -1
  40. package/dist/features/feature-layout/application/infer-directory-layout.d.ts +2 -2
  41. package/dist/features/feature-layout/application/infer-directory-layout.d.ts.map +1 -1
  42. package/dist/features/feature-layout/application/infer-directory-layout.js +3 -4
  43. package/dist/features/feature-layout/application/infer-directory-layout.js.map +1 -1
  44. package/dist/features/feature-model/domain/model.d.ts +10 -10
  45. package/dist/features/feature-model/domain/model.d.ts.map +1 -1
  46. package/dist/features/feature-model/domain/model.js +39 -13
  47. package/dist/features/feature-model/domain/model.js.map +1 -1
  48. package/dist/features/module-check/application/check-feature-module.d.ts +1 -1
  49. package/dist/features/module-check/application/check-feature-module.d.ts.map +1 -1
  50. package/dist/features/module-check/application/check-feature-module.js +24 -12
  51. package/dist/features/module-check/application/check-feature-module.js.map +1 -1
  52. package/dist/features/node-runner/application/run-feature-module-check.d.ts +4 -4
  53. package/dist/features/node-runner/application/run-feature-module-check.d.ts.map +1 -1
  54. package/dist/features/node-runner/application/run-feature-module-check.js +58 -24
  55. package/dist/features/node-runner/application/run-feature-module-check.js.map +1 -1
  56. package/dist/features/node-runner/composition/check-feature-module-on-disk.d.ts +1 -1
  57. package/dist/features/node-runner/composition/check-feature-module-on-disk.d.ts.map +1 -1
  58. package/dist/features/node-runner/composition/check-feature-module-on-disk.js +12 -5
  59. package/dist/features/node-runner/composition/check-feature-module-on-disk.js.map +1 -1
  60. package/dist/fixtures.d.ts +4 -4
  61. package/dist/fixtures.d.ts.map +1 -1
  62. package/dist/fixtures.js +3 -3
  63. package/dist/fixtures.js.map +1 -1
  64. package/dist/index.d.ts +12 -12
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +7 -7
  67. package/dist/index.js.map +1 -1
  68. package/dist/node.d.ts +3 -3
  69. package/dist/node.d.ts.map +1 -1
  70. package/dist/node.js +2 -2
  71. package/dist/node.js.map +1 -1
  72. package/package.json +3 -3
@@ -1,55 +1,67 @@
1
- import { inferDirectoryLayout } from '../../feature-layout/application/infer-directory-layout.js';
1
+ import { inferDirectoryLayout } from "../../feature-layout/application/infer-directory-layout.js";
2
2
  /** The informative example tree of Feature Module Standard v1.1, section "Sub-features", as one valid module. */
3
- export const FEATURES_ROOT = 'src/features';
4
- export const TEST_FEATURES_ROOT = 'tests/features';
3
+ export const FEATURES_ROOT = "src/features";
4
+ export const TEST_FEATURES_ROOT = "tests/features";
5
5
  // Identity -> root below the features root; a sub-feature sits in its parent's `features` container.
6
6
  const roots = {
7
- orders: 'orders',
8
- 'orders/pricing': 'orders/features/pricing',
9
- 'orders/discounts': 'orders/features/discounts',
10
- 'orders/discounts/coupons': 'orders/features/discounts/features/coupons',
11
- billing: 'billing',
12
- 'billing/coupons': 'billing/features/coupons',
7
+ orders: "orders",
8
+ "orders/pricing": "orders/features/pricing",
9
+ "orders/discounts": "orders/features/discounts",
10
+ "orders/discounts/coupons": "orders/features/discounts/features/coupons",
11
+ billing: "billing",
12
+ "billing/coupons": "billing/features/coupons",
13
13
  };
14
14
  /** The roots of the example features, for cases that declare them. */
15
15
  export const exampleRoots = Object.values(roots).map((root) => `${FEATURES_ROOT}/${root}`);
16
- const parts = ['public', 'domain', 'application', 'composition', 'contract', 'group'];
16
+ const parts = ["public", "domain", "application", "composition", "contract", "group"];
17
17
  const partPaths = {
18
- public: 'contracts/public.ts',
19
- domain: 'domain/model.ts',
20
- application: 'application/use-case.ts',
21
- composition: 'composition/feature.ts',
22
- contract: 'composition/feature.contracts.ts',
23
- group: 'composition/feature.group.ts',
18
+ public: "contracts/public.ts",
19
+ domain: "domain/model.ts",
20
+ application: "application/use-case.ts",
21
+ composition: "composition/feature.ts",
22
+ contract: "composition/feature.contracts.ts",
23
+ group: "composition/feature.group.ts",
24
24
  };
25
25
  /** The file of one part of an example feature: its public entrypoint, composition code, composition contract and so on. */
26
26
  export const fileOf = (feature, part) => `${FEATURES_ROOT}/${roots[feature]}/${partPaths[part]}`;
27
- export const MODULE_COMPOSITION = 'src/module.ts';
27
+ export const MODULE_COMPOSITION = "src/module.ts";
28
28
  export const roleDirectories = {
29
- contracts: 'contracts', domain: 'domain', application: 'application', adapters: 'adapters', composition: 'composition',
29
+ contracts: "contracts",
30
+ domain: "domain",
31
+ application: "application",
32
+ adapters: "adapters",
33
+ composition: "composition",
30
34
  };
31
- export const importOf = (from, to, mode = 'runtime', reexport = false) => ({ from, to, mode, line: 1, ...(reexport ? { reexport } : {}) });
35
+ export const importOf = (from, to, mode = "runtime", reexport = false) => ({ from, to, mode, line: 1, ...(reexport ? { reexport } : {}) });
32
36
  const features = Object.keys(roots);
33
37
  const parentOf = (feature) => features.filter((candidate) => feature.startsWith(`${candidate}/`)).at(-1);
34
38
  /** A valid module: every parent wires the composition surface of each direct sub-feature, the module wires the top level. */
35
39
  export function exampleModule(namesModuleComposition = true) {
36
- const files = [MODULE_COMPOSITION, ...features.flatMap((feature) => parts.map((part) => fileOf(feature, part)))];
37
- const subFeatureRoots = exampleRoots.filter((root) => root.includes('/features/', FEATURES_ROOT.length + 1));
40
+ const files = [
41
+ MODULE_COMPOSITION,
42
+ ...features.flatMap((feature) => parts.map((part) => fileOf(feature, part))),
43
+ ];
44
+ const subFeatureRoots = exampleRoots.filter((root) => root.includes("/features/", FEATURES_ROOT.length + 1));
38
45
  const assembly = features.flatMap((feature) => {
39
46
  const parent = parentOf(feature);
40
47
  return parent === undefined
41
- ? [importOf(MODULE_COMPOSITION, fileOf(feature, 'group'))]
42
- : [importOf(fileOf(parent, 'composition'), fileOf(feature, 'group'))];
48
+ ? [importOf(MODULE_COMPOSITION, fileOf(feature, "group"))]
49
+ : [importOf(fileOf(parent, "composition"), fileOf(feature, "group"))];
43
50
  });
44
51
  return {
45
- ...inferDirectoryLayout({ featuresRoot: FEATURES_ROOT, files, roleDirectories, subFeatureRoots }),
52
+ ...inferDirectoryLayout({
53
+ featuresRoot: FEATURES_ROOT,
54
+ files,
55
+ roleDirectories,
56
+ subFeatureRoots,
57
+ }),
46
58
  files,
47
59
  ...(namesModuleComposition ? { moduleComposition: [MODULE_COMPOSITION] } : {}),
48
60
  testFeaturesRoot: TEST_FEATURES_ROOT,
49
61
  surfaces: {
50
- public: features.map((feature) => fileOf(feature, 'public')),
51
- compositionContract: features.map((feature) => fileOf(feature, 'contract')),
52
- compositionSurface: features.map((feature) => fileOf(feature, 'group')),
62
+ public: features.map((feature) => fileOf(feature, "public")),
63
+ compositionContract: features.map((feature) => fileOf(feature, "contract")),
64
+ compositionSurface: features.map((feature) => fileOf(feature, "group")),
53
65
  },
54
66
  imports: assembly,
55
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"example-tree.js","sourceRoot":"","sources":["../../../../src/features/conformance-fixtures/testing/example-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example-tree.js","sourceRoot":"","sources":["../../../../src/features/conformance-fixtures/testing/example-tree.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Diagnostic, FeatureModuleInput } from '../../feature-model/domain/model.js';
2
- import type { FeatureTree } from '../../feature-layout/application/analyze-feature-tree.js';
1
+ import type { Diagnostic, FeatureModuleInput } from "../../feature-model/domain/model.js";
2
+ import type { FeatureTree } from "../../feature-layout/application/analyze-feature-tree.js";
3
3
  /** Edge rules: visibility, curated surfaces, layer direction, composition contracts, assembly, republication, cycles. */
4
4
  export declare function checkFeatureDependencies(input: FeatureModuleInput, tree: FeatureTree): readonly Diagnostic[];
5
5
  //# sourceMappingURL=check-feature-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-feature-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/check-feature-dependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAAE,kBAAkB,EAC/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAC;AAmN5F,yHAAyH;AACzH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CA+B5G"}
1
+ {"version":3,"file":"check-feature-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/check-feature-dependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAKnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAC;AA6Y5F,yHAAyH;AACzH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,WAAW,GAChB,SAAS,UAAU,EAAE,CAyDvB"}
@@ -1,25 +1,30 @@
1
- import { diagnostic, isPortablePath } from '../../feature-model/domain/model.js';
2
- import { cyclicComponents, findCycles } from './feature-graphs.js';
3
- import { layerDirectionAllowed } from './layer-direction.js';
1
+ import { diagnostic, isPortablePath } from "../../feature-model/domain/model.js";
2
+ import { cyclicComponents, findCycles } from "./feature-graphs.js";
3
+ import { layerDirectionAllowed } from "./layer-direction.js";
4
4
  const isAncestor = (ancestor, node) => node.id.startsWith(`${ancestor.id}/`);
5
5
  // A top-level feature is visible to the module; a sub-feature to its parent and the parent's descendants.
6
- const visible = (from, to) => to.parent === undefined || (from !== undefined && (from.id === to.parent || from.id.startsWith(`${to.parent}/`)));
7
- const directionOf = (from, to) => isAncestor(to, from) ? 'upward' : to.parent === from.id ? 'downward' : 'lateral';
8
- const pairKey = (...parts) => parts.join('\u0000');
6
+ const visible = (from, to) => to.parent === undefined ||
7
+ (from !== undefined && (from.id === to.parent || from.id.startsWith(`${to.parent}/`)));
8
+ const directionOf = (from, to) => isAncestor(to, from) ? "upward" : to.parent === from.id ? "downward" : "lateral";
9
+ const pairKey = (...parts) => parts.join("\u0000");
9
10
  function indexSurfaces(input, tree, problems) {
10
11
  const index = new Map();
11
12
  const mapped = [
12
- ['public', input.surfaces?.public], ['internal-api', input.surfaces?.internalApi],
13
- ['composition-contract', input.surfaces?.compositionContract], ['composition-surface', input.surfaces?.compositionSurface],
14
- ['testing', input.surfaces?.testing],
13
+ ["public", input.surfaces?.public],
14
+ ["internal-api", input.surfaces?.internalApi],
15
+ ["composition-contract", input.surfaces?.compositionContract],
16
+ ["composition-surface", input.surfaces?.compositionSurface],
17
+ ["testing", input.surfaces?.testing],
15
18
  ];
16
19
  for (const [kind, files] of mapped) {
17
20
  for (const file of files ?? []) {
18
21
  if (tree.ownerOf(file) === undefined) {
19
- problems.push(diagnostic('surface-unowned', `${file}: a ${kind} surface file belongs to no feature.`, { path: file }));
22
+ problems.push(diagnostic("surface-unowned", `${file}: a ${kind} surface file belongs to no feature.`, {
23
+ path: file,
24
+ }));
20
25
  }
21
- if (kind === 'composition-contract' && tree.roleOf(file) !== 'composition') {
22
- problems.push(diagnostic('composition-contract-misplaced', `${file}: a composition contract is composition code of its feature.`, { path: file }));
26
+ if (kind === "composition-contract" && tree.roleOf(file) !== "composition") {
27
+ problems.push(diagnostic("composition-contract-misplaced", `${file}: a composition contract is composition code of its feature.`, { path: file }));
23
28
  }
24
29
  index.set(file, (index.get(file) ?? new Set()).add(kind));
25
30
  }
@@ -27,68 +32,80 @@ function indexSurfaces(input, tree, problems) {
27
32
  return index;
28
33
  }
29
34
  const arrow = ({ record }) => `${record.from} -> ${record.to}`;
30
- const at = ({ record }) => ({ path: record.from, line: record.line });
35
+ const at = ({ record }) => ({
36
+ path: record.from,
37
+ line: record.line,
38
+ });
31
39
  function sameFeatureEdge(ctx, view) {
32
40
  const { fromRole, toRole } = view;
33
- if (view.kinds.has('composition-contract') && fromRole !== 'composition') {
34
- ctx.problems.push(diagnostic('composition-contract-layer', `${arrow(view)}: only composition code may depend on a composition contract, its own feature's included.`, at(view)));
41
+ if (view.kinds.has("composition-contract") && fromRole !== "composition") {
42
+ ctx.problems.push(diagnostic("composition-contract-layer", `${arrow(view)}: only composition code may depend on a composition contract, its own feature's included.`, at(view)));
35
43
  }
36
- else if (fromRole !== undefined && toRole !== undefined && !layerDirectionAllowed(fromRole, toRole, 'same-feature')) {
37
- ctx.problems.push(diagnostic('layer-direction', `${arrow(view)}: ${fromRole} cannot import ${toRole}.`, at(view)));
44
+ else if (fromRole !== undefined &&
45
+ toRole !== undefined &&
46
+ !layerDirectionAllowed(fromRole, toRole, "same-feature")) {
47
+ ctx.problems.push(diagnostic("layer-direction", `${arrow(view)}: ${fromRole} cannot import ${toRole}.`, at(view)));
38
48
  }
39
49
  }
40
- const republishable = (kinds) => ['public', 'composition-contract'].filter((kind) => kinds?.has(kind) === true);
50
+ const republishable = (kinds) => ["public", "composition-contract"].filter((kind) => kinds?.has(kind) === true);
41
51
  // A re-export from a public or composition-contract surface to such a surface is a republication, never a use edge.
42
52
  function republication(ctx, view) {
43
53
  const { record, from, to, kinds } = view;
44
54
  const own = republishable(ctx.surfaces.get(record.from));
45
55
  const target = republishable(kinds);
46
- if (!ctx.nested || from === undefined || record.reexport !== true || own.length === 0 || target.length === 0) {
56
+ if (!ctx.nested ||
57
+ from === undefined ||
58
+ record.reexport !== true ||
59
+ own.length === 0 ||
60
+ target.length === 0) {
47
61
  return false;
48
62
  }
49
63
  const surface = own.find((kind) => target.includes(kind));
50
64
  if (to.parent !== from.id) {
51
65
  ctx.problems.push(isAncestor(from, to)
52
- ? diagnostic('republication-skips-level', `${arrow(view)}: ${from.id} republishes only from its direct sub-features, not from ${to.id}.`, at(view))
53
- : diagnostic('republication-not-sub-feature', `${arrow(view)}: ${from.id} republishes only from its direct sub-features, and ${to.id} is not one.`, at(view)));
66
+ ? diagnostic("republication-skips-level", `${arrow(view)}: ${from.id} republishes only from its direct sub-features, not from ${to.id}.`, at(view))
67
+ : diagnostic("republication-not-sub-feature", `${arrow(view)}: ${from.id} republishes only from its direct sub-features, and ${to.id} is not one.`, at(view)));
54
68
  }
55
69
  else if (surface === undefined) {
56
- ctx.problems.push(diagnostic('republication-mismatch', `${arrow(view)}: a republication re-exports the same surface of its parent, not another one.`, at(view)));
70
+ ctx.problems.push(diagnostic("republication-mismatch", `${arrow(view)}: a republication re-exports the same surface of its parent, not another one.`, at(view)));
57
71
  }
58
72
  else if (!ctx.republished.has(pairKey(from.id, to.id, surface))) {
59
- ctx.problems.push(diagnostic('republication-undeclared', `${arrow(view)}: ${from.id} republishes the ${surface} of ${to.id} without a declaration.`, at(view)));
73
+ ctx.problems.push(diagnostic("republication-undeclared", `${arrow(view)}: ${from.id} republishes the ${surface} of ${to.id} without a declaration.`, at(view)));
60
74
  }
61
75
  return true;
62
76
  }
63
77
  // Composition code is the composition role of a feature and, outside every feature, the module-level files the profile names.
64
- const composes = (ctx, view) => view.fromRole === 'composition' ||
78
+ const composes = (ctx, view) => view.fromRole === "composition" ||
65
79
  (view.from === undefined && ctx.input.moduleComposition?.includes(view.record.from) === true);
66
80
  function assemblyEdge(ctx, view) {
67
81
  const { from, to } = view;
68
82
  if (to.parent === undefined) {
69
83
  if (!composes(ctx, view)) {
70
- ctx.problems.push(diagnostic('deep-import', `${arrow(view)}: only composition code wires the composition surface of ${to.id}.`, at(view)));
84
+ ctx.problems.push(diagnostic("deep-import", `${arrow(view)}: only composition code wires the composition surface of ${to.id}.`, at(view)));
71
85
  }
72
86
  return;
73
87
  }
74
- if (from?.id === to.parent && view.fromRole === 'composition') {
75
- if (view.record.mode === 'runtime') {
88
+ if (from?.id === to.parent && view.fromRole === "composition") {
89
+ if (view.record.mode === "runtime") {
76
90
  ctx.wired.add(to.id);
77
91
  }
78
92
  return;
79
93
  }
80
- ctx.problems.push(diagnostic('assembly-misplaced', `${arrow(view)}: only the feature composition of ${to.parent} wires ${to.id}.`, at(view)));
94
+ ctx.problems.push(diagnostic("assembly-misplaced", `${arrow(view)}: only the feature composition of ${to.parent} wires ${to.id}.`, at(view)));
81
95
  }
82
96
  function layerOfUse(ctx, view) {
83
97
  const { from, fromRole, kinds } = view;
84
- if (kinds.has('composition-contract') && !composes(ctx, view)) {
85
- ctx.problems.push(diagnostic('composition-contract-layer', `${arrow(view)}: only composition code may depend on a composition contract.`, at(view)));
98
+ if (kinds.has("composition-contract") && !composes(ctx, view)) {
99
+ ctx.problems.push(diagnostic("composition-contract-layer", `${arrow(view)}: only composition code may depend on a composition contract.`, at(view)));
86
100
  return;
87
101
  }
88
102
  // A public entrypoint outside any role directory is still a transport contract surface.
89
- const target = view.toRole ?? (kinds.has('public') ? 'contracts' : undefined);
90
- if (from !== undefined && fromRole !== undefined && target !== undefined && !layerDirectionAllowed(fromRole, target, 'other-feature')) {
91
- ctx.problems.push(diagnostic('layer-direction', `${arrow(view)}: ${fromRole} cannot import ${target} of another feature.`, at(view)));
103
+ const target = view.toRole ?? (kinds.has("public") ? "contracts" : undefined);
104
+ if (from !== undefined &&
105
+ fromRole !== undefined &&
106
+ target !== undefined &&
107
+ !layerDirectionAllowed(fromRole, target, "other-feature")) {
108
+ ctx.problems.push(diagnostic("layer-direction", `${arrow(view)}: ${fromRole} cannot import ${target} of another feature.`, at(view)));
92
109
  }
93
110
  }
94
111
  function recordUse(ctx, view, from, declared = true) {
@@ -96,28 +113,32 @@ function recordUse(ctx, view, from, declared = true) {
96
113
  if (!ctx.uses.has(key)) {
97
114
  ctx.uses.set(key, { from, to: view.to, direction: directionOf(from, view.to), ...at(view) });
98
115
  }
99
- if (declared && ctx.input.useEdges !== undefined && !ctx.input.useEdges.some((edge) => edge.from === from.id && edge.to === view.to.id)) {
100
- ctx.problems.push(diagnostic('use-undeclared', `${from.id} -> ${view.to.id}: a use edge missing from the declared feature graph.`, at(view)));
116
+ if (declared &&
117
+ ctx.input.useEdges !== undefined &&
118
+ !ctx.input.useEdges.some((edge) => edge.from === from.id && edge.to === view.to.id)) {
119
+ ctx.problems.push(diagnostic("use-undeclared", `${from.id} -> ${view.to.id}: a use edge missing from the declared feature graph.`, at(view)));
101
120
  }
102
121
  }
103
122
  function crossFeatureEdge(ctx, view) {
104
123
  if (republication(ctx, view)) {
105
124
  return;
106
125
  }
107
- const assembly = view.kinds.has('composition-surface');
126
+ const assembly = view.kinds.has("composition-surface");
108
127
  if (assembly) {
109
128
  assemblyEdge(ctx, view);
110
129
  }
111
- const curated = view.kinds.has('public') || view.kinds.has('internal-api') || view.kinds.has('composition-contract');
130
+ const curated = view.kinds.has("public") ||
131
+ view.kinds.has("internal-api") ||
132
+ view.kinds.has("composition-contract");
112
133
  if (!curated && assembly) {
113
134
  return;
114
135
  }
115
136
  if (!visible(view.from, view.to)) {
116
- ctx.problems.push(diagnostic('not-visible', `${arrow(view)}: ${view.to.id} is not visible to its dependent.`, at(view)));
137
+ ctx.problems.push(diagnostic("not-visible", `${arrow(view)}: ${view.to.id} is not visible to its dependent.`, at(view)));
117
138
  }
118
139
  else if (!curated) {
119
140
  // A deep import breaks the surface rule and may break the direction rule too; both are reported.
120
- ctx.problems.push(diagnostic('deep-import', `${arrow(view)}: not a curated surface of ${view.to.id}.`, at(view)));
141
+ ctx.problems.push(diagnostic("deep-import", `${arrow(view)}: not a curated surface of ${view.to.id}.`, at(view)));
121
142
  layerOfUse(ctx, view);
122
143
  // The edge still exists: it counts for cycles, though it needs no declaration to be rejected.
123
144
  if (view.from !== undefined) {
@@ -141,55 +162,57 @@ function testEdge(ctx, record, owner, to) {
141
162
  const where = { path: record.from, line: record.line };
142
163
  const arrowText = `${record.from} -> ${record.to}`;
143
164
  if (!visible(owner, to)) {
144
- ctx.problems.push(diagnostic('not-visible', `${arrowText}: ${to.id} is not visible to a test of ${owner.id}.`, where));
165
+ ctx.problems.push(diagnostic("not-visible", `${arrowText}: ${to.id} is not visible to a test of ${owner.id}.`, where));
145
166
  }
146
- else if (!(kinds.has('public') || kinds.has('internal-api') || kinds.has('testing'))) {
147
- ctx.problems.push(diagnostic('deep-import', `${arrowText}: a test of ${owner.id} uses only public, internal API and testing surfaces of ${to.id}.`, where));
167
+ else if (!(kinds.has("public") || kinds.has("internal-api") || kinds.has("testing"))) {
168
+ ctx.problems.push(diagnostic("deep-import", `${arrowText}: a test of ${owner.id} uses only public, internal API and testing surfaces of ${to.id}.`, where));
148
169
  }
149
170
  }
150
171
  function checkDeclarations(ctx) {
151
172
  const { input, tree, problems } = ctx;
152
173
  for (const { from, to, surface } of input.republications ?? []) {
153
174
  if (tree.node(to)?.parent !== from || tree.node(from) === undefined) {
154
- problems.push(diagnostic('republication-invalid', `${from} -> ${to}: ${surface} republication is declared from a direct sub-feature only.`));
175
+ problems.push(diagnostic("republication-invalid", `${from} -> ${to}: ${surface} republication is declared from a direct sub-feature only.`));
155
176
  }
156
177
  }
157
178
  const declared = [];
158
179
  for (const { from, to } of input.useEdges ?? []) {
159
180
  const [source, target] = [tree.node(from), tree.node(to)];
160
181
  if (source === undefined || target === undefined) {
161
- problems.push(diagnostic('use-edge-invalid', `${from} -> ${to}: a declared use edge names an unknown feature.`));
182
+ problems.push(diagnostic("use-edge-invalid", `${from} -> ${to}: a declared use edge names an unknown feature.`));
162
183
  }
163
184
  else if (!visible(source, target)) {
164
- problems.push(diagnostic('not-visible', `${from} -> ${to}: ${to} is not visible to ${from}.`));
185
+ problems.push(diagnostic("not-visible", `${from} -> ${to}: ${to} is not visible to ${from}.`));
165
186
  }
166
- else if (directionOf(source, target) !== 'upward') {
187
+ else if (directionOf(source, target) !== "upward") {
167
188
  declared.push([from, to]);
168
189
  }
169
190
  }
170
191
  for (const cycle of findCycles(declared)) {
171
- problems.push(diagnostic('feature-cycle', `Declared feature graph: ${cycle.join(' -> ')}`));
192
+ problems.push(diagnostic("feature-cycle", `Declared feature graph: ${cycle.join(" -> ")}`));
172
193
  }
173
194
  }
174
195
  function checkGraphs(ctx, loadEdges) {
175
196
  // Upward edges are outside the cycle graph; runtime and type-only references count alike.
176
- const observed = [...ctx.uses.values()].filter((edge) => edge.direction !== 'upward').map((edge) => [edge.from.id, edge.to.id]);
197
+ const observed = [...ctx.uses.values()]
198
+ .filter((edge) => edge.direction !== "upward")
199
+ .map((edge) => [edge.from.id, edge.to.id]);
177
200
  for (const cycle of findCycles(observed)) {
178
- ctx.problems.push(diagnostic('feature-cycle', `Observed feature graph: ${cycle.join(' -> ')}`));
201
+ ctx.problems.push(diagnostic("feature-cycle", `Observed feature graph: ${cycle.join(" -> ")}`));
179
202
  }
180
203
  for (const component of cyclicComponents(loadEdges)) {
181
204
  const owners = new Set(component.map((file) => ctx.tree.ownerOf(file)?.id));
182
205
  if (owners.size > 1) {
183
- ctx.problems.push(diagnostic('load-cycle', `Load-time import cycle between features: ${component.join(', ')}`, { path: component[0] ?? '' }));
206
+ ctx.problems.push(diagnostic("load-cycle", `Load-time import cycle between features: ${component.join(", ")}`, { path: component[0] ?? "" }));
184
207
  }
185
208
  }
186
209
  for (const node of ctx.tree.nodes) {
187
210
  if (node.parent === undefined) {
188
211
  continue;
189
212
  }
190
- const exposes = [...ctx.surfaces].some(([file, kinds]) => kinds.has('composition-surface') && ctx.tree.ownerOf(file) === node);
213
+ const exposes = [...ctx.surfaces].some(([file, kinds]) => kinds.has("composition-surface") && ctx.tree.ownerOf(file) === node);
191
214
  if (exposes && !ctx.wired.has(node.id)) {
192
- ctx.problems.push(diagnostic('assembly-missing', `${node.id}: its composition surface is not wired by the feature composition of ${node.parent}.`, { path: node.root }));
215
+ ctx.problems.push(diagnostic("assembly-missing", `${node.id}: its composition surface is not wired by the feature composition of ${node.parent}.`, { path: node.root }));
193
216
  }
194
217
  }
195
218
  }
@@ -197,7 +220,12 @@ function checkGraphs(ctx, loadEdges) {
197
220
  export function checkFeatureDependencies(input, tree) {
198
221
  const problems = [];
199
222
  const ctx = {
200
- input, tree, problems, surfaces: indexSurfaces(input, tree, problems), uses: new Map(), wired: new Set(),
223
+ input,
224
+ tree,
225
+ problems,
226
+ surfaces: indexSurfaces(input, tree, problems),
227
+ uses: new Map(),
228
+ wired: new Set(),
201
229
  nested: tree.nodes.some((node) => node.parent !== undefined),
202
230
  republished: new Set((input.republications ?? []).map(({ from, to, surface }) => pairKey(from, to, surface))),
203
231
  };
@@ -205,7 +233,7 @@ export function checkFeatureDependencies(input, tree) {
205
233
  const testFiles = new Set(input.testFiles ?? []);
206
234
  for (const record of input.imports) {
207
235
  if (!isPortablePath(record.from) || !isPortablePath(record.to)) {
208
- problems.push(diagnostic('invalid-path', `${record.from} -> ${record.to}: not a repository-relative path with / separators.`));
236
+ problems.push(diagnostic("invalid-path", `${record.from} -> ${record.to}: not a repository-relative path with / separators.`));
209
237
  continue;
210
238
  }
211
239
  const [from, to] = [tree.ownerOf(record.from), tree.ownerOf(record.to)];
@@ -219,11 +247,15 @@ export function checkFeatureDependencies(input, tree) {
219
247
  }
220
248
  continue;
221
249
  }
222
- if (record.mode === 'runtime' && from !== undefined) {
250
+ if (record.mode === "runtime" && from !== undefined) {
223
251
  loadEdges.push([record.from, record.to]);
224
252
  }
225
253
  const view = {
226
- record, from, to, fromRole: tree.roleOf(record.from), toRole: tree.roleOf(record.to),
254
+ record,
255
+ from,
256
+ to,
257
+ fromRole: tree.roleOf(record.from),
258
+ toRole: tree.roleOf(record.to),
227
259
  kinds: ctx.surfaces.get(record.to) ?? new Set(),
228
260
  };
229
261
  if (from === to) {
@@ -1 +1 @@
1
- {"version":3,"file":"check-feature-dependencies.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/check-feature-dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-feature-dependencies.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/check-feature-dependencies.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-graphs.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/feature-graphs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAEvD,oHAAoH;AACpH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,EAAE,CAoB5D;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,CA+CnE"}
1
+ {"version":3,"file":"feature-graphs.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/feature-graphs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAEvD,oHAAoH;AACpH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,EAAE,CA+B5D;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,CAyDnE"}
@@ -89,6 +89,6 @@ export function cyclicComponents(edges) {
89
89
  }
90
90
  }
91
91
  }
92
- return components.toSorted((a, b) => ((a[0] ?? '') < (b[0] ?? '') ? -1 : 1));
92
+ return components.toSorted((a, b) => ((a[0] ?? "") < (b[0] ?? "") ? -1 : 1));
93
93
  }
94
94
  //# sourceMappingURL=feature-graphs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-graphs.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/feature-graphs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-graphs.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/feature-graphs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { LayerRole } from '../../feature-model/domain/model.js';
1
+ import type { LayerRole } from "../../feature-model/domain/model.js";
2
2
  /** `same-feature` is the dependency direction inside one feature; `other-feature` the one toward a visible curated surface of another. */
3
- export type LayerScope = 'same-feature' | 'other-feature';
3
+ export type LayerScope = "same-feature" | "other-feature";
4
4
  export declare function layerDirectionAllowed(from: LayerRole, to: LayerRole, scope: LayerScope): boolean;
5
5
  //# sourceMappingURL=layer-direction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layer-direction.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/layer-direction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE,0IAA0I;AAC1I,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AA6B1D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAGhG"}
1
+ {"version":3,"file":"layer-direction.d.ts","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/layer-direction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE,0IAA0I;AAC1I,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAmC1D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAGhG"}
@@ -1,23 +1,29 @@
1
- const production = ['domain', 'application', 'contracts', 'adapters', 'composition'];
2
- const everything = [...production, 'testing'];
1
+ const production = [
2
+ "domain",
3
+ "application",
4
+ "contracts",
5
+ "adapters",
6
+ "composition",
7
+ ];
8
+ const everything = [...production, "testing"];
3
9
  // The base direction rules of FMS v1 for the abstract roles, as one fixed table. A profile can only strengthen them:
4
10
  // domain and application never import contracts; adapters reach sibling features through their own application core
5
11
  // and composition; composition wires across layers; a feature's own testing layer stays out of its production code,
6
12
  // while composition may reach the curated qualification surface of another feature. The kernel takes no profile
7
13
  // input here, so a repository that needs a stricter table applies it on top of this answer.
8
14
  const targets = {
9
- 'same-feature': {
10
- domain: ['domain'],
11
- application: ['domain', 'application'],
12
- contracts: ['contracts'],
13
- adapters: ['adapters', 'application', 'domain', 'contracts'],
15
+ "same-feature": {
16
+ domain: ["domain"],
17
+ application: ["domain", "application"],
18
+ contracts: ["contracts"],
19
+ adapters: ["adapters", "application", "domain", "contracts"],
14
20
  composition: production,
15
21
  testing: everything,
16
22
  },
17
- 'other-feature': {
18
- domain: ['domain'],
19
- application: ['domain', 'application'],
20
- contracts: ['contracts'],
23
+ "other-feature": {
24
+ domain: ["domain"],
25
+ application: ["domain", "application"],
26
+ contracts: ["contracts"],
21
27
  adapters: [],
22
28
  composition: everything,
23
29
  testing: everything,
@@ -1 +1 @@
1
- {"version":3,"file":"layer-direction.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/layer-direction.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAyB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3G,MAAM,UAAU,GAAyB,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC;AAEpE,qHAAqH;AACrH,oHAAoH;AACpH,oHAAoH;AACpH,gHAAgH;AAChH,4FAA4F;AAC5F,MAAM,OAAO,GAA8E;IACzF,cAAc,EAAE;QACd,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtC,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC5D,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,UAAU;KACpB;IACD,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtC,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,UAAU;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,IAAe,EAAE,EAAa,EAAE,KAAiB;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"layer-direction.js","sourceRoot":"","sources":["../../../../src/features/feature-dependencies/application/layer-direction.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAyB;IACvC,QAAQ;IACR,aAAa;IACb,WAAW;IACX,UAAU;IACV,aAAa;CACd,CAAC;AACF,MAAM,UAAU,GAAyB,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC;AAEpE,qHAAqH;AACrH,oHAAoH;AACpH,oHAAoH;AACpH,gHAAgH;AAChH,4FAA4F;AAC5F,MAAM,OAAO,GAA8E;IACzF,cAAc,EAAE;QACd,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtC,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC5D,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,UAAU;KACpB;IACD,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtC,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,UAAU;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,IAAe,EAAE,EAAa,EAAE,KAAiB;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC"}