kirograph 0.12.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.
- package/README.md +1171 -0
- package/dist/architecture/index.d.ts +11 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +207 -0
- package/dist/architecture/index.js.map +7 -0
- package/dist/architecture/layers/csharp.d.ts +6 -0
- package/dist/architecture/layers/csharp.d.ts.map +1 -0
- package/dist/architecture/layers/csharp.js +100 -0
- package/dist/architecture/layers/csharp.js.map +7 -0
- package/dist/architecture/layers/elixir.js +116 -0
- package/dist/architecture/layers/elixir.js.map +7 -0
- package/dist/architecture/layers/go.d.ts +7 -0
- package/dist/architecture/layers/go.d.ts.map +1 -0
- package/dist/architecture/layers/go.js +117 -0
- package/dist/architecture/layers/go.js.map +7 -0
- package/dist/architecture/layers/index.d.ts +30 -0
- package/dist/architecture/layers/index.d.ts.map +1 -0
- package/dist/architecture/layers/index.js +100 -0
- package/dist/architecture/layers/index.js.map +7 -0
- package/dist/architecture/layers/java.d.ts +7 -0
- package/dist/architecture/layers/java.d.ts.map +1 -0
- package/dist/architecture/layers/java.js +119 -0
- package/dist/architecture/layers/java.js.map +7 -0
- package/dist/architecture/layers/python.d.ts +7 -0
- package/dist/architecture/layers/python.d.ts.map +1 -0
- package/dist/architecture/layers/python.js +111 -0
- package/dist/architecture/layers/python.js.map +7 -0
- package/dist/architecture/layers/ruby.d.ts +6 -0
- package/dist/architecture/layers/ruby.d.ts.map +1 -0
- package/dist/architecture/layers/ruby.js +95 -0
- package/dist/architecture/layers/ruby.js.map +7 -0
- package/dist/architecture/layers/rust.d.ts +6 -0
- package/dist/architecture/layers/rust.d.ts.map +1 -0
- package/dist/architecture/layers/rust.js +98 -0
- package/dist/architecture/layers/rust.js.map +7 -0
- package/dist/architecture/layers/types.d.ts +2 -0
- package/dist/architecture/layers/types.d.ts.map +1 -0
- package/dist/architecture/layers/types.js +17 -0
- package/dist/architecture/layers/types.js.map +7 -0
- package/dist/architecture/layers/typescript.d.ts +9 -0
- package/dist/architecture/layers/typescript.d.ts.map +1 -0
- package/dist/architecture/layers/typescript.js +143 -0
- package/dist/architecture/layers/typescript.js.map +7 -0
- package/dist/architecture/manifest/cargo.d.ts +3 -0
- package/dist/architecture/manifest/cargo.d.ts.map +1 -0
- package/dist/architecture/manifest/cargo.js +94 -0
- package/dist/architecture/manifest/cargo.js.map +7 -0
- package/dist/architecture/manifest/csproj.d.ts +3 -0
- package/dist/architecture/manifest/csproj.d.ts.map +1 -0
- package/dist/architecture/manifest/csproj.js +75 -0
- package/dist/architecture/manifest/csproj.js.map +7 -0
- package/dist/architecture/manifest/go.d.ts +3 -0
- package/dist/architecture/manifest/go.d.ts.map +1 -0
- package/dist/architecture/manifest/go.js +85 -0
- package/dist/architecture/manifest/go.js.map +7 -0
- package/dist/architecture/manifest/gradle.d.ts +3 -0
- package/dist/architecture/manifest/gradle.d.ts.map +1 -0
- package/dist/architecture/manifest/gradle.js +80 -0
- package/dist/architecture/manifest/gradle.js.map +7 -0
- package/dist/architecture/manifest/index.d.ts +12 -0
- package/dist/architecture/manifest/index.d.ts.map +1 -0
- package/dist/architecture/manifest/index.js +130 -0
- package/dist/architecture/manifest/index.js.map +7 -0
- package/dist/architecture/manifest/maven.d.ts +3 -0
- package/dist/architecture/manifest/maven.d.ts.map +1 -0
- package/dist/architecture/manifest/maven.js +76 -0
- package/dist/architecture/manifest/maven.js.map +7 -0
- package/dist/architecture/manifest/npm.d.ts +3 -0
- package/dist/architecture/manifest/npm.d.ts.map +1 -0
- package/dist/architecture/manifest/npm.js +103 -0
- package/dist/architecture/manifest/npm.js.map +7 -0
- package/dist/architecture/manifest/python.d.ts +3 -0
- package/dist/architecture/manifest/python.d.ts.map +1 -0
- package/dist/architecture/manifest/python.js +105 -0
- package/dist/architecture/manifest/python.js.map +7 -0
- package/dist/architecture/manifest/types.d.ts +2 -0
- package/dist/architecture/manifest/types.d.ts.map +1 -0
- package/dist/architecture/manifest/types.js +17 -0
- package/dist/architecture/manifest/types.js.map +7 -0
- package/dist/architecture/types.d.ts +91 -0
- package/dist/architecture/types.d.ts.map +1 -0
- package/dist/architecture/types.js +17 -0
- package/dist/architecture/types.js.map +7 -0
- package/dist/assets/logo.png +0 -0
- package/dist/banner.d.ts +6 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +67 -0
- package/dist/banner.js.map +1 -0
- package/dist/bin/banner.d.ts +6 -0
- package/dist/bin/banner.d.ts.map +1 -0
- package/dist/bin/banner.js +88 -0
- package/dist/bin/banner.js.map +7 -0
- package/dist/bin/commands/affected.d.ts +3 -0
- package/dist/bin/commands/affected.d.ts.map +1 -0
- package/dist/bin/commands/affected.js +78 -0
- package/dist/bin/commands/affected.js.map +7 -0
- package/dist/bin/commands/architecture.d.ts +3 -0
- package/dist/bin/commands/architecture.d.ts.map +1 -0
- package/dist/bin/commands/architecture.js +125 -0
- package/dist/bin/commands/architecture.js.map +7 -0
- package/dist/bin/commands/caveman.js +136 -0
- package/dist/bin/commands/caveman.js.map +7 -0
- package/dist/bin/commands/context.d.ts +3 -0
- package/dist/bin/commands/context.d.ts.map +1 -0
- package/dist/bin/commands/context.js +81 -0
- package/dist/bin/commands/context.js.map +7 -0
- package/dist/bin/commands/coupling.d.ts +3 -0
- package/dist/bin/commands/coupling.d.ts.map +1 -0
- package/dist/bin/commands/coupling.js +164 -0
- package/dist/bin/commands/coupling.js.map +7 -0
- package/dist/bin/commands/dashboard.d.ts +3 -0
- package/dist/bin/commands/dashboard.d.ts.map +1 -0
- package/dist/bin/commands/dashboard.js +209 -0
- package/dist/bin/commands/dashboard.js.map +7 -0
- package/dist/bin/commands/dead-code.js +77 -0
- package/dist/bin/commands/dead-code.js.map +7 -0
- package/dist/bin/commands/export.js +2620 -0
- package/dist/bin/commands/export.js.map +7 -0
- package/dist/bin/commands/files.d.ts +3 -0
- package/dist/bin/commands/files.d.ts.map +1 -0
- package/dist/bin/commands/files.js +104 -0
- package/dist/bin/commands/files.js.map +7 -0
- package/dist/bin/commands/help.d.ts +4 -0
- package/dist/bin/commands/help.d.ts.map +1 -0
- package/dist/bin/commands/help.js +212 -0
- package/dist/bin/commands/help.js.map +7 -0
- package/dist/bin/commands/hotspots.js +77 -0
- package/dist/bin/commands/hotspots.js.map +7 -0
- package/dist/bin/commands/index.d.ts +3 -0
- package/dist/bin/commands/index.d.ts.map +1 -0
- package/dist/bin/commands/index.js +58 -0
- package/dist/bin/commands/index.js.map +7 -0
- package/dist/bin/commands/init.d.ts +3 -0
- package/dist/bin/commands/init.d.ts.map +1 -0
- package/dist/bin/commands/init.js +68 -0
- package/dist/bin/commands/init.js.map +7 -0
- package/dist/bin/commands/install.d.ts +3 -0
- package/dist/bin/commands/install.d.ts.map +1 -0
- package/dist/bin/commands/install.js +34 -0
- package/dist/bin/commands/install.js.map +7 -0
- package/dist/bin/commands/mark-dirty.d.ts +3 -0
- package/dist/bin/commands/mark-dirty.d.ts.map +1 -0
- package/dist/bin/commands/mark-dirty.js +51 -0
- package/dist/bin/commands/mark-dirty.js.map +7 -0
- package/dist/bin/commands/package.d.ts +3 -0
- package/dist/bin/commands/package.d.ts.map +1 -0
- package/dist/bin/commands/package.js +139 -0
- package/dist/bin/commands/package.js.map +7 -0
- package/dist/bin/commands/path.js +93 -0
- package/dist/bin/commands/path.js.map +7 -0
- package/dist/bin/commands/qdrant.d.ts +3 -0
- package/dist/bin/commands/qdrant.d.ts.map +1 -0
- package/dist/bin/commands/qdrant.js +159 -0
- package/dist/bin/commands/qdrant.js.map +1 -0
- package/dist/bin/commands/query.d.ts +3 -0
- package/dist/bin/commands/query.d.ts.map +1 -0
- package/dist/bin/commands/query.js +47 -0
- package/dist/bin/commands/query.js.map +7 -0
- package/dist/bin/commands/serve.d.ts +3 -0
- package/dist/bin/commands/serve.d.ts.map +1 -0
- package/dist/bin/commands/serve.js +59 -0
- package/dist/bin/commands/serve.js.map +7 -0
- package/dist/bin/commands/snapshot.js +122 -0
- package/dist/bin/commands/snapshot.js.map +7 -0
- package/dist/bin/commands/status.d.ts +3 -0
- package/dist/bin/commands/status.d.ts.map +1 -0
- package/dist/bin/commands/status.js +107 -0
- package/dist/bin/commands/status.js.map +7 -0
- package/dist/bin/commands/stop.d.ts +3 -0
- package/dist/bin/commands/stop.d.ts.map +1 -0
- package/dist/bin/commands/stop.js +81 -0
- package/dist/bin/commands/stop.js.map +1 -0
- package/dist/bin/commands/surprising.js +79 -0
- package/dist/bin/commands/surprising.js.map +7 -0
- package/dist/bin/commands/sync-if-dirty.d.ts +3 -0
- package/dist/bin/commands/sync-if-dirty.d.ts.map +1 -0
- package/dist/bin/commands/sync-if-dirty.js +67 -0
- package/dist/bin/commands/sync-if-dirty.js.map +7 -0
- package/dist/bin/commands/sync.d.ts +3 -0
- package/dist/bin/commands/sync.d.ts.map +1 -0
- package/dist/bin/commands/sync.js +81 -0
- package/dist/bin/commands/sync.js.map +7 -0
- package/dist/bin/commands/typesense.d.ts +3 -0
- package/dist/bin/commands/typesense.d.ts.map +1 -0
- package/dist/bin/commands/typesense.js +126 -0
- package/dist/bin/commands/typesense.js.map +1 -0
- package/dist/bin/commands/uninit.d.ts +4 -0
- package/dist/bin/commands/uninit.d.ts.map +1 -0
- package/dist/bin/commands/uninit.js +123 -0
- package/dist/bin/commands/uninit.js.map +7 -0
- package/dist/bin/commands/unlock.d.ts +3 -0
- package/dist/bin/commands/unlock.d.ts.map +1 -0
- package/dist/bin/commands/unlock.js +53 -0
- package/dist/bin/commands/unlock.js.map +7 -0
- package/dist/bin/commands/utils.d.ts +12 -0
- package/dist/bin/commands/utils.d.ts.map +1 -0
- package/dist/bin/commands/utils.js +56 -0
- package/dist/bin/commands/utils.js.map +7 -0
- package/dist/bin/installer/archive.js +230 -0
- package/dist/bin/installer/archive.js.map +7 -0
- package/dist/bin/installer/caveman.js +57 -0
- package/dist/bin/installer/caveman.js.map +7 -0
- package/dist/bin/installer/cli-agent.d.ts +15 -0
- package/dist/bin/installer/cli-agent.d.ts.map +1 -0
- package/dist/bin/installer/cli-agent.js +89 -0
- package/dist/bin/installer/cli-agent.js.map +7 -0
- package/dist/bin/installer/config-prompt.d.ts +13 -0
- package/dist/bin/installer/config-prompt.d.ts.map +1 -0
- package/dist/bin/installer/config-prompt.js +158 -0
- package/dist/bin/installer/config-prompt.js.map +7 -0
- package/dist/bin/installer/dashboard.d.ts +3 -0
- package/dist/bin/installer/dashboard.d.ts.map +1 -0
- package/dist/bin/installer/dashboard.js +149 -0
- package/dist/bin/installer/dashboard.js.map +7 -0
- package/dist/bin/installer/hooks.d.ts +5 -0
- package/dist/bin/installer/hooks.d.ts.map +1 -0
- package/dist/bin/installer/hooks.js +155 -0
- package/dist/bin/installer/hooks.js.map +7 -0
- package/dist/bin/installer/index.d.ts +11 -0
- package/dist/bin/installer/index.d.ts.map +1 -0
- package/dist/bin/installer/index.js +228 -0
- package/dist/bin/installer/index.js.map +7 -0
- package/dist/bin/installer/mcp.d.ts +5 -0
- package/dist/bin/installer/mcp.d.ts.map +1 -0
- package/dist/bin/installer/mcp.js +80 -0
- package/dist/bin/installer/mcp.js.map +7 -0
- package/dist/bin/installer/prompts.d.ts +28 -0
- package/dist/bin/installer/prompts.d.ts.map +1 -0
- package/dist/bin/installer/prompts.js +134 -0
- package/dist/bin/installer/prompts.js.map +7 -0
- package/dist/bin/installer/qdrant-dashboard.d.ts +4 -0
- package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -0
- package/dist/bin/installer/qdrant-dashboard.js +115 -0
- package/dist/bin/installer/qdrant-dashboard.js.map +7 -0
- package/dist/bin/installer/steering.d.ts +5 -0
- package/dist/bin/installer/steering.d.ts.map +1 -0
- package/dist/bin/installer/steering.js +283 -0
- package/dist/bin/installer/steering.js.map +7 -0
- package/dist/bin/kirograph.d.ts +6 -0
- package/dist/bin/kirograph.d.ts.map +1 -0
- package/dist/bin/kirograph.js +95 -0
- package/dist/bin/kirograph.js.map +7 -0
- package/dist/bin/progress.d.ts +14 -0
- package/dist/bin/progress.d.ts.map +1 -0
- package/dist/bin/progress.js +201 -0
- package/dist/bin/progress.js.map +7 -0
- package/dist/bin/ui.d.ts +11 -0
- package/dist/bin/ui.d.ts.map +1 -0
- package/dist/bin/ui.js +71 -0
- package/dist/bin/ui.js.map +7 -0
- package/dist/config.d.ts +48 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +273 -0
- package/dist/config.js.map +7 -0
- package/dist/context/index.d.ts +61 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +224 -0
- package/dist/context/index.js.map +7 -0
- package/dist/core/file-tree.d.ts +15 -0
- package/dist/core/file-tree.d.ts.map +1 -0
- package/dist/core/file-tree.js +69 -0
- package/dist/core/file-tree.js.map +7 -0
- package/dist/core/lock-manager.d.ts +20 -0
- package/dist/core/lock-manager.d.ts.map +1 -0
- package/dist/core/lock-manager.js +120 -0
- package/dist/core/lock-manager.js.map +7 -0
- package/dist/core/pipeline.d.ts +37 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +375 -0
- package/dist/core/pipeline.js.map +7 -0
- package/dist/core/snapshot.js +141 -0
- package/dist/core/snapshot.js.map +7 -0
- package/dist/db/database.d.ts +133 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +929 -0
- package/dist/db/database.js.map +7 -0
- package/dist/db/schema.sql +174 -0
- package/dist/errors.d.ts +49 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +160 -0
- package/dist/errors.js.map +7 -0
- package/dist/extraction/extractor.d.ts +29 -0
- package/dist/extraction/extractor.d.ts.map +1 -0
- package/dist/extraction/extractor.js +764 -0
- package/dist/extraction/extractor.js.map +7 -0
- package/dist/extraction/grammars.d.ts +48 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +166 -0
- package/dist/extraction/grammars.js.map +7 -0
- package/dist/extraction/languages.d.ts +9 -0
- package/dist/extraction/languages.d.ts.map +1 -0
- package/dist/extraction/languages.js +103 -0
- package/dist/extraction/languages.js.map +7 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/frameworks/csharp.d.ts +8 -0
- package/dist/frameworks/csharp.d.ts.map +1 -0
- package/dist/frameworks/csharp.js +93 -0
- package/dist/frameworks/csharp.js.map +7 -0
- package/dist/frameworks/elixir.js +142 -0
- package/dist/frameworks/elixir.js.map +7 -0
- package/dist/frameworks/express.d.ts +8 -0
- package/dist/frameworks/express.d.ts.map +1 -0
- package/dist/frameworks/express.js +143 -0
- package/dist/frameworks/express.js.map +7 -0
- package/dist/frameworks/go.d.ts +8 -0
- package/dist/frameworks/go.d.ts.map +1 -0
- package/dist/frameworks/go.js +85 -0
- package/dist/frameworks/go.js.map +7 -0
- package/dist/frameworks/index.d.ts +30 -0
- package/dist/frameworks/index.d.ts.map +1 -0
- package/dist/frameworks/index.js +243 -0
- package/dist/frameworks/index.js.map +7 -0
- package/dist/frameworks/java.d.ts +8 -0
- package/dist/frameworks/java.d.ts.map +1 -0
- package/dist/frameworks/java.js +87 -0
- package/dist/frameworks/java.js.map +7 -0
- package/dist/frameworks/laravel.d.ts +9 -0
- package/dist/frameworks/laravel.d.ts.map +1 -0
- package/dist/frameworks/laravel.js +115 -0
- package/dist/frameworks/laravel.js.map +7 -0
- package/dist/frameworks/python.d.ts +10 -0
- package/dist/frameworks/python.d.ts.map +1 -0
- package/dist/frameworks/python.js +158 -0
- package/dist/frameworks/python.js.map +7 -0
- package/dist/frameworks/react.d.ts +9 -0
- package/dist/frameworks/react.d.ts.map +1 -0
- package/dist/frameworks/react.js +230 -0
- package/dist/frameworks/react.js.map +7 -0
- package/dist/frameworks/ruby.d.ts +8 -0
- package/dist/frameworks/ruby.d.ts.map +1 -0
- package/dist/frameworks/ruby.js +136 -0
- package/dist/frameworks/ruby.js.map +7 -0
- package/dist/frameworks/rust.d.ts +8 -0
- package/dist/frameworks/rust.d.ts.map +1 -0
- package/dist/frameworks/rust.js +82 -0
- package/dist/frameworks/rust.js.map +7 -0
- package/dist/frameworks/svelte.d.ts +8 -0
- package/dist/frameworks/svelte.d.ts.map +1 -0
- package/dist/frameworks/svelte.js +174 -0
- package/dist/frameworks/svelte.js.map +7 -0
- package/dist/frameworks/swift.d.ts +10 -0
- package/dist/frameworks/swift.d.ts.map +1 -0
- package/dist/frameworks/swift.js +151 -0
- package/dist/frameworks/swift.js.map +7 -0
- package/dist/frameworks/types.d.ts +37 -0
- package/dist/frameworks/types.d.ts.map +1 -0
- package/dist/frameworks/types.js +17 -0
- package/dist/frameworks/types.js.map +7 -0
- package/dist/graph/queries.d.ts +53 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +224 -0
- package/dist/graph/queries.js.map +7 -0
- package/dist/graph/traversal.d.ts +35 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +148 -0
- package/dist/graph/traversal.js.map +7 -0
- package/dist/index.d.ts +102 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +303 -0
- package/dist/index.js.map +7 -0
- package/dist/installer/index.d.ts +10 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +526 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/server.d.ts +16 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +116 -0
- package/dist/mcp/server.js.map +7 -0
- package/dist/mcp/tools.d.ts +37 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +779 -0
- package/dist/mcp/tools.js.map +7 -0
- package/dist/mcp/transport.d.ts +29 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +70 -0
- package/dist/mcp/transport.js.map +7 -0
- package/dist/resolution/index.d.ts +56 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +384 -0
- package/dist/resolution/index.js.map +7 -0
- package/dist/resolution/name-matcher.d.ts +25 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +60 -0
- package/dist/resolution/name-matcher.js.map +7 -0
- package/dist/scripts/postinstall.js +64 -0
- package/dist/search/query-utils.d.ts +21 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +219 -0
- package/dist/search/query-utils.js.map +7 -0
- package/dist/search/searcher.d.ts +15 -0
- package/dist/search/searcher.d.ts.map +1 -0
- package/dist/search/searcher.js +49 -0
- package/dist/search/searcher.js.map +7 -0
- package/dist/sync/index.d.ts +33 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +200 -0
- package/dist/sync/index.js.map +7 -0
- package/dist/types.d.ts +131 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +7 -0
- package/dist/utils.d.ts +52 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +254 -0
- package/dist/utils.js.map +7 -0
- package/dist/vectors/index.d.ts +71 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +480 -0
- package/dist/vectors/index.js.map +7 -0
- package/dist/vectors/lancedb-index.d.ts +50 -0
- package/dist/vectors/lancedb-index.d.ts.map +1 -0
- package/dist/vectors/lancedb-index.js +153 -0
- package/dist/vectors/lancedb-index.js.map +7 -0
- package/dist/vectors/orama-index.d.ts +54 -0
- package/dist/vectors/orama-index.d.ts.map +1 -0
- package/dist/vectors/orama-index.js +213 -0
- package/dist/vectors/orama-index.js.map +7 -0
- package/dist/vectors/pglite-index.d.ts +53 -0
- package/dist/vectors/pglite-index.d.ts.map +1 -0
- package/dist/vectors/pglite-index.js +194 -0
- package/dist/vectors/pglite-index.js.map +7 -0
- package/dist/vectors/qdrant-index.d.ts +70 -0
- package/dist/vectors/qdrant-index.d.ts.map +1 -0
- package/dist/vectors/qdrant-index.js +364 -0
- package/dist/vectors/qdrant-index.js.map +7 -0
- package/dist/vectors/typesense-index.d.ts +75 -0
- package/dist/vectors/typesense-index.d.ts.map +1 -0
- package/dist/vectors/typesense-index.js +453 -0
- package/dist/vectors/typesense-index.js.map +7 -0
- package/dist/vectors/vec-index.d.ts +52 -0
- package/dist/vectors/vec-index.d.ts.map +1 -0
- package/dist/vectors/vec-index.js +198 -0
- package/dist/vectors/vec-index.js.map +7 -0
- package/package.json +67 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var go_exports = {};
|
|
30
|
+
__export(go_exports, {
|
|
31
|
+
goLayerDetector: () => goLayerDetector
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(go_exports);
|
|
34
|
+
var import_picomatch = __toESM(require("picomatch"));
|
|
35
|
+
const LAYER_PATTERNS = [
|
|
36
|
+
// API layer (cmd = entry points, handler = HTTP handlers)
|
|
37
|
+
["api", "**/cmd/**", 0.85],
|
|
38
|
+
["api", "**/handler/**", 0.9],
|
|
39
|
+
["api", "**/handlers/**", 0.9],
|
|
40
|
+
["api", "**/*_handler.go", 0.9],
|
|
41
|
+
["api", "**/delivery/**", 0.85],
|
|
42
|
+
["api", "**/transport/**", 0.85],
|
|
43
|
+
["api", "**/http/**", 0.85],
|
|
44
|
+
["api", "**/grpc/**", 0.85],
|
|
45
|
+
["api", "**/api/**", 0.8],
|
|
46
|
+
// Service layer
|
|
47
|
+
["service", "**/service/**", 0.9],
|
|
48
|
+
["service", "**/services/**", 0.9],
|
|
49
|
+
["service", "**/*_service.go", 0.9],
|
|
50
|
+
["service", "**/usecase/**", 0.9],
|
|
51
|
+
["service", "**/usecases/**", 0.9],
|
|
52
|
+
["service", "**/domain/**", 0.8],
|
|
53
|
+
["service", "**/business/**", 0.85],
|
|
54
|
+
// Data layer
|
|
55
|
+
["data", "**/repository/**", 0.9],
|
|
56
|
+
["data", "**/repositories/**", 0.9],
|
|
57
|
+
["data", "**/*_repository.go", 0.9],
|
|
58
|
+
["data", "**/*_repo.go", 0.9],
|
|
59
|
+
["data", "**/store/**", 0.85],
|
|
60
|
+
["data", "**/storage/**", 0.85],
|
|
61
|
+
["data", "**/db/**", 0.85],
|
|
62
|
+
["data", "**/models/**", 0.8],
|
|
63
|
+
["data", "**/entities/**", 0.8],
|
|
64
|
+
["data", "**/migrations/**", 0.85],
|
|
65
|
+
// Shared / infrastructure layer
|
|
66
|
+
["shared", "**/pkg/**", 0.8],
|
|
67
|
+
["shared", "**/internal/**", 0.75],
|
|
68
|
+
["shared", "**/util/**", 0.85],
|
|
69
|
+
["shared", "**/utils/**", 0.85],
|
|
70
|
+
["shared", "**/common/**", 0.8],
|
|
71
|
+
["shared", "**/config/**", 0.8],
|
|
72
|
+
["shared", "**/middleware/**", 0.85],
|
|
73
|
+
["shared", "**/logger/**", 0.8]
|
|
74
|
+
];
|
|
75
|
+
const goLayerDetector = {
|
|
76
|
+
language: "go",
|
|
77
|
+
async detect(files, _projectRoot, configLayers) {
|
|
78
|
+
const results = [];
|
|
79
|
+
const configMatchers = _buildConfigMatchers(configLayers ?? {});
|
|
80
|
+
for (const file of files) {
|
|
81
|
+
if (!file.endsWith(".go")) continue;
|
|
82
|
+
const configMatch = _matchConfig(file, configMatchers);
|
|
83
|
+
if (configMatch) {
|
|
84
|
+
results.push({ ...configMatch, filePath: file });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
let best = null;
|
|
88
|
+
for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
|
|
89
|
+
if ((0, import_picomatch.default)(pattern)(file)) {
|
|
90
|
+
if (!best || confidence > best.confidence) {
|
|
91
|
+
best = { layerName, filePath: file, confidence, matchedPattern: pattern };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (best) results.push(best);
|
|
96
|
+
}
|
|
97
|
+
return results;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
function _buildConfigMatchers(configLayers) {
|
|
101
|
+
return Object.entries(configLayers).flatMap(
|
|
102
|
+
([layerName, patterns]) => patterns.map(
|
|
103
|
+
(pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
|
|
104
|
+
)
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
function _matchConfig(file, matchers) {
|
|
108
|
+
for (const [layerName, matcher, pattern] of matchers) {
|
|
109
|
+
if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
114
|
+
0 && (module.exports = {
|
|
115
|
+
goLayerDetector
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/architecture/layers/go.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Layer detector for Go projects.\n * Detects patterns common in Go service layouts (standard, Clean Architecture, DDD).\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer (cmd = entry points, handler = HTTP handlers)\n ['api', '**/cmd/**', 0.85],\n ['api', '**/handler/**', 0.9],\n ['api', '**/handlers/**', 0.9],\n ['api', '**/*_handler.go', 0.9],\n ['api', '**/delivery/**', 0.85],\n ['api', '**/transport/**', 0.85],\n ['api', '**/http/**', 0.85],\n ['api', '**/grpc/**', 0.85],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/service/**', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/*_service.go', 0.9],\n ['service', '**/usecase/**', 0.9],\n ['service', '**/usecases/**', 0.9],\n ['service', '**/domain/**', 0.8],\n ['service', '**/business/**', 0.85],\n\n // Data layer\n ['data', '**/repository/**', 0.9],\n ['data', '**/repositories/**', 0.9],\n ['data', '**/*_repository.go', 0.9],\n ['data', '**/*_repo.go', 0.9],\n ['data', '**/store/**', 0.85],\n ['data', '**/storage/**', 0.85],\n ['data', '**/db/**', 0.85],\n ['data', '**/models/**', 0.8],\n ['data', '**/entities/**', 0.8],\n ['data', '**/migrations/**', 0.85],\n\n // Shared / infrastructure layer\n ['shared', '**/pkg/**', 0.8],\n ['shared', '**/internal/**', 0.75],\n ['shared', '**/util/**', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/middleware/**', 0.85],\n ['shared', '**/logger/**', 0.8],\n];\n\nexport const goLayerDetector: LayerDetector = {\n language: 'go',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.go')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["picomatch"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layer Detector Registry
|
|
3
|
+
*
|
|
4
|
+
* Dispatches layer detection to language-specific detectors.
|
|
5
|
+
* Config-defined layers always win over auto-detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { LayerDetector, ArchLayer } from '../types';
|
|
8
|
+
export declare function getAllLayerDetectors(): LayerDetector[];
|
|
9
|
+
export declare function registerLayerDetector(detector: LayerDetector): void;
|
|
10
|
+
export interface FileLayerAssignment {
|
|
11
|
+
filePath: string;
|
|
12
|
+
layerName: string;
|
|
13
|
+
confidence: number;
|
|
14
|
+
matchedPattern: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run all language-specific layer detectors against the file list.
|
|
18
|
+
* Each file gets at most one layer assignment (highest confidence wins).
|
|
19
|
+
* Config-defined layers (confidence=1.0) always beat auto-detected ones.
|
|
20
|
+
*
|
|
21
|
+
* @param files - relative file paths (from project root)
|
|
22
|
+
* @param projectRoot - absolute project root path
|
|
23
|
+
* @param configLayers - user-defined layer→glob overrides from config
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectAllLayers(files: string[], projectRoot: string, configLayers?: Record<string, string[]>): Promise<FileLayerAssignment[]>;
|
|
26
|
+
/**
|
|
27
|
+
* From a list of FileLayerAssignment, derive the unique ArchLayer records.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildArchLayers(assignments: FileLayerAssignment[], configLayers?: Record<string, string[]>): ArchLayer[];
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,SAAS,EAAE,MAAM,UAAU,CAAC;AAmBzE,wBAAgB,oBAAoB,IAAI,aAAa,EAAE,CAEtD;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAInE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuBhC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,SAAS,EAAE,CAqBb"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var layers_exports = {};
|
|
20
|
+
__export(layers_exports, {
|
|
21
|
+
buildArchLayers: () => buildArchLayers,
|
|
22
|
+
detectAllLayers: () => detectAllLayers,
|
|
23
|
+
getAllLayerDetectors: () => getAllLayerDetectors,
|
|
24
|
+
registerLayerDetector: () => registerLayerDetector
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(layers_exports);
|
|
27
|
+
var import_typescript = require("./typescript");
|
|
28
|
+
var import_python = require("./python");
|
|
29
|
+
var import_go = require("./go");
|
|
30
|
+
var import_java = require("./java");
|
|
31
|
+
var import_ruby = require("./ruby");
|
|
32
|
+
var import_rust = require("./rust");
|
|
33
|
+
var import_csharp = require("./csharp");
|
|
34
|
+
var import_elixir = require("./elixir");
|
|
35
|
+
const LAYER_DETECTORS = [
|
|
36
|
+
import_typescript.typescriptLayerDetector,
|
|
37
|
+
import_python.pythonLayerDetector,
|
|
38
|
+
import_go.goLayerDetector,
|
|
39
|
+
import_java.javaLayerDetector,
|
|
40
|
+
import_ruby.rubyLayerDetector,
|
|
41
|
+
import_rust.rustLayerDetector,
|
|
42
|
+
import_csharp.csharpLayerDetector,
|
|
43
|
+
import_elixir.elixirLayerDetector
|
|
44
|
+
];
|
|
45
|
+
function getAllLayerDetectors() {
|
|
46
|
+
return LAYER_DETECTORS;
|
|
47
|
+
}
|
|
48
|
+
function registerLayerDetector(detector) {
|
|
49
|
+
const idx = LAYER_DETECTORS.findIndex((d) => d.language === detector.language && d.framework === detector.framework);
|
|
50
|
+
if (idx >= 0) LAYER_DETECTORS[idx] = detector;
|
|
51
|
+
else LAYER_DETECTORS.push(detector);
|
|
52
|
+
}
|
|
53
|
+
async function detectAllLayers(files, projectRoot, configLayers) {
|
|
54
|
+
const allMatches = [];
|
|
55
|
+
for (const detector of LAYER_DETECTORS) {
|
|
56
|
+
const matches = await detector.detect(files, projectRoot, configLayers);
|
|
57
|
+
allMatches.push(...matches);
|
|
58
|
+
}
|
|
59
|
+
const best = /* @__PURE__ */ new Map();
|
|
60
|
+
for (const match of allMatches) {
|
|
61
|
+
const existing = best.get(match.filePath);
|
|
62
|
+
if (!existing || match.confidence > existing.confidence) {
|
|
63
|
+
best.set(match.filePath, match);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return [...best.values()].map((m) => ({
|
|
67
|
+
filePath: m.filePath,
|
|
68
|
+
layerName: m.layerName,
|
|
69
|
+
confidence: m.confidence,
|
|
70
|
+
matchedPattern: m.matchedPattern
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
function buildArchLayers(assignments, configLayers) {
|
|
74
|
+
const layerMap = /* @__PURE__ */ new Map();
|
|
75
|
+
for (const a of assignments) {
|
|
76
|
+
if (!layerMap.has(a.layerName)) {
|
|
77
|
+
const isConfig = configLayers && a.layerName in configLayers;
|
|
78
|
+
layerMap.set(a.layerName, {
|
|
79
|
+
id: `layer:${a.layerName}`,
|
|
80
|
+
name: a.layerName,
|
|
81
|
+
source: isConfig ? "config" : "auto",
|
|
82
|
+
patterns: [],
|
|
83
|
+
updatedAt: Date.now()
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const layer = layerMap.get(a.layerName);
|
|
87
|
+
if (!layer.patterns.includes(a.matchedPattern)) {
|
|
88
|
+
layer.patterns.push(a.matchedPattern);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return [...layerMap.values()];
|
|
92
|
+
}
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
buildArchLayers,
|
|
96
|
+
detectAllLayers,
|
|
97
|
+
getAllLayerDetectors,
|
|
98
|
+
registerLayerDetector
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/architecture/layers/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Layer Detector Registry\n *\n * Dispatches layer detection to language-specific detectors.\n * Config-defined layers always win over auto-detection.\n */\nimport type { LayerDetector, ArchLayerMatch, ArchLayer } from '../types';\nimport { typescriptLayerDetector } from './typescript';\nimport { pythonLayerDetector } from './python';\nimport { goLayerDetector } from './go';\nimport { javaLayerDetector } from './java';\nimport { rubyLayerDetector } from './ruby';\nimport { rustLayerDetector } from './rust';\nimport { csharpLayerDetector } from './csharp';\nimport { elixirLayerDetector } from './elixir';\n\nconst LAYER_DETECTORS: LayerDetector[] = [\n typescriptLayerDetector,\n pythonLayerDetector,\n goLayerDetector,\n javaLayerDetector,\n rubyLayerDetector,\n rustLayerDetector,\n csharpLayerDetector,\n elixirLayerDetector,\n];\n\nexport function getAllLayerDetectors(): LayerDetector[] {\n return LAYER_DETECTORS;\n}\n\nexport function registerLayerDetector(detector: LayerDetector): void {\n const idx = LAYER_DETECTORS.findIndex(d => d.language === detector.language && d.framework === detector.framework);\n if (idx >= 0) LAYER_DETECTORS[idx] = detector;\n else LAYER_DETECTORS.push(detector);\n}\n\nexport interface FileLayerAssignment {\n filePath: string;\n layerName: string;\n confidence: number;\n matchedPattern: string;\n}\n\n/**\n * Run all language-specific layer detectors against the file list.\n * Each file gets at most one layer assignment (highest confidence wins).\n * Config-defined layers (confidence=1.0) always beat auto-detected ones.\n *\n * @param files - relative file paths (from project root)\n * @param projectRoot - absolute project root path\n * @param configLayers - user-defined layer\u2192glob overrides from config\n */\nexport async function detectAllLayers(\n files: string[],\n projectRoot: string,\n configLayers?: Record<string, string[]>\n): Promise<FileLayerAssignment[]> {\n // Collect all matches from all detectors\n const allMatches: ArchLayerMatch[] = [];\n for (const detector of LAYER_DETECTORS) {\n const matches = await detector.detect(files, projectRoot, configLayers);\n allMatches.push(...matches);\n }\n\n // Per file, keep the highest-confidence match\n const best = new Map<string, ArchLayerMatch>();\n for (const match of allMatches) {\n const existing = best.get(match.filePath);\n if (!existing || match.confidence > existing.confidence) {\n best.set(match.filePath, match);\n }\n }\n\n return [...best.values()].map(m => ({\n filePath: m.filePath,\n layerName: m.layerName,\n confidence: m.confidence,\n matchedPattern: m.matchedPattern,\n }));\n}\n\n/**\n * From a list of FileLayerAssignment, derive the unique ArchLayer records.\n */\nexport function buildArchLayers(\n assignments: FileLayerAssignment[],\n configLayers?: Record<string, string[]>\n): ArchLayer[] {\n const layerMap = new Map<string, ArchLayer>();\n\n for (const a of assignments) {\n if (!layerMap.has(a.layerName)) {\n const isConfig = configLayers && a.layerName in configLayers;\n layerMap.set(a.layerName, {\n id: `layer:${a.layerName}`,\n name: a.layerName,\n source: isConfig ? 'config' : 'auto',\n patterns: [],\n updatedAt: Date.now(),\n });\n }\n const layer = layerMap.get(a.layerName)!;\n if (!layer.patterns.includes(a.matchedPattern)) {\n layer.patterns.push(a.matchedPattern);\n }\n }\n\n return [...layerMap.values()];\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAAwC;AACxC,oBAAoC;AACpC,gBAAgC;AAChC,kBAAkC;AAClC,kBAAkC;AAClC,kBAAkC;AAClC,oBAAoC;AACpC,oBAAoC;AAEpC,MAAM,kBAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,uBAAwC;AACtD,SAAO;AACT;AAEO,SAAS,sBAAsB,UAA+B;AACnE,QAAM,MAAM,gBAAgB,UAAU,OAAK,EAAE,aAAa,SAAS,YAAY,EAAE,cAAc,SAAS,SAAS;AACjH,MAAI,OAAO,EAAG,iBAAgB,GAAG,IAAI;AAAA,MAChC,iBAAgB,KAAK,QAAQ;AACpC;AAkBA,eAAsB,gBACpB,OACA,aACA,cACgC;AAEhC,QAAM,aAA+B,CAAC;AACtC,aAAW,YAAY,iBAAiB;AACtC,UAAM,UAAU,MAAM,SAAS,OAAO,OAAO,aAAa,YAAY;AACtE,eAAW,KAAK,GAAG,OAAO;AAAA,EAC5B;AAGA,QAAM,OAAO,oBAAI,IAA4B;AAC7C,aAAW,SAAS,YAAY;AAC9B,UAAM,WAAW,KAAK,IAAI,MAAM,QAAQ;AACxC,QAAI,CAAC,YAAY,MAAM,aAAa,SAAS,YAAY;AACvD,WAAK,IAAI,MAAM,UAAU,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,IAAI,QAAM;AAAA,IAClC,UAAU,EAAE;AAAA,IACZ,WAAW,EAAE;AAAA,IACb,YAAY,EAAE;AAAA,IACd,gBAAgB,EAAE;AAAA,EACpB,EAAE;AACJ;AAKO,SAAS,gBACd,aACA,cACa;AACb,QAAM,WAAW,oBAAI,IAAuB;AAE5C,aAAW,KAAK,aAAa;AAC3B,QAAI,CAAC,SAAS,IAAI,EAAE,SAAS,GAAG;AAC9B,YAAM,WAAW,gBAAgB,EAAE,aAAa;AAChD,eAAS,IAAI,EAAE,WAAW;AAAA,QACxB,IAAI,SAAS,EAAE,SAAS;AAAA,QACxB,MAAM,EAAE;AAAA,QACR,QAAQ,WAAW,WAAW;AAAA,QAC9B,UAAU,CAAC;AAAA,QACX,WAAW,KAAK,IAAI;AAAA,MACtB,CAAC;AAAA,IACH;AACA,UAAM,QAAQ,SAAS,IAAI,EAAE,SAAS;AACtC,QAAI,CAAC,MAAM,SAAS,SAAS,EAAE,cAAc,GAAG;AAC9C,YAAM,SAAS,KAAK,EAAE,cAAc;AAAA,IACtC;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,SAAS,OAAO,CAAC;AAC9B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/java.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAiD9D,eAAO,MAAM,iBAAiB,EAAE,aA6B/B,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var java_exports = {};
|
|
30
|
+
__export(java_exports, {
|
|
31
|
+
javaLayerDetector: () => javaLayerDetector
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(java_exports);
|
|
34
|
+
var import_picomatch = __toESM(require("picomatch"));
|
|
35
|
+
const LAYER_PATTERNS = [
|
|
36
|
+
// API layer
|
|
37
|
+
["api", "**/controller/**", 0.95],
|
|
38
|
+
["api", "**/controllers/**", 0.95],
|
|
39
|
+
["api", "**/*Controller.java", 0.95],
|
|
40
|
+
["api", "**/*Controller.kt", 0.95],
|
|
41
|
+
["api", "**/*Resource.java", 0.9],
|
|
42
|
+
["api", "**/rest/**", 0.85],
|
|
43
|
+
["api", "**/web/**", 0.8],
|
|
44
|
+
["api", "**/api/**", 0.8],
|
|
45
|
+
// Service layer
|
|
46
|
+
["service", "**/service/**", 0.9],
|
|
47
|
+
["service", "**/services/**", 0.9],
|
|
48
|
+
["service", "**/*Service.java", 0.9],
|
|
49
|
+
["service", "**/*Service.kt", 0.9],
|
|
50
|
+
["service", "**/*ServiceImpl.java", 0.9],
|
|
51
|
+
["service", "**/usecase/**", 0.85],
|
|
52
|
+
["service", "**/domain/**", 0.8],
|
|
53
|
+
// Data layer
|
|
54
|
+
["data", "**/repository/**", 0.95],
|
|
55
|
+
["data", "**/repositories/**", 0.95],
|
|
56
|
+
["data", "**/*Repository.java", 0.95],
|
|
57
|
+
["data", "**/*Repository.kt", 0.95],
|
|
58
|
+
["data", "**/*Dao.java", 0.9],
|
|
59
|
+
["data", "**/*Dao.kt", 0.9],
|
|
60
|
+
["data", "**/entity/**", 0.9],
|
|
61
|
+
["data", "**/entities/**", 0.9],
|
|
62
|
+
["data", "**/*Entity.java", 0.9],
|
|
63
|
+
["data", "**/model/**", 0.8],
|
|
64
|
+
["data", "**/models/**", 0.8],
|
|
65
|
+
["data", "**/persistence/**", 0.85],
|
|
66
|
+
["data", "**/migration/**", 0.85],
|
|
67
|
+
// Shared / infrastructure
|
|
68
|
+
["shared", "**/util/**", 0.85],
|
|
69
|
+
["shared", "**/utils/**", 0.85],
|
|
70
|
+
["shared", "**/*Util.java", 0.85],
|
|
71
|
+
["shared", "**/common/**", 0.8],
|
|
72
|
+
["shared", "**/config/**", 0.8],
|
|
73
|
+
["shared", "**/*Config.java", 0.8],
|
|
74
|
+
["shared", "**/exception/**", 0.8],
|
|
75
|
+
["shared", "**/security/**", 0.8]
|
|
76
|
+
];
|
|
77
|
+
const javaLayerDetector = {
|
|
78
|
+
language: "java",
|
|
79
|
+
async detect(files, _projectRoot, configLayers) {
|
|
80
|
+
const results = [];
|
|
81
|
+
const configMatchers = _buildConfigMatchers(configLayers ?? {});
|
|
82
|
+
for (const file of files) {
|
|
83
|
+
if (!file.endsWith(".java") && !file.endsWith(".kt")) continue;
|
|
84
|
+
const configMatch = _matchConfig(file, configMatchers);
|
|
85
|
+
if (configMatch) {
|
|
86
|
+
results.push({ ...configMatch, filePath: file });
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
let best = null;
|
|
90
|
+
for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
|
|
91
|
+
if ((0, import_picomatch.default)(pattern)(file)) {
|
|
92
|
+
if (!best || confidence > best.confidence) {
|
|
93
|
+
best = { layerName, filePath: file, confidence, matchedPattern: pattern };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (best) results.push(best);
|
|
98
|
+
}
|
|
99
|
+
return results;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
function _buildConfigMatchers(configLayers) {
|
|
103
|
+
return Object.entries(configLayers).flatMap(
|
|
104
|
+
([layerName, patterns]) => patterns.map(
|
|
105
|
+
(pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
|
|
106
|
+
)
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
function _matchConfig(file, matchers) {
|
|
110
|
+
for (const [layerName, matcher, pattern] of matchers) {
|
|
111
|
+
if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
116
|
+
0 && (module.exports = {
|
|
117
|
+
javaLayerDetector
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=java.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/architecture/layers/java.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Layer detector for Java/Kotlin projects.\n * Detects Spring MVC / layered architecture patterns.\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer\n ['api', '**/controller/**', 0.95],\n ['api', '**/controllers/**', 0.95],\n ['api', '**/*Controller.java', 0.95],\n ['api', '**/*Controller.kt', 0.95],\n ['api', '**/*Resource.java', 0.9],\n ['api', '**/rest/**', 0.85],\n ['api', '**/web/**', 0.8],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/service/**', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/*Service.java', 0.9],\n ['service', '**/*Service.kt', 0.9],\n ['service', '**/*ServiceImpl.java', 0.9],\n ['service', '**/usecase/**', 0.85],\n ['service', '**/domain/**', 0.8],\n\n // Data layer\n ['data', '**/repository/**', 0.95],\n ['data', '**/repositories/**', 0.95],\n ['data', '**/*Repository.java', 0.95],\n ['data', '**/*Repository.kt', 0.95],\n ['data', '**/*Dao.java', 0.9],\n ['data', '**/*Dao.kt', 0.9],\n ['data', '**/entity/**', 0.9],\n ['data', '**/entities/**', 0.9],\n ['data', '**/*Entity.java', 0.9],\n ['data', '**/model/**', 0.8],\n ['data', '**/models/**', 0.8],\n ['data', '**/persistence/**', 0.85],\n ['data', '**/migration/**', 0.85],\n\n // Shared / infrastructure\n ['shared', '**/util/**', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/*Util.java', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/*Config.java', 0.8],\n ['shared', '**/exception/**', 0.8],\n ['shared', '**/security/**', 0.8],\n];\n\nexport const javaLayerDetector: LayerDetector = {\n language: 'java',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.java') && !file.endsWith('.kt')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["picomatch"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layer detector for Python projects.
|
|
3
|
+
* Detects patterns common in Django, Flask, FastAPI, and generic Python projects.
|
|
4
|
+
*/
|
|
5
|
+
import type { LayerDetector } from '../types';
|
|
6
|
+
export declare const pythonLayerDetector: LayerDetector;
|
|
7
|
+
//# sourceMappingURL=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/python.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAyC9D,eAAO,MAAM,mBAAmB,EAAE,aA6BjC,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var python_exports = {};
|
|
30
|
+
__export(python_exports, {
|
|
31
|
+
pythonLayerDetector: () => pythonLayerDetector
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(python_exports);
|
|
34
|
+
var import_picomatch = __toESM(require("picomatch"));
|
|
35
|
+
const LAYER_PATTERNS = [
|
|
36
|
+
// API layer
|
|
37
|
+
["api", "**/views.py", 0.9],
|
|
38
|
+
["api", "**/views/**", 0.9],
|
|
39
|
+
["api", "**/viewsets.py", 0.9],
|
|
40
|
+
["api", "**/urls.py", 0.85],
|
|
41
|
+
["api", "**/routers.py", 0.85],
|
|
42
|
+
["api", "**/endpoints/**", 0.9],
|
|
43
|
+
["api", "**/api/**", 0.8],
|
|
44
|
+
// Service layer
|
|
45
|
+
["service", "**/services.py", 0.9],
|
|
46
|
+
["service", "**/services/**", 0.9],
|
|
47
|
+
["service", "**/tasks.py", 0.8],
|
|
48
|
+
["service", "**/tasks/**", 0.8],
|
|
49
|
+
["service", "**/use_cases/**", 0.85],
|
|
50
|
+
["service", "**/domain/**", 0.8],
|
|
51
|
+
// Data layer
|
|
52
|
+
["data", "**/models.py", 0.9],
|
|
53
|
+
["data", "**/models/**", 0.9],
|
|
54
|
+
["data", "**/migrations/**", 0.85],
|
|
55
|
+
["data", "**/repositories/**", 0.9],
|
|
56
|
+
["data", "**/serializers.py", 0.8],
|
|
57
|
+
["data", "**/schemas.py", 0.8],
|
|
58
|
+
["data", "**/db/**", 0.8],
|
|
59
|
+
// Shared layer
|
|
60
|
+
["shared", "**/utils.py", 0.85],
|
|
61
|
+
["shared", "**/utils/**", 0.85],
|
|
62
|
+
["shared", "**/helpers.py", 0.85],
|
|
63
|
+
["shared", "**/helpers/**", 0.85],
|
|
64
|
+
["shared", "**/common/**", 0.8],
|
|
65
|
+
["shared", "**/config/**", 0.8],
|
|
66
|
+
["shared", "**/settings.py", 0.75],
|
|
67
|
+
["shared", "**/middleware.py", 0.8]
|
|
68
|
+
];
|
|
69
|
+
const pythonLayerDetector = {
|
|
70
|
+
language: "python",
|
|
71
|
+
async detect(files, _projectRoot, configLayers) {
|
|
72
|
+
const results = [];
|
|
73
|
+
const configMatchers = _buildConfigMatchers(configLayers ?? {});
|
|
74
|
+
for (const file of files) {
|
|
75
|
+
if (!file.endsWith(".py")) continue;
|
|
76
|
+
const configMatch = _matchConfig(file, configMatchers);
|
|
77
|
+
if (configMatch) {
|
|
78
|
+
results.push({ ...configMatch, filePath: file });
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
let best = null;
|
|
82
|
+
for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
|
|
83
|
+
if ((0, import_picomatch.default)(pattern)(file)) {
|
|
84
|
+
if (!best || confidence > best.confidence) {
|
|
85
|
+
best = { layerName, filePath: file, confidence, matchedPattern: pattern };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (best) results.push(best);
|
|
90
|
+
}
|
|
91
|
+
return results;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
function _buildConfigMatchers(configLayers) {
|
|
95
|
+
return Object.entries(configLayers).flatMap(
|
|
96
|
+
([layerName, patterns]) => patterns.map(
|
|
97
|
+
(pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
|
|
98
|
+
)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
function _matchConfig(file, matchers) {
|
|
102
|
+
for (const [layerName, matcher, pattern] of matchers) {
|
|
103
|
+
if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
108
|
+
0 && (module.exports = {
|
|
109
|
+
pythonLayerDetector
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/architecture/layers/python.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Layer detector for Python projects.\n * Detects patterns common in Django, Flask, FastAPI, and generic Python projects.\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer\n ['api', '**/views.py', 0.9],\n ['api', '**/views/**', 0.9],\n ['api', '**/viewsets.py', 0.9],\n ['api', '**/urls.py', 0.85],\n ['api', '**/routers.py', 0.85],\n ['api', '**/endpoints/**', 0.9],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/services.py', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/tasks.py', 0.8],\n ['service', '**/tasks/**', 0.8],\n ['service', '**/use_cases/**', 0.85],\n ['service', '**/domain/**', 0.8],\n\n // Data layer\n ['data', '**/models.py', 0.9],\n ['data', '**/models/**', 0.9],\n ['data', '**/migrations/**', 0.85],\n ['data', '**/repositories/**', 0.9],\n ['data', '**/serializers.py', 0.8],\n ['data', '**/schemas.py', 0.8],\n ['data', '**/db/**', 0.8],\n\n // Shared layer\n ['shared', '**/utils.py', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/helpers.py', 0.85],\n ['shared', '**/helpers/**', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/settings.py', 0.75],\n ['shared', '**/middleware.py', 0.8],\n];\n\nexport const pythonLayerDetector: LayerDetector = {\n language: 'python',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.py')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,uBAAsB;AAEtB,MAAM,iBAAkD;AAAA;AAAA,EAEtD,CAAC,OAAO,eAAe,GAAG;AAAA,EAC1B,CAAC,OAAO,eAAe,GAAG;AAAA,EAC1B,CAAC,OAAO,kBAAkB,GAAG;AAAA,EAC7B,CAAC,OAAO,cAAc,IAAI;AAAA,EAC1B,CAAC,OAAO,iBAAiB,IAAI;AAAA,EAC7B,CAAC,OAAO,mBAAmB,GAAG;AAAA,EAC9B,CAAC,OAAO,aAAa,GAAG;AAAA;AAAA,EAGxB,CAAC,WAAW,kBAAkB,GAAG;AAAA,EACjC,CAAC,WAAW,kBAAkB,GAAG;AAAA,EACjC,CAAC,WAAW,eAAe,GAAG;AAAA,EAC9B,CAAC,WAAW,eAAe,GAAG;AAAA,EAC9B,CAAC,WAAW,mBAAmB,IAAI;AAAA,EACnC,CAAC,WAAW,gBAAgB,GAAG;AAAA;AAAA,EAG/B,CAAC,QAAQ,gBAAgB,GAAG;AAAA,EAC5B,CAAC,QAAQ,gBAAgB,GAAG;AAAA,EAC5B,CAAC,QAAQ,oBAAoB,IAAI;AAAA,EACjC,CAAC,QAAQ,sBAAsB,GAAG;AAAA,EAClC,CAAC,QAAQ,qBAAqB,GAAG;AAAA,EACjC,CAAC,QAAQ,iBAAiB,GAAG;AAAA,EAC7B,CAAC,QAAQ,YAAY,GAAG;AAAA;AAAA,EAGxB,CAAC,UAAU,eAAe,IAAI;AAAA,EAC9B,CAAC,UAAU,eAAe,IAAI;AAAA,EAC9B,CAAC,UAAU,iBAAiB,IAAI;AAAA,EAChC,CAAC,UAAU,iBAAiB,IAAI;AAAA,EAChC,CAAC,UAAU,gBAAgB,GAAG;AAAA,EAC9B,CAAC,UAAU,gBAAgB,GAAG;AAAA,EAC9B,CAAC,UAAU,kBAAkB,IAAI;AAAA,EACjC,CAAC,UAAU,oBAAoB,GAAG;AACpC;AAEO,MAAM,sBAAqC;AAAA,EAChD,UAAU;AAAA,EAEV,MAAM,OAAO,OAAiB,cAAsB,cAAoE;AACtH,UAAM,UAA4B,CAAC;AACnC,UAAM,iBAAiB,qBAAqB,gBAAgB,CAAC,CAAC;AAE9D,eAAW,QAAQ,OAAO;AACxB,UAAI,CAAC,KAAK,SAAS,KAAK,EAAG;AAE3B,YAAM,cAAc,aAAa,MAAM,cAAc;AACrD,UAAI,aAAa;AACf,gBAAQ,KAAK,EAAE,GAAG,aAAa,UAAU,KAAK,CAAC;AAC/C;AAAA,MACF;AAEA,UAAI,OAA8B;AAClC,iBAAW,CAAC,WAAW,SAAS,UAAU,KAAK,gBAAgB;AAC7D,gBAAI,iBAAAA,SAAU,OAAO,EAAE,IAAI,GAAG;AAC5B,cAAI,CAAC,QAAQ,aAAa,KAAK,YAAY;AACzC,mBAAO,EAAE,WAAW,UAAU,MAAM,YAAY,gBAAgB,QAAQ;AAAA,UAC1E;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAM,SAAQ,KAAK,IAAI;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,cAA+F;AAC3H,SAAO,OAAO,QAAQ,YAAY,EAAE;AAAA,IAAQ,CAAC,CAAC,WAAW,QAAQ,MAC/D,SAAS;AAAA,MAAI,CAAC,YACZ,CAAC,eAAW,iBAAAA,SAAU,OAAO,GAAG,OAAO;AAAA,IACzC;AAAA,EACF;AACF;AAEA,SAAS,aACP,MACA,UACyC;AACzC,aAAW,CAAC,WAAW,SAAS,OAAO,KAAK,UAAU;AACpD,QAAI,QAAQ,IAAI,EAAG,QAAO,EAAE,WAAW,YAAY,GAAK,gBAAgB,UAAU,OAAO,GAAG;AAAA,EAC9F;AACA,SAAO;AACT;",
|
|
6
|
+
"names": ["picomatch"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/ruby.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAsB9D,eAAO,MAAM,iBAAiB,EAAE,aAyB/B,CAAC"}
|