laymos 0.0.1 → 0.0.2
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/README.md +137 -710
- package/bin/laymos.mjs +2 -0
- package/dist/architecture/analyze-project/analyze-project.d.ts +9 -0
- package/dist/architecture/analyze-project/analyze-project.d.ts.map +1 -0
- package/dist/architecture/analyze-project/analyze-project.js +47 -0
- package/dist/architecture/analyze-project/index.d.ts +3 -0
- package/dist/architecture/analyze-project/index.d.ts.map +1 -0
- package/dist/architecture/analyze-project/index.js +1 -0
- package/dist/architecture/build-report/build-report.d.ts +7 -0
- package/dist/architecture/build-report/build-report.d.ts.map +1 -0
- package/dist/{engine/4-emit/emit.js → architecture/build-report/build-report.js} +12 -9
- package/dist/architecture/build-report/index.d.ts +2 -0
- package/dist/architecture/build-report/index.d.ts.map +1 -0
- package/dist/architecture/build-report/index.js +1 -0
- package/dist/architecture/errors.d.ts +11 -0
- package/dist/architecture/errors.d.ts.map +1 -0
- package/dist/{engine → architecture}/errors.js +0 -2
- package/dist/{engine/1-extract/extract.d.ts → architecture/extract-dependencies/extract-dependencies.d.ts} +1 -1
- package/dist/architecture/extract-dependencies/extract-dependencies.d.ts.map +1 -0
- package/dist/{engine/1-extract/extract.js → architecture/extract-dependencies/extract-dependencies.js} +13 -11
- package/dist/architecture/extract-dependencies/index.d.ts +3 -0
- package/dist/architecture/extract-dependencies/index.d.ts.map +1 -0
- package/dist/architecture/extract-dependencies/index.js +1 -0
- package/dist/architecture/resolve-architecture/index.d.ts +3 -0
- package/dist/architecture/resolve-architecture/index.d.ts.map +1 -0
- package/dist/architecture/resolve-architecture/index.js +1 -0
- package/dist/{engine/2-resolve/resolve.d.ts → architecture/resolve-architecture/resolve-architecture.d.ts} +2 -2
- package/dist/architecture/resolve-architecture/resolve-architecture.d.ts.map +1 -0
- package/dist/{engine/2-resolve/resolve.js → architecture/resolve-architecture/resolve-architecture.js} +1 -1
- package/dist/architecture/validate-rules/index.d.ts +3 -0
- package/dist/architecture/validate-rules/index.d.ts.map +1 -0
- package/dist/architecture/validate-rules/index.js +1 -0
- package/dist/{engine/3-evaluate/evaluate.d.ts → architecture/validate-rules/validate-rules.d.ts} +4 -4
- package/dist/architecture/validate-rules/validate-rules.d.ts.map +1 -0
- package/dist/{engine/3-evaluate/evaluate.js → architecture/validate-rules/validate-rules.js} +2 -2
- package/dist/architecture-analysis-schema/architecture-analysis-schema.d.ts +109 -0
- package/dist/architecture-analysis-schema/architecture-analysis-schema.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/architecture-analysis-schema.js +10 -0
- package/dist/architecture-analysis-schema/index.d.ts +7 -0
- package/dist/architecture-analysis-schema/index.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/index.js +3 -0
- package/dist/architecture-analysis-schema/layer-analysis-schema.d.ts +27 -0
- package/dist/architecture-analysis-schema/layer-analysis-schema.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/layer-analysis-schema.js +18 -0
- package/dist/architecture-analysis-schema/module-analysis-schema.d.ts +150 -0
- package/dist/architecture-analysis-schema/module-analysis-schema.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/module-analysis-schema.js +96 -0
- package/dist/architecture-analysis-schema/module-source-schema.d.ts +16 -0
- package/dist/architecture-analysis-schema/module-source-schema.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/module-source-schema.js +10 -0
- package/dist/architecture-analysis-schema/project-config-schema.d.ts +51 -0
- package/dist/architecture-analysis-schema/project-config-schema.d.ts.map +1 -0
- package/dist/architecture-analysis-schema/project-config-schema.js +110 -0
- package/dist/change-set-schema/change-set-schema.d.ts +55 -0
- package/dist/change-set-schema/change-set-schema.d.ts.map +1 -0
- package/dist/change-set-schema/change-set-schema.js +43 -0
- package/dist/change-set-schema/index.d.ts +3 -0
- package/dist/change-set-schema/index.d.ts.map +1 -0
- package/dist/change-set-schema/index.js +2 -0
- package/dist/cli/cli.js +6 -1
- package/dist/cli/deps/dependency-tree.d.ts +3 -0
- package/dist/cli/deps/dependency-tree.d.ts.map +1 -0
- package/dist/cli/deps/dependency-tree.js +39 -0
- package/dist/cli/deps/deps.d.ts +7 -0
- package/dist/cli/deps/deps.d.ts.map +1 -0
- package/dist/cli/deps/deps.js +26 -0
- package/dist/cli/deps/index.d.ts +2 -0
- package/dist/cli/deps/index.d.ts.map +1 -0
- package/dist/cli/deps/index.js +2 -0
- package/dist/cli/errors.d.ts +2 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +34 -0
- package/dist/cli/inspect/file/file.d.ts +8 -0
- package/dist/cli/inspect/file/file.d.ts.map +1 -0
- package/dist/cli/inspect/file/file.js +16 -0
- package/dist/cli/inspect/file/index.d.ts +2 -0
- package/dist/cli/inspect/file/index.d.ts.map +1 -0
- package/dist/cli/inspect/file/index.js +1 -0
- package/dist/cli/inspect/file/report.d.ts +3 -0
- package/dist/cli/inspect/file/report.d.ts.map +1 -0
- package/dist/cli/inspect/file/report.js +26 -0
- package/dist/cli/inspect/index.d.ts +2 -0
- package/dist/cli/inspect/index.d.ts.map +1 -0
- package/dist/cli/inspect/index.js +1 -0
- package/dist/cli/inspect/inspect.d.ts +4 -0
- package/dist/cli/inspect/inspect.d.ts.map +1 -0
- package/dist/cli/inspect/inspect.js +14 -0
- package/dist/cli/inspect/json.d.ts +4 -0
- package/dist/cli/inspect/json.d.ts.map +1 -0
- package/dist/cli/inspect/json.js +5 -0
- package/dist/cli/inspect/layer/index.d.ts +2 -0
- package/dist/cli/inspect/layer/index.d.ts.map +1 -0
- package/dist/cli/inspect/layer/index.js +1 -0
- package/dist/cli/inspect/layer/layer.d.ts +7 -0
- package/dist/cli/inspect/layer/layer.d.ts.map +1 -0
- package/dist/cli/inspect/layer/layer.js +13 -0
- package/dist/cli/inspect/layer/report.d.ts +3 -0
- package/dist/cli/inspect/layer/report.d.ts.map +1 -0
- package/dist/cli/inspect/layer/report.js +21 -0
- package/dist/cli/inspect/module/index.d.ts +2 -0
- package/dist/cli/inspect/module/index.d.ts.map +1 -0
- package/dist/cli/inspect/module/index.js +1 -0
- package/dist/cli/inspect/module/module.d.ts +7 -0
- package/dist/cli/inspect/module/module.d.ts.map +1 -0
- package/dist/cli/inspect/module/module.js +15 -0
- package/dist/cli/inspect/module/report.d.ts +3 -0
- package/dist/cli/inspect/module/report.d.ts.map +1 -0
- package/dist/cli/inspect/module/report.js +38 -0
- package/dist/cli/inspect/path-tree.d.ts +7 -0
- package/dist/cli/inspect/path-tree.d.ts.map +1 -0
- package/dist/cli/inspect/path-tree.js +62 -0
- package/dist/cli/inspect/path.d.ts +5 -0
- package/dist/cli/inspect/path.d.ts.map +1 -0
- package/dist/cli/inspect/path.js +10 -0
- package/dist/cli/inspect/project/index.d.ts +2 -0
- package/dist/cli/inspect/project/index.d.ts.map +1 -0
- package/dist/cli/inspect/project/index.js +1 -0
- package/dist/cli/inspect/project/project.d.ts +8 -0
- package/dist/cli/inspect/project/project.d.ts.map +1 -0
- package/dist/cli/inspect/project/project.js +19 -0
- package/dist/cli/inspect/project/report.d.ts +3 -0
- package/dist/cli/inspect/project/report.d.ts.map +1 -0
- package/dist/cli/inspect/project/report.js +16 -0
- package/dist/cli/lint/index.d.ts +2 -0
- package/dist/cli/lint/index.d.ts.map +1 -0
- package/dist/cli/lint/index.js +2 -0
- package/dist/cli/lint/layers/index.d.ts +3 -0
- package/dist/cli/lint/layers/index.d.ts.map +1 -0
- package/dist/cli/lint/layers/index.js +4 -0
- package/dist/cli/lint/layers/layers.d.ts +5 -0
- package/dist/cli/lint/layers/layers.d.ts.map +1 -0
- package/dist/cli/lint/layers/layers.js +18 -0
- package/dist/cli/lint/layers/report.d.ts +5 -0
- package/dist/cli/lint/layers/report.d.ts.map +1 -0
- package/dist/cli/lint/layers/report.js +60 -0
- package/dist/cli/lint/lint.d.ts +4 -0
- package/dist/cli/lint/lint.d.ts.map +1 -0
- package/dist/cli/lint/lint.js +26 -0
- package/dist/cli/lint/modules/index.d.ts +5 -0
- package/dist/cli/lint/modules/index.d.ts.map +1 -0
- package/dist/cli/lint/modules/index.js +4 -0
- package/dist/cli/lint/modules/modules.d.ts +5 -0
- package/dist/cli/lint/modules/modules.d.ts.map +1 -0
- package/dist/cli/lint/modules/modules.js +15 -0
- package/dist/cli/lint/modules/report.d.ts +5 -0
- package/dist/cli/lint/modules/report.d.ts.map +1 -0
- package/dist/cli/lint/modules/report.js +69 -0
- package/dist/cli/run.d.ts +1 -8
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +14 -242
- package/dist/cli/stories/index.d.ts +2 -0
- package/dist/cli/stories/index.d.ts.map +1 -0
- package/dist/cli/stories/index.js +1 -0
- package/dist/cli/stories/progress.d.ts +7 -0
- package/dist/cli/stories/progress.d.ts.map +1 -0
- package/dist/cli/stories/progress.js +45 -0
- package/dist/cli/stories/report.d.ts +9 -0
- package/dist/cli/stories/report.d.ts.map +1 -0
- package/dist/cli/stories/report.js +63 -0
- package/dist/cli/stories/stories.d.ts +6 -0
- package/dist/cli/stories/stories.d.ts.map +1 -0
- package/dist/cli/stories/stories.js +30 -0
- package/dist/config/define-config.d.ts +5 -0
- package/dist/config/define-config.d.ts.map +1 -1
- package/dist/config/define-config.js +152 -7
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -0
- package/dist/config/layer-graph.d.ts +2 -2
- package/dist/config/layer-graph.d.ts.map +1 -1
- package/dist/config/layer-graph.js +2 -29
- package/dist/config/layer.d.ts +2 -2
- package/dist/config/layer.d.ts.map +1 -1
- package/dist/config/layer.js +2 -15
- package/dist/config/load-config/index.d.ts +2 -0
- package/dist/config/load-config/index.d.ts.map +1 -0
- package/dist/config/load-config/index.js +1 -0
- package/dist/config/load-config/load-config.d.ts +34 -0
- package/dist/config/load-config/load-config.d.ts.map +1 -0
- package/dist/config/load-config/load-config.js +127 -0
- package/dist/config/module.d.ts +4 -2
- package/dist/config/module.d.ts.map +1 -1
- package/dist/config/module.js +5 -12
- package/dist/config/project-narrative.d.ts +15 -0
- package/dist/config/project-narrative.d.ts.map +1 -0
- package/dist/config/project-narrative.js +11 -0
- package/dist/config/types.d.ts +5 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/domain/architecture-analysis/architecture-analysis.d.ts +4 -0
- package/dist/domain/architecture-analysis/architecture-analysis.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/architecture-analysis.js +13 -0
- package/dist/domain/architecture-analysis/index.d.ts +3 -0
- package/dist/domain/architecture-analysis/index.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/index.js +2 -0
- package/dist/domain/architecture-analysis/layer-rules.d.ts +3 -0
- package/dist/domain/architecture-analysis/layer-rules.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layer-rules.js +15 -0
- package/dist/domain/architecture-analysis/layers/allowed-dependencies.d.ts +3 -0
- package/dist/domain/architecture-analysis/layers/allowed-dependencies.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/allowed-dependencies.js +20 -0
- package/dist/domain/architecture-analysis/layers/coverage-violations.d.ts +2 -0
- package/dist/domain/architecture-analysis/layers/coverage-violations.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/coverage-violations.js +5 -0
- package/dist/domain/architecture-analysis/layers/dependency-violations.d.ts +5 -0
- package/dist/domain/architecture-analysis/layers/dependency-violations.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/dependency-violations.js +18 -0
- package/dist/domain/architecture-analysis/layers/index.d.ts +9 -0
- package/dist/domain/architecture-analysis/layers/index.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/index.js +4 -0
- package/dist/domain/architecture-analysis/layers/layer-membership.d.ts +3 -0
- package/dist/domain/architecture-analysis/layers/layer-membership.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/layer-membership.js +13 -0
- package/dist/domain/architecture-analysis/layers/layers.d.ts +11 -0
- package/dist/domain/architecture-analysis/layers/layers.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/layers.js +22 -0
- package/dist/domain/architecture-analysis/layers/module-coverage-violations.d.ts +4 -0
- package/dist/domain/architecture-analysis/layers/module-coverage-violations.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/layers/module-coverage-violations.js +9 -0
- package/dist/domain/architecture-analysis/modules/dependency-graph.d.ts +2 -0
- package/dist/domain/architecture-analysis/modules/dependency-graph.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/dependency-graph.js +45 -0
- package/dist/domain/architecture-analysis/modules/dependency-permissions.d.ts +4 -0
- package/dist/domain/architecture-analysis/modules/dependency-permissions.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/dependency-permissions.js +35 -0
- package/dist/domain/architecture-analysis/modules/index.d.ts +12 -0
- package/dist/domain/architecture-analysis/modules/index.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/index.js +3 -0
- package/dist/domain/architecture-analysis/modules/module-descriptors.d.ts +5 -0
- package/dist/domain/architecture-analysis/modules/module-descriptors.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/module-descriptors.js +37 -0
- package/dist/domain/architecture-analysis/modules/module-membership.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/module-membership.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/module-membership.js +12 -0
- package/dist/domain/architecture-analysis/modules/modules.d.ts +16 -0
- package/dist/domain/architecture-analysis/modules/modules.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/modules.js +35 -0
- package/dist/domain/architecture-analysis/modules/public-entry-points.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/public-entry-points.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/public-entry-points.js +11 -0
- package/dist/domain/architecture-analysis/modules/unexposed-modules.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/unexposed-modules.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/unexposed-modules.js +10 -0
- package/dist/domain/architecture-analysis/modules/violations/boundaries.d.ts +8 -0
- package/dist/domain/architecture-analysis/modules/violations/boundaries.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/boundaries.js +47 -0
- package/dist/domain/architecture-analysis/modules/violations/coverage.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/coverage.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/coverage.js +7 -0
- package/dist/domain/architecture-analysis/modules/violations/cycles.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/cycles.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/cycles.js +7 -0
- package/dist/domain/architecture-analysis/modules/violations/dead-modules.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/dead-modules.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/dead-modules.js +23 -0
- package/dist/domain/architecture-analysis/modules/violations/dependencies.d.ts +4 -0
- package/dist/domain/architecture-analysis/modules/violations/dependencies.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/dependencies.js +7 -0
- package/dist/domain/architecture-analysis/modules/violations/entry-points.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/entry-points.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/entry-points.js +17 -0
- package/dist/domain/architecture-analysis/modules/violations/graph-coverage.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/graph-coverage.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/graph-coverage.js +16 -0
- package/dist/domain/architecture-analysis/modules/violations/index.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/index.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/index.js +2 -0
- package/dist/domain/architecture-analysis/modules/violations/unused-shared.d.ts +3 -0
- package/dist/domain/architecture-analysis/modules/violations/unused-shared.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/unused-shared.js +9 -0
- package/dist/domain/architecture-analysis/modules/violations/violations.d.ts +9 -0
- package/dist/domain/architecture-analysis/modules/violations/violations.d.ts.map +1 -0
- package/dist/domain/architecture-analysis/modules/violations/violations.js +22 -0
- package/dist/domain/file-graph/file-graph.d.ts +10 -0
- package/dist/domain/file-graph/file-graph.d.ts.map +1 -0
- package/dist/domain/file-graph/file-graph.js +37 -0
- package/dist/domain/file-graph/index.d.ts +4 -0
- package/dist/domain/file-graph/index.d.ts.map +1 -0
- package/dist/domain/file-graph/index.js +1 -0
- package/dist/domain/project-config/index.d.ts +10 -0
- package/dist/domain/project-config/index.d.ts.map +1 -0
- package/dist/domain/project-config/index.js +12 -0
- package/dist/domain/project-config/project-config.d.ts +52 -0
- package/dist/domain/project-config/project-config.d.ts.map +1 -0
- package/dist/domain/project-config/project-config.js +39 -0
- package/dist/domain/project-config/resolve.d.ts +8 -0
- package/dist/domain/project-config/resolve.d.ts.map +1 -0
- package/dist/domain/project-config/resolve.js +29 -0
- package/dist/domain/project-config/validation/containment.d.ts +4 -0
- package/dist/domain/project-config/validation/containment.d.ts.map +1 -0
- package/dist/domain/project-config/validation/containment.js +21 -0
- package/dist/domain/project-config/validation/index.d.ts +3 -0
- package/dist/domain/project-config/validation/index.d.ts.map +1 -0
- package/dist/domain/project-config/validation/index.js +2 -0
- package/dist/domain/project-config/validation/layers/cycles.d.ts +3 -0
- package/dist/domain/project-config/validation/layers/cycles.d.ts.map +1 -0
- package/dist/domain/project-config/validation/layers/cycles.js +64 -0
- package/dist/domain/project-config/validation/layers/index.d.ts +3 -0
- package/dist/domain/project-config/validation/layers/index.d.ts.map +1 -0
- package/dist/domain/project-config/validation/layers/index.js +2 -0
- package/dist/domain/project-config/validation/layers/layers.d.ts +3 -0
- package/dist/domain/project-config/validation/layers/layers.d.ts.map +1 -0
- package/dist/domain/project-config/validation/layers/layers.js +9 -0
- package/dist/domain/project-config/validation/layers/overlaps.d.ts +3 -0
- package/dist/domain/project-config/validation/layers/overlaps.d.ts.map +1 -0
- package/dist/domain/project-config/validation/layers/overlaps.js +26 -0
- package/dist/domain/project-config/validation/layers/references.d.ts +3 -0
- package/dist/domain/project-config/validation/layers/references.d.ts.map +1 -0
- package/dist/domain/project-config/validation/layers/references.js +21 -0
- package/dist/domain/project-config/validation/modules/containment.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/containment.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/containment.js +24 -0
- package/dist/domain/project-config/validation/modules/graphs.d.ts +4 -0
- package/dist/domain/project-config/validation/modules/graphs.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/graphs.js +96 -0
- package/dist/domain/project-config/validation/modules/index.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/index.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/index.js +2 -0
- package/dist/domain/project-config/validation/modules/kinds.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/kinds.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/kinds.js +18 -0
- package/dist/domain/project-config/validation/modules/modules.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/modules.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/modules.js +16 -0
- package/dist/domain/project-config/validation/modules/nested.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/nested.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/nested.js +34 -0
- package/dist/domain/project-config/validation/modules/overlaps.d.ts +4 -0
- package/dist/domain/project-config/validation/modules/overlaps.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/overlaps.js +43 -0
- package/dist/domain/project-config/validation/modules/paths.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/paths.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/paths.js +27 -0
- package/dist/domain/project-config/validation/modules/scopes.d.ts +4 -0
- package/dist/domain/project-config/validation/modules/scopes.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/scopes.js +28 -0
- package/dist/domain/project-config/validation/modules/subpaths.d.ts +3 -0
- package/dist/domain/project-config/validation/modules/subpaths.d.ts.map +1 -0
- package/dist/domain/project-config/validation/modules/subpaths.js +40 -0
- package/dist/domain/project-config/validation/paths.d.ts +3 -0
- package/dist/domain/project-config/validation/paths.d.ts.map +1 -0
- package/dist/domain/project-config/validation/paths.js +39 -0
- package/dist/domain/project-config/validation/validation.d.ts +3 -0
- package/dist/domain/project-config/validation/validation.d.ts.map +1 -0
- package/dist/domain/project-config/validation/validation.js +12 -0
- package/dist/entrypoints/cli/cli.d.ts +3 -0
- package/dist/entrypoints/cli/cli.d.ts.map +1 -0
- package/dist/entrypoints/cli/cli.js +6 -0
- package/dist/entrypoints/cli/run.d.ts +13 -0
- package/dist/entrypoints/cli/run.d.ts.map +1 -0
- package/dist/entrypoints/cli/run.js +155 -0
- package/dist/entrypoints/cli/test-output.d.ts +17 -0
- package/dist/entrypoints/cli/test-output.d.ts.map +1 -0
- package/dist/entrypoints/cli/test-output.js +244 -0
- package/dist/entrypoints/node/index.d.ts +24 -0
- package/dist/entrypoints/node/index.d.ts.map +1 -0
- package/dist/entrypoints/node/index.js +27 -0
- package/dist/entrypoints/report/index.d.ts +2 -0
- package/dist/entrypoints/report/index.d.ts.map +1 -0
- package/dist/entrypoints/report/index.js +1 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -1
- package/dist/markdown/index.d.ts +3 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +1 -0
- package/dist/markdown/markdown.d.ts +7 -0
- package/dist/markdown/markdown.d.ts.map +1 -0
- package/dist/markdown/markdown.js +13 -0
- package/dist/orchestrator/analyze-project/analyze-project.d.ts +119 -0
- package/dist/orchestrator/analyze-project/analyze-project.d.ts.map +1 -0
- package/dist/orchestrator/analyze-project/analyze-project.js +9 -0
- package/dist/orchestrator/analyze-project/index.d.ts +2 -0
- package/dist/orchestrator/analyze-project/index.d.ts.map +1 -0
- package/dist/orchestrator/analyze-project/index.js +2 -0
- package/dist/orchestrator/inspect/index.d.ts +4 -0
- package/dist/orchestrator/inspect/index.d.ts.map +1 -0
- package/dist/orchestrator/inspect/index.js +1 -0
- package/dist/orchestrator/inspect/inspect.d.ts +269 -0
- package/dist/orchestrator/inspect/inspect.d.ts.map +1 -0
- package/dist/orchestrator/inspect/inspect.js +147 -0
- package/dist/orchestrator/load-changes/index.d.ts +2 -0
- package/dist/orchestrator/load-changes/index.d.ts.map +1 -0
- package/dist/orchestrator/load-changes/index.js +2 -0
- package/dist/orchestrator/load-changes/load-changes.d.ts +6 -0
- package/dist/orchestrator/load-changes/load-changes.d.ts.map +1 -0
- package/dist/orchestrator/load-changes/load-changes.js +18 -0
- package/dist/orchestrator/load-module-source/errors.d.ts +17 -0
- package/dist/orchestrator/load-module-source/errors.d.ts.map +1 -0
- package/dist/orchestrator/load-module-source/errors.js +5 -0
- package/dist/orchestrator/load-module-source/index.d.ts +2 -0
- package/dist/orchestrator/load-module-source/index.d.ts.map +1 -0
- package/dist/orchestrator/load-module-source/index.js +1 -0
- package/dist/orchestrator/load-module-source/load-module-source.d.ts +12 -0
- package/dist/orchestrator/load-module-source/load-module-source.d.ts.map +1 -0
- package/dist/orchestrator/load-module-source/load-module-source.js +39 -0
- package/dist/orchestrator/load-project/index.d.ts +3 -0
- package/dist/orchestrator/load-project/index.d.ts.map +1 -0
- package/dist/orchestrator/load-project/index.js +2 -0
- package/dist/orchestrator/load-project/load-project.d.ts +54 -0
- package/dist/orchestrator/load-project/load-project.d.ts.map +1 -0
- package/dist/orchestrator/load-project/load-project.js +30 -0
- package/dist/orchestrator/query-dependencies/index.d.ts +3 -0
- package/dist/orchestrator/query-dependencies/index.d.ts.map +1 -0
- package/dist/orchestrator/query-dependencies/index.js +4 -0
- package/dist/orchestrator/query-dependencies/query-dependencies.d.ts +12 -0
- package/dist/orchestrator/query-dependencies/query-dependencies.d.ts.map +1 -0
- package/dist/orchestrator/query-dependencies/query-dependencies.js +20 -0
- package/dist/orchestrator/run-stories/errors.d.ts +11 -0
- package/dist/orchestrator/run-stories/errors.d.ts.map +1 -0
- package/dist/orchestrator/run-stories/errors.js +3 -0
- package/dist/orchestrator/run-stories/extract-snippets.d.ts +12 -0
- package/dist/orchestrator/run-stories/extract-snippets.d.ts.map +1 -0
- package/dist/orchestrator/run-stories/extract-snippets.js +181 -0
- package/dist/orchestrator/run-stories/index.d.ts +3 -0
- package/dist/orchestrator/run-stories/index.d.ts.map +1 -0
- package/dist/orchestrator/run-stories/index.js +3 -0
- package/dist/orchestrator/run-stories/run-stories.d.ts +16 -0
- package/dist/orchestrator/run-stories/run-stories.d.ts.map +1 -0
- package/dist/orchestrator/run-stories/run-stories.js +290 -0
- package/dist/report/architecture.d.ts +1 -1
- package/dist/report/architecture.d.ts.map +1 -1
- package/dist/report/index.d.ts +2 -1
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +1 -1
- package/dist/report/tests.d.ts +411 -0
- package/dist/report/tests.d.ts.map +1 -0
- package/dist/report/tests.js +102 -0
- package/dist/services/config/config.d.ts +12 -0
- package/dist/services/config/config.d.ts.map +1 -0
- package/dist/services/config/config.js +46 -0
- package/dist/services/config/errors.d.ts +13 -0
- package/dist/services/config/errors.d.ts.map +1 -0
- package/dist/services/config/errors.js +3 -0
- package/dist/services/config/index.d.ts +4 -0
- package/dist/services/config/index.d.ts.map +1 -0
- package/dist/services/config/index.js +7 -0
- package/dist/services/file-cruiser/errors.d.ts +10 -0
- package/dist/services/file-cruiser/errors.d.ts.map +1 -0
- package/dist/services/file-cruiser/errors.js +3 -0
- package/dist/services/file-cruiser/file-cruiser.d.ts +11 -0
- package/dist/services/file-cruiser/file-cruiser.d.ts.map +1 -0
- package/dist/services/file-cruiser/file-cruiser.js +7 -0
- package/dist/services/file-cruiser/index.d.ts +4 -0
- package/dist/services/file-cruiser/index.d.ts.map +1 -0
- package/dist/services/file-cruiser/index.js +6 -0
- package/dist/services/file-cruiser/oxc/file-scanner.d.ts +5 -0
- package/dist/services/file-cruiser/oxc/file-scanner.d.ts.map +1 -0
- package/dist/services/file-cruiser/oxc/file-scanner.js +54 -0
- package/dist/services/file-cruiser/oxc/import-resolver.d.ts +5 -0
- package/dist/services/file-cruiser/oxc/import-resolver.d.ts.map +1 -0
- package/dist/services/file-cruiser/oxc/import-resolver.js +44 -0
- package/dist/services/file-cruiser/oxc/index.d.ts +2 -0
- package/dist/services/file-cruiser/oxc/index.d.ts.map +1 -0
- package/dist/services/file-cruiser/oxc/index.js +2 -0
- package/dist/services/file-cruiser/oxc/oxc.d.ts +5 -0
- package/dist/services/file-cruiser/oxc/oxc.d.ts.map +1 -0
- package/dist/services/file-cruiser/oxc/oxc.js +29 -0
- package/dist/services/git/changed-paths.d.ts +4 -0
- package/dist/services/git/changed-paths.d.ts.map +1 -0
- package/dist/services/git/changed-paths.js +85 -0
- package/dist/services/git/errors.d.ts +11 -0
- package/dist/services/git/errors.d.ts.map +1 -0
- package/dist/services/git/errors.js +3 -0
- package/dist/services/git/git.d.ts +12 -0
- package/dist/services/git/git.d.ts.map +1 -0
- package/dist/services/git/git.js +23 -0
- package/dist/services/git/index.d.ts +4 -0
- package/dist/services/git/index.d.ts.map +1 -0
- package/dist/services/git/index.js +6 -0
- package/dist/services/git/parse-patch.d.ts +3 -0
- package/dist/services/git/parse-patch.d.ts.map +1 -0
- package/dist/services/git/parse-patch.js +53 -0
- package/dist/services/git/run-git.d.ts +9 -0
- package/dist/services/git/run-git.d.ts.map +1 -0
- package/dist/services/git/run-git.js +22 -0
- package/dist/story/index.d.ts +3 -0
- package/dist/story/index.d.ts.map +1 -0
- package/dist/story/index.js +2 -0
- package/dist/story/schema/index.d.ts +6 -0
- package/dist/story/schema/index.d.ts.map +1 -0
- package/dist/story/schema/index.js +4 -0
- package/dist/story/schema/slug.d.ts +2 -0
- package/dist/story/schema/slug.d.ts.map +1 -0
- package/dist/story/schema/slug.js +6 -0
- package/dist/story/schema/story-report-schema.d.ts +408 -0
- package/dist/story/schema/story-report-schema.d.ts.map +1 -0
- package/dist/story/schema/story-report-schema.js +94 -0
- package/dist/story/schema/story-tree-schema.d.ts +42 -0
- package/dist/story/schema/story-tree-schema.d.ts.map +1 -0
- package/dist/story/schema/story-tree-schema.js +40 -0
- package/dist/story/story.d.ts +38 -0
- package/dist/story/story.d.ts.map +1 -0
- package/dist/story/story.js +56 -0
- package/dist/tests/authoring/index.d.ts +72 -0
- package/dist/tests/authoring/index.d.ts.map +1 -0
- package/dist/tests/authoring/index.js +312 -0
- package/dist/tests/run-tests/index.d.ts +3 -0
- package/dist/tests/run-tests/index.d.ts.map +1 -0
- package/dist/tests/run-tests/index.js +1 -0
- package/dist/tests/run-tests/run-tests.d.ts +26 -0
- package/dist/tests/run-tests/run-tests.d.ts.map +1 -0
- package/dist/tests/run-tests/run-tests.js +284 -0
- package/package.json +36 -24
- package/schema.json +212 -0
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -1
- package/dist/engine/1-extract/extract.d.ts.map +0 -1
- package/dist/engine/1-extract/index.d.ts +0 -3
- package/dist/engine/1-extract/index.d.ts.map +0 -1
- package/dist/engine/1-extract/index.js +0 -1
- package/dist/engine/2-resolve/index.d.ts +0 -3
- package/dist/engine/2-resolve/index.d.ts.map +0 -1
- package/dist/engine/2-resolve/index.js +0 -1
- package/dist/engine/2-resolve/resolve.d.ts.map +0 -1
- package/dist/engine/3-evaluate/evaluate.d.ts.map +0 -1
- package/dist/engine/3-evaluate/index.d.ts +0 -3
- package/dist/engine/3-evaluate/index.d.ts.map +0 -1
- package/dist/engine/3-evaluate/index.js +0 -1
- package/dist/engine/4-emit/emit.d.ts +0 -7
- package/dist/engine/4-emit/emit.d.ts.map +0 -1
- package/dist/engine/4-emit/index.d.ts +0 -2
- package/dist/engine/4-emit/index.d.ts.map +0 -1
- package/dist/engine/4-emit/index.js +0 -1
- package/dist/engine/errors.d.ts +0 -19
- package/dist/engine/errors.d.ts.map +0 -1
- package/dist/node.d.ts +0 -24
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -139
- package/dist/report/stories.d.ts +0 -22
- package/dist/report/stories.d.ts.map +0 -1
- package/dist/report/stories.js +0 -1
- package/dist/story/artifact/artifact.d.ts +0 -57
- package/dist/story/artifact/artifact.d.ts.map +0 -1
- package/dist/story/artifact/artifact.js +0 -234
- package/dist/story/artifact/index.d.ts +0 -2
- package/dist/story/artifact/index.d.ts.map +0 -1
- package/dist/story/artifact/index.js +0 -1
- package/dist/story/artifact/storage.d.ts +0 -10
- package/dist/story/artifact/storage.d.ts.map +0 -1
- package/dist/story/artifact/storage.js +0 -162
- package/dist/story/artifact/types.d.ts +0 -74
- package/dist/story/artifact/types.d.ts.map +0 -1
- package/dist/story/artifact/types.js +0 -1
- package/dist/story/core/blocks.d.ts +0 -20
- package/dist/story/core/blocks.d.ts.map +0 -1
- package/dist/story/core/blocks.js +0 -104
- package/dist/story/core/declare.d.ts +0 -63
- package/dist/story/core/declare.d.ts.map +0 -1
- package/dist/story/core/declare.js +0 -62
- package/dist/story/core/index.d.ts +0 -4
- package/dist/story/core/index.d.ts.map +0 -1
- package/dist/story/core/index.js +0 -1
- package/dist/story/core/recorder.d.ts +0 -38
- package/dist/story/core/recorder.d.ts.map +0 -1
- package/dist/story/core/recorder.js +0 -28
- package/dist/story/core/runtime-context.d.ts +0 -14
- package/dist/story/core/runtime-context.d.ts.map +0 -1
- package/dist/story/core/runtime-context.js +0 -19
- package/dist/story/core/types.d.ts +0 -21
- package/dist/story/core/types.d.ts.map +0 -1
- package/dist/story/core/types.js +0 -1
- package/dist/story/effect/effect.d.ts +0 -52
- package/dist/story/effect/effect.d.ts.map +0 -1
- package/dist/story/effect/effect.js +0 -99
- package/dist/story/effect/index.d.ts +0 -3
- package/dist/story/effect/index.d.ts.map +0 -1
- package/dist/story/effect/index.js +0 -1
- package/dist/story/runner/index.d.ts +0 -3
- package/dist/story/runner/index.d.ts.map +0 -1
- package/dist/story/runner/index.js +0 -1
- package/dist/story/runner/runner.d.ts +0 -44
- package/dist/story/runner/runner.d.ts.map +0 -1
- package/dist/story/runner/runner.js +0 -476
- package/dist/story/story-runtime/index.d.ts +0 -2
- package/dist/story/story-runtime/index.d.ts.map +0 -1
- package/dist/story/story-runtime/index.js +0 -1
- package/dist/story/story-runtime/story-runtime.d.ts +0 -52
- package/dist/story/story-runtime/story-runtime.d.ts.map +0 -1
- package/dist/story/story-runtime/story-runtime.js +0 -194
- package/dist/story/vanilla/index.d.ts +0 -29
- package/dist/story/vanilla/index.d.ts.map +0 -1
- package/dist/story/vanilla/index.js +0 -78
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { markdown } from './markdown.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface MarkdownContent {
|
|
2
|
+
readonly kind: 'markdown';
|
|
3
|
+
readonly content: string;
|
|
4
|
+
}
|
|
5
|
+
/** Authors Markdown without introducing MDX or executable components. */
|
|
6
|
+
export declare function markdown(strings: TemplateStringsArray, ...values: readonly (string | number)[]): MarkdownContent;
|
|
7
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/markdown/markdown.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CACtB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACtC,eAAe,CAMjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Authors Markdown without introducing MDX or executable components. */
|
|
2
|
+
export function markdown(strings, ...values) {
|
|
3
|
+
const content = strings.reduce((result, part, index) => result + part + (values[index] ?? ''), '');
|
|
4
|
+
return { kind: 'markdown', content: dedent(content) };
|
|
5
|
+
}
|
|
6
|
+
function dedent(value) {
|
|
7
|
+
const lines = value.replace(/^\n/, '').replace(/\s+$/, '').split('\n');
|
|
8
|
+
const indents = lines
|
|
9
|
+
.filter((line) => line.trim().length > 0)
|
|
10
|
+
.map((line) => line.match(/^\s*/)?.[0].length ?? 0);
|
|
11
|
+
const indent = indents.length === 0 ? 0 : Math.min(...indents);
|
|
12
|
+
return lines.map((line) => line.slice(indent)).join('\n');
|
|
13
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
export declare function analyzeProject(configPath: string): Effect.Effect<{
|
|
3
|
+
readonly config: {
|
|
4
|
+
readonly $schema?: string | undefined;
|
|
5
|
+
readonly sourceRoots: readonly string[];
|
|
6
|
+
readonly ignoredPaths: readonly string[];
|
|
7
|
+
readonly storiesPath?: string | undefined;
|
|
8
|
+
readonly layers: {
|
|
9
|
+
readonly [x: string]: {
|
|
10
|
+
readonly paths: readonly string[];
|
|
11
|
+
readonly description?: string | undefined;
|
|
12
|
+
readonly modules: {
|
|
13
|
+
readonly [x: string]: {
|
|
14
|
+
readonly shared: boolean;
|
|
15
|
+
readonly exposed: boolean;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
readonly moduleGraphs: {
|
|
19
|
+
readonly [x: string]: {
|
|
20
|
+
readonly description?: string | undefined;
|
|
21
|
+
readonly path: string;
|
|
22
|
+
readonly modules: {
|
|
23
|
+
readonly [x: string]: {
|
|
24
|
+
readonly shared: boolean;
|
|
25
|
+
readonly exposed: boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
readonly rules: {
|
|
29
|
+
readonly [x: string]: readonly string[];
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
readonly layerGraphs: {
|
|
36
|
+
readonly [x: string]: {
|
|
37
|
+
readonly description?: string | undefined;
|
|
38
|
+
readonly rules: {
|
|
39
|
+
readonly [x: string]: readonly string[];
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
readonly layerAnalysis: {
|
|
45
|
+
readonly membership: ReadonlyMap<string, string>;
|
|
46
|
+
readonly allowedDependencies: ReadonlyMap<string, ReadonlySet<string>>;
|
|
47
|
+
readonly unassignedFiles: readonly string[];
|
|
48
|
+
readonly forbiddenImports: readonly {
|
|
49
|
+
readonly fromFile: string;
|
|
50
|
+
readonly fromLayer: string;
|
|
51
|
+
readonly toFile: string;
|
|
52
|
+
readonly toLayer: string;
|
|
53
|
+
}[];
|
|
54
|
+
readonly layersWithoutModules: readonly string[];
|
|
55
|
+
};
|
|
56
|
+
readonly moduleAnalysis: {
|
|
57
|
+
readonly modules: readonly {
|
|
58
|
+
readonly path: string;
|
|
59
|
+
readonly layer: string;
|
|
60
|
+
readonly shared: boolean;
|
|
61
|
+
readonly exposed: boolean;
|
|
62
|
+
readonly shape: "directory" | "file";
|
|
63
|
+
readonly observedKind: "isolated" | "regular" | "root" | "terminal";
|
|
64
|
+
readonly graph?: string | undefined;
|
|
65
|
+
readonly member?: string | undefined;
|
|
66
|
+
}[];
|
|
67
|
+
readonly graphs: readonly {
|
|
68
|
+
readonly id: string;
|
|
69
|
+
readonly layer: string;
|
|
70
|
+
readonly path: string;
|
|
71
|
+
readonly members: readonly string[];
|
|
72
|
+
readonly rules: {
|
|
73
|
+
readonly [x: string]: readonly string[];
|
|
74
|
+
};
|
|
75
|
+
}[];
|
|
76
|
+
readonly membership: ReadonlyMap<string, string>;
|
|
77
|
+
readonly entryPoints: ReadonlySet<string>;
|
|
78
|
+
readonly dependencies: readonly {
|
|
79
|
+
readonly fromModule: string;
|
|
80
|
+
readonly toModule: string;
|
|
81
|
+
readonly toEntryPoint?: string | undefined;
|
|
82
|
+
readonly permitted: boolean;
|
|
83
|
+
}[];
|
|
84
|
+
readonly violations: readonly ({
|
|
85
|
+
readonly kind: "coverage";
|
|
86
|
+
readonly file: string;
|
|
87
|
+
} | {
|
|
88
|
+
readonly kind: "graph-coverage";
|
|
89
|
+
readonly graph: string;
|
|
90
|
+
readonly file: string;
|
|
91
|
+
} | {
|
|
92
|
+
readonly kind: "missing-entry-point";
|
|
93
|
+
readonly module: string;
|
|
94
|
+
readonly path: string;
|
|
95
|
+
} | {
|
|
96
|
+
readonly fromFile: string;
|
|
97
|
+
readonly fromModule: string;
|
|
98
|
+
readonly toFile: string;
|
|
99
|
+
readonly toModule: string;
|
|
100
|
+
readonly kind: "dependency";
|
|
101
|
+
} | {
|
|
102
|
+
readonly fromFile: string;
|
|
103
|
+
readonly fromModule: string;
|
|
104
|
+
readonly toFile: string;
|
|
105
|
+
readonly toModule: string;
|
|
106
|
+
readonly kind: "boundary";
|
|
107
|
+
} | {
|
|
108
|
+
readonly kind: "cycle";
|
|
109
|
+
readonly modules: readonly string[];
|
|
110
|
+
} | {
|
|
111
|
+
readonly kind: "unused-shared";
|
|
112
|
+
readonly module: string;
|
|
113
|
+
} | {
|
|
114
|
+
readonly kind: "dead-module";
|
|
115
|
+
readonly module: string;
|
|
116
|
+
})[];
|
|
117
|
+
};
|
|
118
|
+
}, import("../../services/config/errors.js").ConfigError | import("../../services/file-cruiser/errors.js").CruiseError, never>;
|
|
119
|
+
//# sourceMappingURL=analyze-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-project.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/analyze-project/analyze-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+HAShD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { NodeServices } from '@effect/platform-node';
|
|
3
|
+
import { analyzeArchitecture } from '../../domain/architecture-analysis/index.js';
|
|
4
|
+
import { ConfigServiceLive } from '../../services/config/index.js';
|
|
5
|
+
import { CruiserLive } from '../../services/file-cruiser/index.js';
|
|
6
|
+
import { loadProject } from '../load-project/index.js';
|
|
7
|
+
export function analyzeProject(configPath) {
|
|
8
|
+
return loadProject(configPath).pipe(Effect.map(({ config, fileGraph }) => analyzeArchitecture(fileGraph, config)), Effect.provide(ConfigServiceLive), Effect.provide(CruiserLive), Effect.provide(NodeServices.layer));
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/analyze-project/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { InspectionTargetNotFound, ModuleInspectionCycle, inspectFile, inspectLayer, inspectModule, inspectProject, } from './inspect.js';
|
|
2
|
+
export type { FileInspection, LayerInspection, ModuleInspection, ProjectInspection, } from './inspect.js';
|
|
3
|
+
export type { FileInspectionOptions } from '../../domain/file-graph/index.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/inspect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { InspectionTargetNotFound, ModuleInspectionCycle, inspectFile, inspectLayer, inspectModule, inspectProject, } from './inspect.js';
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { AnalyzedModule, AnalyzedModuleGraph, ArchitectureAnalysis, ForbiddenImport, LayerDefinition, ModuleViolation } from '../../architecture-analysis-schema/index.js';
|
|
3
|
+
import { type FileDependency, type FileInspectionOptions } from '../../domain/file-graph/index.js';
|
|
4
|
+
declare const InspectionTargetNotFound_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
5
|
+
readonly _tag: "InspectionTargetNotFound";
|
|
6
|
+
} & Readonly<A>;
|
|
7
|
+
export declare class InspectionTargetNotFound extends InspectionTargetNotFound_base<{
|
|
8
|
+
readonly target: string;
|
|
9
|
+
readonly targetKind: 'file' | 'layer' | 'module';
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
declare const ModuleInspectionCycle_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
13
|
+
readonly _tag: "ModuleInspectionCycle";
|
|
14
|
+
} & Readonly<A>;
|
|
15
|
+
export declare class ModuleInspectionCycle extends ModuleInspectionCycle_base<{
|
|
16
|
+
readonly target: string;
|
|
17
|
+
}> {
|
|
18
|
+
}
|
|
19
|
+
export interface FileInspection {
|
|
20
|
+
readonly path: string;
|
|
21
|
+
readonly layer: string | undefined;
|
|
22
|
+
readonly module: string | undefined;
|
|
23
|
+
readonly role: 'public-entry-point' | 'internal' | undefined;
|
|
24
|
+
readonly dependencies: readonly FileDependency[];
|
|
25
|
+
readonly recursive: boolean;
|
|
26
|
+
readonly hasCoverageViolation: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface ModuleInspection {
|
|
29
|
+
readonly module: AnalyzedModule;
|
|
30
|
+
readonly graphRules: readonly string[] | undefined;
|
|
31
|
+
readonly publicEntryPoints: readonly string[];
|
|
32
|
+
readonly dependents: readonly string[];
|
|
33
|
+
readonly dependencies: readonly string[];
|
|
34
|
+
readonly hasViolations: boolean;
|
|
35
|
+
}
|
|
36
|
+
export type ProjectInspection = ArchitectureAnalysis;
|
|
37
|
+
export interface LayerInspection {
|
|
38
|
+
readonly id: string;
|
|
39
|
+
readonly definition: LayerDefinition;
|
|
40
|
+
readonly files: readonly string[];
|
|
41
|
+
readonly allowedDependencies: readonly string[];
|
|
42
|
+
readonly allowedDependents: readonly string[];
|
|
43
|
+
readonly modules: readonly AnalyzedModule[];
|
|
44
|
+
readonly moduleGraphs: readonly AnalyzedModuleGraph[];
|
|
45
|
+
readonly sharedCount: number;
|
|
46
|
+
readonly hasNoModules: boolean;
|
|
47
|
+
readonly layerViolations: readonly ForbiddenImport[];
|
|
48
|
+
readonly moduleViolations: readonly ModuleViolation[];
|
|
49
|
+
}
|
|
50
|
+
export declare function inspectProject(configPath: string): Effect.Effect<{
|
|
51
|
+
readonly config: {
|
|
52
|
+
readonly $schema?: string | undefined;
|
|
53
|
+
readonly sourceRoots: readonly string[];
|
|
54
|
+
readonly ignoredPaths: readonly string[];
|
|
55
|
+
readonly storiesPath?: string | undefined;
|
|
56
|
+
readonly layers: {
|
|
57
|
+
readonly [x: string]: {
|
|
58
|
+
readonly paths: readonly string[];
|
|
59
|
+
readonly description?: string | undefined;
|
|
60
|
+
readonly modules: {
|
|
61
|
+
readonly [x: string]: {
|
|
62
|
+
readonly shared: boolean;
|
|
63
|
+
readonly exposed: boolean;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
readonly moduleGraphs: {
|
|
67
|
+
readonly [x: string]: {
|
|
68
|
+
readonly description?: string | undefined;
|
|
69
|
+
readonly path: string;
|
|
70
|
+
readonly modules: {
|
|
71
|
+
readonly [x: string]: {
|
|
72
|
+
readonly shared: boolean;
|
|
73
|
+
readonly exposed: boolean;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
readonly rules: {
|
|
77
|
+
readonly [x: string]: readonly string[];
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
readonly layerGraphs: {
|
|
84
|
+
readonly [x: string]: {
|
|
85
|
+
readonly description?: string | undefined;
|
|
86
|
+
readonly rules: {
|
|
87
|
+
readonly [x: string]: readonly string[];
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
readonly layerAnalysis: {
|
|
93
|
+
readonly membership: ReadonlyMap<string, string>;
|
|
94
|
+
readonly allowedDependencies: ReadonlyMap<string, ReadonlySet<string>>;
|
|
95
|
+
readonly unassignedFiles: readonly string[];
|
|
96
|
+
readonly forbiddenImports: readonly {
|
|
97
|
+
readonly fromFile: string;
|
|
98
|
+
readonly fromLayer: string;
|
|
99
|
+
readonly toFile: string;
|
|
100
|
+
readonly toLayer: string;
|
|
101
|
+
}[];
|
|
102
|
+
readonly layersWithoutModules: readonly string[];
|
|
103
|
+
};
|
|
104
|
+
readonly moduleAnalysis: {
|
|
105
|
+
readonly modules: readonly {
|
|
106
|
+
readonly path: string;
|
|
107
|
+
readonly layer: string;
|
|
108
|
+
readonly shared: boolean;
|
|
109
|
+
readonly exposed: boolean;
|
|
110
|
+
readonly shape: "directory" | "file";
|
|
111
|
+
readonly observedKind: "isolated" | "regular" | "root" | "terminal";
|
|
112
|
+
readonly graph?: string | undefined;
|
|
113
|
+
readonly member?: string | undefined;
|
|
114
|
+
}[];
|
|
115
|
+
readonly graphs: readonly {
|
|
116
|
+
readonly id: string;
|
|
117
|
+
readonly layer: string;
|
|
118
|
+
readonly path: string;
|
|
119
|
+
readonly members: readonly string[];
|
|
120
|
+
readonly rules: {
|
|
121
|
+
readonly [x: string]: readonly string[];
|
|
122
|
+
};
|
|
123
|
+
}[];
|
|
124
|
+
readonly membership: ReadonlyMap<string, string>;
|
|
125
|
+
readonly entryPoints: ReadonlySet<string>;
|
|
126
|
+
readonly dependencies: readonly {
|
|
127
|
+
readonly fromModule: string;
|
|
128
|
+
readonly toModule: string;
|
|
129
|
+
readonly toEntryPoint?: string | undefined;
|
|
130
|
+
readonly permitted: boolean;
|
|
131
|
+
}[];
|
|
132
|
+
readonly violations: readonly ({
|
|
133
|
+
readonly kind: "coverage";
|
|
134
|
+
readonly file: string;
|
|
135
|
+
} | {
|
|
136
|
+
readonly kind: "graph-coverage";
|
|
137
|
+
readonly graph: string;
|
|
138
|
+
readonly file: string;
|
|
139
|
+
} | {
|
|
140
|
+
readonly kind: "missing-entry-point";
|
|
141
|
+
readonly module: string;
|
|
142
|
+
readonly path: string;
|
|
143
|
+
} | {
|
|
144
|
+
readonly fromFile: string;
|
|
145
|
+
readonly fromModule: string;
|
|
146
|
+
readonly toFile: string;
|
|
147
|
+
readonly toModule: string;
|
|
148
|
+
readonly kind: "dependency";
|
|
149
|
+
} | {
|
|
150
|
+
readonly fromFile: string;
|
|
151
|
+
readonly fromModule: string;
|
|
152
|
+
readonly toFile: string;
|
|
153
|
+
readonly toModule: string;
|
|
154
|
+
readonly kind: "boundary";
|
|
155
|
+
} | {
|
|
156
|
+
readonly kind: "cycle";
|
|
157
|
+
readonly modules: readonly string[];
|
|
158
|
+
} | {
|
|
159
|
+
readonly kind: "unused-shared";
|
|
160
|
+
readonly module: string;
|
|
161
|
+
} | {
|
|
162
|
+
readonly kind: "dead-module";
|
|
163
|
+
readonly module: string;
|
|
164
|
+
})[];
|
|
165
|
+
};
|
|
166
|
+
}, import("../../services/config/errors.js").ConfigError | import("../../services/file-cruiser/errors.js").CruiseError, never>;
|
|
167
|
+
export declare function inspectLayer(configPath: string, target: string): Effect.Effect<{
|
|
168
|
+
id: string;
|
|
169
|
+
definition: {
|
|
170
|
+
readonly paths: readonly string[];
|
|
171
|
+
readonly description?: string | undefined;
|
|
172
|
+
readonly modules: {
|
|
173
|
+
readonly [x: string]: {
|
|
174
|
+
readonly shared: boolean;
|
|
175
|
+
readonly exposed: boolean;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
readonly moduleGraphs: {
|
|
179
|
+
readonly [x: string]: {
|
|
180
|
+
readonly description?: string | undefined;
|
|
181
|
+
readonly path: string;
|
|
182
|
+
readonly modules: {
|
|
183
|
+
readonly [x: string]: {
|
|
184
|
+
readonly shared: boolean;
|
|
185
|
+
readonly exposed: boolean;
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
readonly rules: {
|
|
189
|
+
readonly [x: string]: readonly string[];
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
files: string[];
|
|
195
|
+
allowedDependencies: string[];
|
|
196
|
+
allowedDependents: string[];
|
|
197
|
+
modules: {
|
|
198
|
+
readonly path: string;
|
|
199
|
+
readonly layer: string;
|
|
200
|
+
readonly shared: boolean;
|
|
201
|
+
readonly exposed: boolean;
|
|
202
|
+
readonly shape: "directory" | "file";
|
|
203
|
+
readonly observedKind: "isolated" | "regular" | "root" | "terminal";
|
|
204
|
+
readonly graph?: string | undefined;
|
|
205
|
+
readonly member?: string | undefined;
|
|
206
|
+
}[];
|
|
207
|
+
moduleGraphs: {
|
|
208
|
+
readonly id: string;
|
|
209
|
+
readonly layer: string;
|
|
210
|
+
readonly path: string;
|
|
211
|
+
readonly members: readonly string[];
|
|
212
|
+
readonly rules: {
|
|
213
|
+
readonly [x: string]: readonly string[];
|
|
214
|
+
};
|
|
215
|
+
}[];
|
|
216
|
+
sharedCount: number;
|
|
217
|
+
hasNoModules: boolean;
|
|
218
|
+
layerViolations: {
|
|
219
|
+
readonly fromFile: string;
|
|
220
|
+
readonly fromLayer: string;
|
|
221
|
+
readonly toFile: string;
|
|
222
|
+
readonly toLayer: string;
|
|
223
|
+
}[];
|
|
224
|
+
moduleViolations: ({
|
|
225
|
+
readonly kind: "coverage";
|
|
226
|
+
readonly file: string;
|
|
227
|
+
} | {
|
|
228
|
+
readonly kind: "graph-coverage";
|
|
229
|
+
readonly graph: string;
|
|
230
|
+
readonly file: string;
|
|
231
|
+
} | {
|
|
232
|
+
readonly kind: "missing-entry-point";
|
|
233
|
+
readonly module: string;
|
|
234
|
+
readonly path: string;
|
|
235
|
+
} | {
|
|
236
|
+
readonly fromFile: string;
|
|
237
|
+
readonly fromModule: string;
|
|
238
|
+
readonly toFile: string;
|
|
239
|
+
readonly toModule: string;
|
|
240
|
+
readonly kind: "dependency";
|
|
241
|
+
} | {
|
|
242
|
+
readonly fromFile: string;
|
|
243
|
+
readonly fromModule: string;
|
|
244
|
+
readonly toFile: string;
|
|
245
|
+
readonly toModule: string;
|
|
246
|
+
readonly kind: "boundary";
|
|
247
|
+
} | {
|
|
248
|
+
readonly kind: "cycle";
|
|
249
|
+
readonly modules: readonly string[];
|
|
250
|
+
} | {
|
|
251
|
+
readonly kind: "unused-shared";
|
|
252
|
+
readonly module: string;
|
|
253
|
+
} | {
|
|
254
|
+
readonly kind: "dead-module";
|
|
255
|
+
readonly module: string;
|
|
256
|
+
})[];
|
|
257
|
+
}, import("../../services/config/errors.js").ConfigError | import("../../services/file-cruiser/errors.js").CruiseError | InspectionTargetNotFound, never>;
|
|
258
|
+
export declare function inspectFile(configPath: string, target: string, options?: FileInspectionOptions): Effect.Effect<{
|
|
259
|
+
path: string;
|
|
260
|
+
layer: string | undefined;
|
|
261
|
+
module: string | undefined;
|
|
262
|
+
role: "internal" | "public-entry-point" | undefined;
|
|
263
|
+
dependencies: readonly FileDependency[];
|
|
264
|
+
recursive: boolean;
|
|
265
|
+
hasCoverageViolation: boolean;
|
|
266
|
+
}, import("../../services/config/errors.js").ConfigError | import("../../services/file-cruiser/errors.js").CruiseError | InspectionTargetNotFound, never>;
|
|
267
|
+
export declare function inspectModule(configPath: string, target: string): Effect.Effect<ModuleInspection, import("../../services/config/errors.js").ConfigError | import("../../services/file-cruiser/errors.js").CruiseError | InspectionTargetNotFound | ModuleInspectionCycle, never>;
|
|
268
|
+
export {};
|
|
269
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/inspect/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;;;;AAM1C,qBAAa,wBAAyB,SAAQ,8BAE5C;IACA,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CAClD,CAAC;CAAG;;;;AAEL,qBAAa,qBAAsB,SAAQ,2BAEzC;IACA,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;CAAG;AAEL,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,eAAe,EAAE,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;CACvD;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+HAEhD;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0JAoD9D;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B;;;;;;;;0JAkCpC;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kNAwB/D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import { NodeServices } from '@effect/platform-node';
|
|
3
|
+
import { analyzeArchitecture } from '../../domain/architecture-analysis/index.js';
|
|
4
|
+
import { findModuleCycles } from '../../domain/architecture-analysis/modules/index.js';
|
|
5
|
+
import { fileDependencies, } from '../../domain/file-graph/index.js';
|
|
6
|
+
import { ConfigServiceLive } from '../../services/config/index.js';
|
|
7
|
+
import { CruiserLive } from '../../services/file-cruiser/index.js';
|
|
8
|
+
import { analyzeProject } from '../analyze-project/index.js';
|
|
9
|
+
import { loadProject } from '../load-project/index.js';
|
|
10
|
+
export class InspectionTargetNotFound extends Data.TaggedError('InspectionTargetNotFound') {
|
|
11
|
+
}
|
|
12
|
+
export class ModuleInspectionCycle extends Data.TaggedError('ModuleInspectionCycle') {
|
|
13
|
+
}
|
|
14
|
+
export function inspectProject(configPath) {
|
|
15
|
+
return analyzeProject(configPath);
|
|
16
|
+
}
|
|
17
|
+
export function inspectLayer(configPath, target) {
|
|
18
|
+
return inspectProject(configPath).pipe(Effect.flatMap((analysis) => {
|
|
19
|
+
const definition = analysis.config.layers[target];
|
|
20
|
+
if (definition === undefined) {
|
|
21
|
+
return new InspectionTargetNotFound({
|
|
22
|
+
target,
|
|
23
|
+
targetKind: 'layer',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const modules = analysis.moduleAnalysis.modules.filter(({ layer }) => layer === target);
|
|
27
|
+
const modulePaths = new Set(modules.map(({ path }) => path));
|
|
28
|
+
return Effect.succeed({
|
|
29
|
+
id: target,
|
|
30
|
+
definition,
|
|
31
|
+
files: [...analysis.layerAnalysis.membership]
|
|
32
|
+
.filter(([, layer]) => layer === target)
|
|
33
|
+
.map(([file]) => file)
|
|
34
|
+
.sort(),
|
|
35
|
+
allowedDependencies: [
|
|
36
|
+
...(analysis.layerAnalysis.allowedDependencies.get(target) ?? []),
|
|
37
|
+
].sort(),
|
|
38
|
+
allowedDependents: [...analysis.layerAnalysis.allowedDependencies]
|
|
39
|
+
.filter(([, dependencies]) => dependencies.has(target))
|
|
40
|
+
.map(([layer]) => layer)
|
|
41
|
+
.sort(),
|
|
42
|
+
modules,
|
|
43
|
+
moduleGraphs: analysis.moduleAnalysis.graphs.filter(({ layer }) => layer === target),
|
|
44
|
+
sharedCount: modules.filter(({ shared }) => shared).length,
|
|
45
|
+
hasNoModules: analysis.layerAnalysis.layersWithoutModules.includes(target),
|
|
46
|
+
layerViolations: analysis.layerAnalysis.forbiddenImports.filter(({ fromLayer, toLayer }) => fromLayer === target || toLayer === target),
|
|
47
|
+
moduleViolations: analysis.moduleAnalysis.violations.filter((violation) => ((violation.kind === 'coverage' ||
|
|
48
|
+
violation.kind === 'graph-coverage') &&
|
|
49
|
+
analysis.layerAnalysis.membership.get(violation.file) ===
|
|
50
|
+
target) ||
|
|
51
|
+
[...modulePaths].some((module) => violationInvolvesModule(violation, module))),
|
|
52
|
+
});
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
export function inspectFile(configPath, target, options = {}) {
|
|
56
|
+
return loadProject(configPath).pipe(Effect.flatMap(({ config, fileGraph }) => Effect.gen(function* () {
|
|
57
|
+
if (!fileGraph.has(target)) {
|
|
58
|
+
return yield* new InspectionTargetNotFound({
|
|
59
|
+
target,
|
|
60
|
+
targetKind: 'file',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const analysis = analyzeArchitecture(fileGraph, config);
|
|
64
|
+
const layer = analysis.layerAnalysis.membership.get(target);
|
|
65
|
+
const module = analysis.moduleAnalysis.membership.get(target);
|
|
66
|
+
return {
|
|
67
|
+
path: target,
|
|
68
|
+
layer,
|
|
69
|
+
module,
|
|
70
|
+
role: module === undefined
|
|
71
|
+
? undefined
|
|
72
|
+
: analysis.moduleAnalysis.entryPoints.has(target)
|
|
73
|
+
? 'public-entry-point'
|
|
74
|
+
: 'internal',
|
|
75
|
+
dependencies: fileDependencies(fileGraph, target, options),
|
|
76
|
+
recursive: options.recursive ?? false,
|
|
77
|
+
hasCoverageViolation: layer === undefined || module === undefined,
|
|
78
|
+
};
|
|
79
|
+
})), Effect.provide(ConfigServiceLive), Effect.provide(CruiserLive), Effect.provide(NodeServices.layer));
|
|
80
|
+
}
|
|
81
|
+
export function inspectModule(configPath, target) {
|
|
82
|
+
return loadProject(configPath).pipe(Effect.flatMap(({ config, fileGraph }) => Effect.gen(function* () {
|
|
83
|
+
const analysis = analyzeArchitecture(fileGraph, config);
|
|
84
|
+
const module = analysis.moduleAnalysis.modules.find(({ path }) => path === target);
|
|
85
|
+
if (module === undefined) {
|
|
86
|
+
return yield* new InspectionTargetNotFound({
|
|
87
|
+
target,
|
|
88
|
+
targetKind: 'module',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (participatesInCycle(analysis, target)) {
|
|
92
|
+
return yield* new ModuleInspectionCycle({ target });
|
|
93
|
+
}
|
|
94
|
+
return buildModuleInspection(analysis, module);
|
|
95
|
+
})), Effect.provide(ConfigServiceLive), Effect.provide(CruiserLive), Effect.provide(NodeServices.layer));
|
|
96
|
+
}
|
|
97
|
+
function buildModuleInspection(analysis, module) {
|
|
98
|
+
const target = module.path;
|
|
99
|
+
const dependencies = analysis.moduleAnalysis.dependencies;
|
|
100
|
+
return {
|
|
101
|
+
module,
|
|
102
|
+
graphRules: module.graph === undefined || module.member === undefined
|
|
103
|
+
? undefined
|
|
104
|
+
: (analysis.moduleAnalysis.graphs.find(({ id }) => id === module.graph)
|
|
105
|
+
?.rules[module.member] ?? []),
|
|
106
|
+
publicEntryPoints: [...analysis.moduleAnalysis.entryPoints]
|
|
107
|
+
.filter((entryPoint) => analysis.moduleAnalysis.membership.get(entryPoint) === target)
|
|
108
|
+
.sort(),
|
|
109
|
+
dependents: uniqueSorted(dependencies
|
|
110
|
+
.filter(({ toModule }) => toModule === target)
|
|
111
|
+
.map(({ fromModule }) => fromModule)),
|
|
112
|
+
dependencies: uniqueSorted(dependencies
|
|
113
|
+
.filter(({ fromModule }) => fromModule === target)
|
|
114
|
+
.map(({ toModule }) => toModule)),
|
|
115
|
+
hasViolations: hasModuleViolations(analysis, target),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function participatesInCycle(analysis, target) {
|
|
119
|
+
const edges = new Map();
|
|
120
|
+
for (const { fromModule, toModule } of analysis.moduleAnalysis.dependencies) {
|
|
121
|
+
const destinations = edges.get(fromModule) ?? new Set();
|
|
122
|
+
destinations.add(toModule);
|
|
123
|
+
edges.set(fromModule, destinations);
|
|
124
|
+
}
|
|
125
|
+
return findModuleCycles(edges).some((cycle) => cycle.includes(target));
|
|
126
|
+
}
|
|
127
|
+
function hasModuleViolations(analysis, target) {
|
|
128
|
+
const memberFiles = new Set([...analysis.moduleAnalysis.membership]
|
|
129
|
+
.filter(([, module]) => module === target)
|
|
130
|
+
.map(([file]) => file));
|
|
131
|
+
return (analysis.moduleAnalysis.violations.some((violation) => violationInvolvesModule(violation, target)) ||
|
|
132
|
+
analysis.layerAnalysis.forbiddenImports.some(({ fromFile, toFile }) => memberFiles.has(fromFile) || memberFiles.has(toFile)));
|
|
133
|
+
}
|
|
134
|
+
function violationInvolvesModule(violation, target) {
|
|
135
|
+
if (violation.kind === 'missing-entry-point' ||
|
|
136
|
+
violation.kind === 'unused-shared' ||
|
|
137
|
+
violation.kind === 'dead-module') {
|
|
138
|
+
return violation.module === target;
|
|
139
|
+
}
|
|
140
|
+
if (violation.kind === 'dependency' || violation.kind === 'boundary') {
|
|
141
|
+
return violation.fromModule === target || violation.toModule === target;
|
|
142
|
+
}
|
|
143
|
+
return violation.kind === 'cycle' && violation.modules.includes(target);
|
|
144
|
+
}
|
|
145
|
+
function uniqueSorted(values) {
|
|
146
|
+
return [...new Set(values)].sort();
|
|
147
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/load-changes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { ChangeSet, FileDiff } from '../../change-set-schema/index.js';
|
|
3
|
+
import { type GitError } from '../../services/git/index.js';
|
|
4
|
+
export declare function loadChangeSet(configPath: string, baseRef?: string): Effect.Effect<ChangeSet, GitError>;
|
|
5
|
+
export declare function loadFileDiff(configPath: string, path: string, baseRef?: string): Effect.Effect<FileDiff, GitError>;
|
|
6
|
+
//# sourceMappingURL=load-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-changes.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/load-changes/load-changes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE1E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,SAAS,GACf,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAKpC;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,SAAS,GACf,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAKnC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { dirname, resolve } from 'node:path';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
import { Git, GitLive } from '../../services/git/index.js';
|
|
4
|
+
export function loadChangeSet(configPath, baseRef = 'HEAD') {
|
|
5
|
+
return Effect.gen(function* () {
|
|
6
|
+
const git = yield* Git;
|
|
7
|
+
return yield* git.changeSet(projectDir(configPath), baseRef);
|
|
8
|
+
}).pipe(Effect.provide(GitLive));
|
|
9
|
+
}
|
|
10
|
+
export function loadFileDiff(configPath, path, baseRef = 'HEAD') {
|
|
11
|
+
return Effect.gen(function* () {
|
|
12
|
+
const git = yield* Git;
|
|
13
|
+
return yield* git.fileDiff(projectDir(configPath), baseRef, path);
|
|
14
|
+
}).pipe(Effect.provide(GitLive));
|
|
15
|
+
}
|
|
16
|
+
function projectDir(configPath) {
|
|
17
|
+
return dirname(resolve(configPath));
|
|
18
|
+
}
|