@eui/mcp 1.0.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -743
- package/dist/config/__tests__/schema.property.test.d.ts +2 -0
- package/dist/config/__tests__/schema.property.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.property.test.js +203 -0
- package/dist/config/__tests__/schema.property.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +2 -0
- package/dist/config/__tests__/schema.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.test.js +454 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/loader.js +4 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/loader/__tests__/cache-manager.property.test.d.ts +2 -0
- package/dist/loader/__tests__/cache-manager.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/cache-manager.property.test.js +245 -0
- package/dist/loader/__tests__/cache-manager.property.test.js.map +1 -0
- package/dist/loader/__tests__/cache-manager.test.d.ts +2 -0
- package/dist/loader/__tests__/cache-manager.test.d.ts.map +1 -0
- package/dist/loader/__tests__/cache-manager.test.js +256 -0
- package/dist/loader/__tests__/cache-manager.test.js.map +1 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.d.ts +2 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.d.ts.map +1 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.js +498 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.js.map +1 -0
- package/dist/loader/__tests__/documentation-loader.property.test.d.ts +2 -0
- package/dist/loader/__tests__/documentation-loader.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/documentation-loader.property.test.js +258 -0
- package/dist/loader/__tests__/documentation-loader.property.test.js.map +1 -0
- package/dist/loader/__tests__/errors.test.d.ts +2 -0
- package/dist/loader/__tests__/errors.test.d.ts.map +1 -0
- package/dist/loader/__tests__/errors.test.js +132 -0
- package/dist/loader/__tests__/errors.test.js.map +1 -0
- package/dist/loader/__tests__/http-client.property.test.d.ts +2 -0
- package/dist/loader/__tests__/http-client.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/http-client.property.test.js +288 -0
- package/dist/loader/__tests__/http-client.property.test.js.map +1 -0
- package/dist/loader/__tests__/http-client.test.d.ts +2 -0
- package/dist/loader/__tests__/http-client.test.d.ts.map +1 -0
- package/dist/loader/__tests__/http-client.test.js +497 -0
- package/dist/loader/__tests__/http-client.test.js.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.d.ts +2 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.js +373 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.js.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.test.d.ts +2 -0
- package/dist/loader/__tests__/local-documentation-source.test.d.ts.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.test.js +544 -0
- package/dist/loader/__tests__/local-documentation-source.test.js.map +1 -0
- package/dist/loader/__tests__/path-type-detector.property.test.d.ts +2 -0
- package/dist/loader/__tests__/path-type-detector.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/path-type-detector.property.test.js +245 -0
- package/dist/loader/__tests__/path-type-detector.property.test.js.map +1 -0
- package/dist/loader/__tests__/path-type-detector.test.d.ts +2 -0
- package/dist/loader/__tests__/path-type-detector.test.d.ts.map +1 -0
- package/dist/loader/__tests__/path-type-detector.test.js +390 -0
- package/dist/loader/__tests__/path-type-detector.test.js.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts +2 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.js +462 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.js.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.test.d.ts +2 -0
- package/dist/loader/__tests__/remote-documentation-source.test.d.ts.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.test.js +707 -0
- package/dist/loader/__tests__/remote-documentation-source.test.js.map +1 -0
- package/dist/loader/remote-documentation-source.d.ts +0 -4
- package/dist/loader/remote-documentation-source.d.ts.map +1 -1
- package/dist/loader/remote-documentation-source.js +1 -4
- package/dist/loader/remote-documentation-source.js.map +1 -1
- package/dist/main.js +0 -0
- package/dist/main.js.map +1 -1
- package/dist/mcp/__tests__/server.property.test.d.ts +2 -0
- package/dist/mcp/__tests__/server.property.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/server.property.test.js +286 -0
- package/dist/mcp/__tests__/server.property.test.js.map +1 -0
- package/dist/mcp/__tests__/server.test.d.ts +2 -0
- package/dist/mcp/__tests__/server.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/server.test.js +101 -0
- package/dist/mcp/__tests__/server.test.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +16 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/publish/__tests__/publish-utils.test.d.ts +5 -0
- package/dist/publish/__tests__/publish-utils.test.d.ts.map +1 -0
- package/dist/publish/__tests__/publish-utils.test.js +189 -0
- package/dist/publish/__tests__/publish-utils.test.js.map +1 -0
- package/dist/query/__tests__/deprecation-parser.test.d.ts +2 -0
- package/dist/query/__tests__/deprecation-parser.test.d.ts.map +1 -0
- package/dist/query/__tests__/deprecation-parser.test.js +154 -0
- package/dist/query/__tests__/deprecation-parser.test.js.map +1 -0
- package/dist/query/__tests__/deprecation-query.test.d.ts +2 -0
- package/dist/query/__tests__/deprecation-query.test.d.ts.map +1 -0
- package/dist/query/__tests__/deprecation-query.test.js +199 -0
- package/dist/query/__tests__/deprecation-query.test.js.map +1 -0
- package/dist/query/__tests__/index-builder-debug.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder-debug.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder-debug.test.js +34 -0
- package/dist/query/__tests__/index-builder-debug.test.js.map +1 -0
- package/dist/query/__tests__/index-builder.property.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder.property.test.js +422 -0
- package/dist/query/__tests__/index-builder.property.test.js.map +1 -0
- package/dist/query/__tests__/index-builder.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder.test.js +55 -0
- package/dist/query/__tests__/index-builder.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.js +159 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.integration.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.integration.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.integration.test.js +140 -0
- package/dist/query/__tests__/result-formatter.integration.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.property.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.property.test.js +163 -0
- package/dist/query/__tests__/result-formatter.property.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.test.js +85 -0
- package/dist/query/__tests__/result-formatter.test.js.map +1 -0
- package/dist/query/__tests__/search-engine.property.test.d.ts +2 -0
- package/dist/query/__tests__/search-engine.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/search-engine.property.test.js +389 -0
- package/dist/query/__tests__/search-engine.property.test.js.map +1 -0
- package/dist/query/deprecation-parser.d.ts +46 -0
- package/dist/query/deprecation-parser.d.ts.map +1 -0
- package/dist/query/deprecation-parser.js +81 -0
- package/dist/query/deprecation-parser.js.map +1 -0
- package/dist/query/deprecation-query.d.ts +19 -0
- package/dist/query/deprecation-query.d.ts.map +1 -0
- package/dist/query/deprecation-query.js +73 -0
- package/dist/query/deprecation-query.js.map +1 -0
- package/dist/query/result-formatter.d.ts +27 -0
- package/dist/query/result-formatter.d.ts.map +1 -1
- package/dist/query/result-formatter.js +64 -5
- package/dist/query/result-formatter.js.map +1 -1
- package/dist/tools/__tests__/deprecation-tools.test.d.ts +2 -0
- package/dist/tools/__tests__/deprecation-tools.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deprecation-tools.test.js +178 -0
- package/dist/tools/__tests__/deprecation-tools.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-docs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-docs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-docs.property.test.js +594 -0
- package/dist/tools/__tests__/get-component-docs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-docs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-docs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-docs.test.js +137 -0
- package/dist/tools/__tests__/get-component-docs.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-examples.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-examples.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-examples.property.test.js +245 -0
- package/dist/tools/__tests__/get-component-examples.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-examples.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-examples.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-examples.test.js +128 -0
- package/dist/tools/__tests__/get-component-examples.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.js +310 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-inputs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.test.js +245 -0
- package/dist/tools/__tests__/get-component-inputs.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.js +227 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-outputs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.test.js +189 -0
- package/dist/tools/__tests__/get-component-outputs.test.js.map +1 -0
- package/dist/tools/__tests__/get-library-version.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-library-version.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-library-version.property.test.js +115 -0
- package/dist/tools/__tests__/get-library-version.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-library-version.test.d.ts +2 -0
- package/dist/tools/__tests__/get-library-version.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-library-version.test.js +97 -0
- package/dist/tools/__tests__/get-library-version.test.js.map +1 -0
- package/dist/tools/__tests__/list-components.property.test.d.ts +2 -0
- package/dist/tools/__tests__/list-components.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/list-components.property.test.js +241 -0
- package/dist/tools/__tests__/list-components.property.test.js.map +1 -0
- package/dist/tools/__tests__/list-components.test.d.ts +2 -0
- package/dist/tools/__tests__/list-components.test.d.ts.map +1 -0
- package/dist/tools/__tests__/list-components.test.js +170 -0
- package/dist/tools/__tests__/list-components.test.js.map +1 -0
- package/dist/tools/__tests__/search-components.test.d.ts +2 -0
- package/dist/tools/__tests__/search-components.test.d.ts.map +1 -0
- package/dist/tools/__tests__/search-components.test.js +239 -0
- package/dist/tools/__tests__/search-components.test.js.map +1 -0
- package/dist/tools/get-deprecation-info.d.ts +42 -0
- package/dist/tools/get-deprecation-info.d.ts.map +1 -0
- package/dist/tools/get-deprecation-info.js +55 -0
- package/dist/tools/get-deprecation-info.js.map +1 -0
- package/dist/tools/get-library-version.d.ts +33 -0
- package/dist/tools/get-library-version.d.ts.map +1 -0
- package/dist/tools/get-library-version.js +62 -0
- package/dist/tools/get-library-version.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-deprecated.d.ts +47 -0
- package/dist/tools/list-deprecated.d.ts.map +1 -0
- package/dist/tools/list-deprecated.js +56 -0
- package/dist/tools/list-deprecated.js.map +1 -0
- package/dist/types/compodoc.d.ts +1 -0
- package/dist/types/compodoc.d.ts.map +1 -1
- package/dist/types/deprecation.d.ts +33 -0
- package/dist/types/deprecation.d.ts.map +1 -0
- package/dist/types/deprecation.js +5 -0
- package/dist/types/deprecation.js.map +1 -0
- package/dist/utils/__tests__/credential-masking.property.test.d.ts +2 -0
- package/dist/utils/__tests__/credential-masking.property.test.d.ts.map +1 -0
- package/dist/utils/__tests__/credential-masking.property.test.js +145 -0
- package/dist/utils/__tests__/credential-masking.property.test.js.map +1 -0
- package/dist/utils/__tests__/credential-masking.test.d.ts +2 -0
- package/dist/utils/__tests__/credential-masking.test.d.ts.map +1 -0
- package/dist/utils/__tests__/credential-masking.test.js +188 -0
- package/dist/utils/__tests__/credential-masking.test.js.map +1 -0
- package/dist/utils/__tests__/errors.test.d.ts +2 -0
- package/dist/utils/__tests__/errors.test.d.ts.map +1 -0
- package/dist/utils/__tests__/errors.test.js +110 -0
- package/dist/utils/__tests__/errors.test.js.map +1 -0
- package/dist/utils/__tests__/integration.test.d.ts +2 -0
- package/dist/utils/__tests__/integration.test.d.ts.map +1 -0
- package/dist/utils/__tests__/integration.test.js +142 -0
- package/dist/utils/__tests__/integration.test.js.map +1 -0
- package/dist/utils/__tests__/logger.test.d.ts +2 -0
- package/dist/utils/__tests__/logger.test.d.ts.map +1 -0
- package/dist/utils/__tests__/logger.test.js +119 -0
- package/dist/utils/__tests__/logger.test.js.map +1 -0
- package/dist/utils/__tests__/retry.test.d.ts +2 -0
- package/dist/utils/__tests__/retry.test.d.ts.map +1 -0
- package/dist/utils/__tests__/retry.test.js +84 -0
- package/dist/utils/__tests__/retry.test.js.map +1 -0
- package/dist/utils/credential-masking.js +4 -4
- package/dist/utils/credential-masking.js.map +1 -1
- package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts +2 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.js +297 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.js.map +1 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts +2 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.js +396 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.js.map +1 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.d.ts +11 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.js +452 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-action.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-action.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-action.property.test.js +50 -0
- package/dist/version/__tests__/dry-run-action.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.js +53 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-utils.test.d.ts +7 -0
- package/dist/version/__tests__/dry-run-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-utils.test.js +205 -0
- package/dist/version/__tests__/dry-run-utils.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-version.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-version.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-version.property.test.js +59 -0
- package/dist/version/__tests__/dry-run-version.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.d.ts +11 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.js +271 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-format.property.test.d.ts +11 -0
- package/dist/version/__tests__/git-tag-format.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-format.property.test.js +411 -0
- package/dist/version/__tests__/git-tag-format.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-utils.test.d.ts +2 -0
- package/dist/version/__tests__/git-tag-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-utils.test.js +142 -0
- package/dist/version/__tests__/git-tag-utils.test.js.map +1 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.d.ts +2 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.js +79 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.js.map +1 -0
- package/dist/version/__tests__/release-title-format.property.test.d.ts +11 -0
- package/dist/version/__tests__/release-title-format.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/release-title-format.property.test.js +422 -0
- package/dist/version/__tests__/release-title-format.property.test.js.map +1 -0
- package/dist/version/__tests__/release-utils.test.d.ts +7 -0
- package/dist/version/__tests__/release-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/release-utils.test.js +176 -0
- package/dist/version/__tests__/release-utils.test.js.map +1 -0
- package/dist/version/__tests__/rollback-changelog.property.test.d.ts +8 -0
- package/dist/version/__tests__/rollback-changelog.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/rollback-changelog.property.test.js +61 -0
- package/dist/version/__tests__/rollback-changelog.property.test.js.map +1 -0
- package/dist/version/__tests__/rollback-utils.test.d.ts +7 -0
- package/dist/version/__tests__/rollback-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/rollback-utils.test.js +74 -0
- package/dist/version/__tests__/rollback-utils.test.js.map +1 -0
- package/dist/version/__tests__/version-manager.property.test.d.ts +2 -0
- package/dist/version/__tests__/version-manager.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/version-manager.property.test.js +143 -0
- package/dist/version/__tests__/version-manager.property.test.js.map +1 -0
- package/dist/version/__tests__/version-manager.test.d.ts +2 -0
- package/dist/version/__tests__/version-manager.test.d.ts.map +1 -0
- package/dist/version/__tests__/version-manager.test.js +203 -0
- package/dist/version/__tests__/version-manager.test.js.map +1 -0
- package/dist/version/version-manager.d.ts.map +1 -1
- package/dist/version/version-manager.js +0 -4
- package/dist/version/version-manager.js.map +1 -1
- package/package.json +1 -1
- package/dist/test-error.ts +0 -1
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for SearchEngine
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from '@jest/globals';
|
|
5
|
+
import * as fc from 'fast-check';
|
|
6
|
+
import { IndexBuilder } from '../index-builder.js';
|
|
7
|
+
import { SearchEngine } from '../search-engine.js';
|
|
8
|
+
// Reuse arbitraries from index-builder tests
|
|
9
|
+
const componentArbitrary = fc.record({
|
|
10
|
+
name: fc.string({ minLength: 1, maxLength: 50 }).filter((s) => s.trim().length > 0),
|
|
11
|
+
id: fc.string({ minLength: 1 }),
|
|
12
|
+
file: fc.string({ minLength: 1 }),
|
|
13
|
+
type: fc.constant('component'),
|
|
14
|
+
selector: fc.option(fc.string({ minLength: 1 }), { nil: undefined }),
|
|
15
|
+
description: fc.option(fc.string(), { nil: undefined }),
|
|
16
|
+
deprecated: fc.boolean(),
|
|
17
|
+
inputs: fc.option(fc.array(fc.record({
|
|
18
|
+
name: fc.string({ minLength: 1 }),
|
|
19
|
+
type: fc.string({ minLength: 1 }),
|
|
20
|
+
deprecated: fc.boolean(),
|
|
21
|
+
})), { nil: undefined }),
|
|
22
|
+
outputs: fc.option(fc.array(fc.record({
|
|
23
|
+
name: fc.string({ minLength: 1 }),
|
|
24
|
+
type: fc.string({ minLength: 1 }),
|
|
25
|
+
deprecated: fc.boolean(),
|
|
26
|
+
})), { nil: undefined }),
|
|
27
|
+
methods: fc.option(fc.array(fc.record({
|
|
28
|
+
name: fc.string({ minLength: 1 }),
|
|
29
|
+
deprecated: fc.boolean(),
|
|
30
|
+
})), { nil: undefined }),
|
|
31
|
+
});
|
|
32
|
+
const directiveArbitrary = fc.record({
|
|
33
|
+
name: fc.string({ minLength: 1, maxLength: 50 }).filter((s) => s.trim().length > 0),
|
|
34
|
+
id: fc.string({ minLength: 1 }),
|
|
35
|
+
file: fc.string({ minLength: 1 }),
|
|
36
|
+
type: fc.constant('directive'),
|
|
37
|
+
selector: fc.option(fc.string({ minLength: 1 }), { nil: undefined }),
|
|
38
|
+
description: fc.option(fc.string(), { nil: undefined }),
|
|
39
|
+
deprecated: fc.boolean(),
|
|
40
|
+
});
|
|
41
|
+
const pipeArbitrary = fc.record({
|
|
42
|
+
name: fc.string({ minLength: 1, maxLength: 50 }).filter((s) => s.trim().length > 0),
|
|
43
|
+
id: fc.string({ minLength: 1 }),
|
|
44
|
+
file: fc.string({ minLength: 1 }),
|
|
45
|
+
type: fc.constant('pipe'),
|
|
46
|
+
description: fc.option(fc.string(), { nil: undefined }),
|
|
47
|
+
deprecated: fc.boolean(),
|
|
48
|
+
});
|
|
49
|
+
const injectableArbitrary = fc.record({
|
|
50
|
+
name: fc.string({ minLength: 1, maxLength: 50 }).filter((s) => s.trim().length > 0),
|
|
51
|
+
id: fc.string({ minLength: 1 }),
|
|
52
|
+
file: fc.string({ minLength: 1 }),
|
|
53
|
+
type: fc.constant('injectable'),
|
|
54
|
+
description: fc.option(fc.string(), { nil: undefined }),
|
|
55
|
+
deprecated: fc.boolean(),
|
|
56
|
+
});
|
|
57
|
+
const documentationArbitrary = fc
|
|
58
|
+
.record({
|
|
59
|
+
components: fc.array(componentArbitrary, { maxLength: 20 }),
|
|
60
|
+
directives: fc.array(directiveArbitrary, { maxLength: 20 }),
|
|
61
|
+
pipes: fc.array(pipeArbitrary, { maxLength: 20 }),
|
|
62
|
+
injectables: fc.array(injectableArbitrary, { maxLength: 20 }),
|
|
63
|
+
interfaces: fc.constant([]),
|
|
64
|
+
classes: fc.constant([]),
|
|
65
|
+
modules: fc.constant([]),
|
|
66
|
+
})
|
|
67
|
+
.filter((doc) => {
|
|
68
|
+
// Ensure all names are unique across all types
|
|
69
|
+
const allNames = new Set();
|
|
70
|
+
const items = [...doc.components, ...doc.directives, ...doc.pipes, ...doc.injectables];
|
|
71
|
+
for (const item of items) {
|
|
72
|
+
if (allNames.has(item.name)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
allNames.add(item.name);
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
});
|
|
79
|
+
describe('SearchEngine Property Tests', () => {
|
|
80
|
+
describe('Property 10: Case-insensitive search', () => {
|
|
81
|
+
/**
|
|
82
|
+
* Feature: eui-compodoc-mcp, Property 10: Case-insensitive search
|
|
83
|
+
* Validates: Requirements 3.4
|
|
84
|
+
*
|
|
85
|
+
* For any search query, searching with different case variations (lowercase,
|
|
86
|
+
* uppercase, mixed) should return the same set of components.
|
|
87
|
+
*/
|
|
88
|
+
it('should return same results regardless of query case', () => {
|
|
89
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), (documentation, query) => {
|
|
90
|
+
const builder = new IndexBuilder();
|
|
91
|
+
const index = builder.build(documentation);
|
|
92
|
+
const searchEngine = new SearchEngine(index);
|
|
93
|
+
// Search with different case variations
|
|
94
|
+
const lowerCaseResults = searchEngine.search({ query: query.toLowerCase() });
|
|
95
|
+
const upperCaseResults = searchEngine.search({ query: query.toUpperCase() });
|
|
96
|
+
const mixedCaseResults = searchEngine.search({ query });
|
|
97
|
+
// Extract component names from results
|
|
98
|
+
const lowerCaseNames = new Set(lowerCaseResults.items.map((item) => item.doc.name));
|
|
99
|
+
const upperCaseNames = new Set(upperCaseResults.items.map((item) => item.doc.name));
|
|
100
|
+
const mixedCaseNames = new Set(mixedCaseResults.items.map((item) => item.doc.name));
|
|
101
|
+
// All should return the same set of components
|
|
102
|
+
expect(lowerCaseNames).toEqual(upperCaseNames);
|
|
103
|
+
expect(lowerCaseNames).toEqual(mixedCaseNames);
|
|
104
|
+
expect(upperCaseNames).toEqual(mixedCaseNames);
|
|
105
|
+
// Total counts should match
|
|
106
|
+
expect(lowerCaseResults.total).toBe(upperCaseResults.total);
|
|
107
|
+
expect(lowerCaseResults.total).toBe(mixedCaseResults.total);
|
|
108
|
+
}), { numRuns: 100 });
|
|
109
|
+
});
|
|
110
|
+
it('should find components with case-insensitive name matching', () => {
|
|
111
|
+
fc.assert(fc.property(documentationArbitrary, (documentation) => {
|
|
112
|
+
const builder = new IndexBuilder();
|
|
113
|
+
const index = builder.build(documentation);
|
|
114
|
+
const searchEngine = new SearchEngine(index);
|
|
115
|
+
// For each component, search with different case variations of its name
|
|
116
|
+
for (const component of documentation.components) {
|
|
117
|
+
// Skip components whose names normalize to empty (only special chars)
|
|
118
|
+
const normalized = component.name.toLowerCase();
|
|
119
|
+
const words = normalized.split(/[^a-z0-9]+/).filter((w) => w.length > 0);
|
|
120
|
+
if (words.length === 0 && normalized.trim().length > 0) {
|
|
121
|
+
// Name consists only of special characters, skip
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// Include deprecated to ensure we find all components
|
|
125
|
+
const lowerResults = searchEngine.search({
|
|
126
|
+
query: component.name.toLowerCase(),
|
|
127
|
+
includeDeprecated: true
|
|
128
|
+
});
|
|
129
|
+
const upperResults = searchEngine.search({
|
|
130
|
+
query: component.name.toUpperCase(),
|
|
131
|
+
includeDeprecated: true
|
|
132
|
+
});
|
|
133
|
+
// Both should find the component
|
|
134
|
+
const lowerNames = lowerResults.items.map((item) => item.doc.name);
|
|
135
|
+
const upperNames = upperResults.items.map((item) => item.doc.name);
|
|
136
|
+
expect(lowerNames).toContain(component.name);
|
|
137
|
+
expect(upperNames).toContain(component.name);
|
|
138
|
+
}
|
|
139
|
+
}), { numRuns: 100 });
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe('Property 3: Pagination consistency', () => {
|
|
143
|
+
/**
|
|
144
|
+
* Feature: eui-compodoc-mcp, Property 3: Pagination consistency
|
|
145
|
+
* Validates: Requirements 1.5
|
|
146
|
+
*
|
|
147
|
+
* For any large component list, applying pagination with limit and offset
|
|
148
|
+
* should return non-overlapping subsets that together equal the full list.
|
|
149
|
+
*/
|
|
150
|
+
it('should return non-overlapping pages that together equal the full list', () => {
|
|
151
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), fc.integer({ min: 1, max: 10 }), (documentation, query, pageSize) => {
|
|
152
|
+
const builder = new IndexBuilder();
|
|
153
|
+
const index = builder.build(documentation);
|
|
154
|
+
const searchEngine = new SearchEngine(index);
|
|
155
|
+
// Get full results
|
|
156
|
+
const fullResults = searchEngine.search({ query, limit: 1000 });
|
|
157
|
+
if (fullResults.total === 0) {
|
|
158
|
+
return true; // Skip if no results
|
|
159
|
+
}
|
|
160
|
+
// Collect all items through pagination
|
|
161
|
+
const paginatedItems = new Set();
|
|
162
|
+
let offset = 0;
|
|
163
|
+
while (offset < fullResults.total) {
|
|
164
|
+
const pageResults = searchEngine.search({
|
|
165
|
+
query,
|
|
166
|
+
limit: pageSize,
|
|
167
|
+
offset,
|
|
168
|
+
});
|
|
169
|
+
// Add items from this page
|
|
170
|
+
for (const item of pageResults.items) {
|
|
171
|
+
// Check for duplicates
|
|
172
|
+
expect(paginatedItems.has(item.doc.name)).toBe(false);
|
|
173
|
+
paginatedItems.add(item.doc.name);
|
|
174
|
+
}
|
|
175
|
+
offset += pageSize;
|
|
176
|
+
}
|
|
177
|
+
// Verify we got all items
|
|
178
|
+
expect(paginatedItems.size).toBe(fullResults.total);
|
|
179
|
+
// Verify all items match
|
|
180
|
+
const fullNames = new Set(fullResults.items.map((item) => item.doc.name));
|
|
181
|
+
expect(paginatedItems).toEqual(fullNames);
|
|
182
|
+
return true;
|
|
183
|
+
}), { numRuns: 100 });
|
|
184
|
+
});
|
|
185
|
+
it('should respect limit parameter', () => {
|
|
186
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), fc.integer({ min: 1, max: 20 }), (documentation, query, limit) => {
|
|
187
|
+
const builder = new IndexBuilder();
|
|
188
|
+
const index = builder.build(documentation);
|
|
189
|
+
const searchEngine = new SearchEngine(index);
|
|
190
|
+
const results = searchEngine.search({ query, limit });
|
|
191
|
+
// Results should not exceed limit
|
|
192
|
+
expect(results.items.length).toBeLessThanOrEqual(limit);
|
|
193
|
+
// If there are more results than limit, hasMore should be true
|
|
194
|
+
if (results.total > limit) {
|
|
195
|
+
expect(results.hasMore).toBe(true);
|
|
196
|
+
}
|
|
197
|
+
}), { numRuns: 100 });
|
|
198
|
+
});
|
|
199
|
+
it('should respect offset parameter', () => {
|
|
200
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), fc.integer({ min: 0, max: 10 }), (documentation, query, offset) => {
|
|
201
|
+
const builder = new IndexBuilder();
|
|
202
|
+
const index = builder.build(documentation);
|
|
203
|
+
const searchEngine = new SearchEngine(index);
|
|
204
|
+
const fullResults = searchEngine.search({ query, limit: 1000 });
|
|
205
|
+
const offsetResults = searchEngine.search({ query, limit: 1000, offset });
|
|
206
|
+
if (fullResults.total === 0) {
|
|
207
|
+
return true; // Skip if no results
|
|
208
|
+
}
|
|
209
|
+
// Offset results should start after the offset
|
|
210
|
+
const expectedCount = Math.max(0, fullResults.total - offset);
|
|
211
|
+
expect(offsetResults.items.length).toBe(expectedCount);
|
|
212
|
+
// Items should match the tail of full results
|
|
213
|
+
if (offset < fullResults.total) {
|
|
214
|
+
const fullNames = fullResults.items.slice(offset).map((item) => item.doc.name);
|
|
215
|
+
const offsetNames = offsetResults.items.map((item) => item.doc.name);
|
|
216
|
+
expect(offsetNames).toEqual(fullNames);
|
|
217
|
+
}
|
|
218
|
+
return true;
|
|
219
|
+
}), { numRuns: 100 });
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
describe('Property 8: Search result relevance', () => {
|
|
223
|
+
/**
|
|
224
|
+
* Feature: eui-compodoc-mcp, Property 8: Search result relevance
|
|
225
|
+
* Validates: Requirements 3.1
|
|
226
|
+
*
|
|
227
|
+
* For any search query, all returned components should contain the query
|
|
228
|
+
* string in their name, selector, description, or metadata fields.
|
|
229
|
+
*/
|
|
230
|
+
it('should only return components that match the query', () => {
|
|
231
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), (documentation, query) => {
|
|
232
|
+
const builder = new IndexBuilder();
|
|
233
|
+
const index = builder.build(documentation);
|
|
234
|
+
const searchEngine = new SearchEngine(index);
|
|
235
|
+
const results = searchEngine.search({ query });
|
|
236
|
+
const normalizedQuery = query.toLowerCase().trim();
|
|
237
|
+
// Extract searchable words from query (same logic as IndexBuilder)
|
|
238
|
+
const queryWords = normalizedQuery.split(/[^a-z0-9]+/).filter((w) => w.length > 0);
|
|
239
|
+
// If no words extracted, skip this test case
|
|
240
|
+
if (queryWords.length === 0) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
// Every result should contain at least one query word in some field
|
|
244
|
+
for (const result of results.items) {
|
|
245
|
+
const doc = result.doc;
|
|
246
|
+
// Extract all searchable text from the document
|
|
247
|
+
let searchableText = [
|
|
248
|
+
doc.name,
|
|
249
|
+
doc.description || '',
|
|
250
|
+
'selector' in doc && doc.selector ? doc.selector : '',
|
|
251
|
+
].join(' ').toLowerCase();
|
|
252
|
+
// Add input names
|
|
253
|
+
if ('inputs' in doc && doc.inputs) {
|
|
254
|
+
for (const input of doc.inputs) {
|
|
255
|
+
searchableText += ' ' + input.name.toLowerCase();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Add output names
|
|
259
|
+
if ('outputs' in doc && doc.outputs) {
|
|
260
|
+
for (const output of doc.outputs) {
|
|
261
|
+
searchableText += ' ' + output.name.toLowerCase();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Add method names
|
|
265
|
+
if ('methods' in doc && doc.methods) {
|
|
266
|
+
for (const method of doc.methods) {
|
|
267
|
+
searchableText += ' ' + method.name.toLowerCase();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Check if any query word appears in searchable text
|
|
271
|
+
const hasMatch = queryWords.some((word) => searchableText.includes(word));
|
|
272
|
+
expect(hasMatch).toBe(true);
|
|
273
|
+
}
|
|
274
|
+
return true;
|
|
275
|
+
}), { numRuns: 100 });
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
describe('Property 9: Search result ordering', () => {
|
|
279
|
+
/**
|
|
280
|
+
* Feature: eui-compodoc-mcp, Property 9: Search result ordering
|
|
281
|
+
* Validates: Requirements 3.2
|
|
282
|
+
*
|
|
283
|
+
* For any search results, items should be ordered by relevance score in
|
|
284
|
+
* descending order.
|
|
285
|
+
*/
|
|
286
|
+
it('should order results by relevance score descending', () => {
|
|
287
|
+
fc.assert(fc.property(documentationArbitrary, fc.string({ minLength: 1, maxLength: 20 }).filter((s) => s.trim().length > 0), (documentation, query) => {
|
|
288
|
+
const builder = new IndexBuilder();
|
|
289
|
+
const index = builder.build(documentation);
|
|
290
|
+
const searchEngine = new SearchEngine(index);
|
|
291
|
+
const results = searchEngine.search({ query });
|
|
292
|
+
// Verify results are ordered by score descending
|
|
293
|
+
for (let i = 0; i < results.items.length - 1; i++) {
|
|
294
|
+
const currentScore = results.items[i].relevanceScore;
|
|
295
|
+
const nextScore = results.items[i + 1].relevanceScore;
|
|
296
|
+
expect(currentScore).toBeGreaterThanOrEqual(nextScore);
|
|
297
|
+
}
|
|
298
|
+
}), { numRuns: 100 });
|
|
299
|
+
});
|
|
300
|
+
it('should give exact name matches high scores', () => {
|
|
301
|
+
fc.assert(fc.property(documentationArbitrary, (documentation) => {
|
|
302
|
+
const builder = new IndexBuilder();
|
|
303
|
+
const index = builder.build(documentation);
|
|
304
|
+
const searchEngine = new SearchEngine(index);
|
|
305
|
+
// For each component, search by its exact name
|
|
306
|
+
for (const component of documentation.components) {
|
|
307
|
+
// Skip components whose names normalize to empty (only special chars)
|
|
308
|
+
const normalized = component.name.toLowerCase();
|
|
309
|
+
const words = normalized.split(/[^a-z0-9]+/).filter((w) => w.length > 0);
|
|
310
|
+
if (words.length === 0 && normalized.trim().length > 0) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
const results = searchEngine.search({
|
|
314
|
+
query: component.name,
|
|
315
|
+
includeDeprecated: true
|
|
316
|
+
});
|
|
317
|
+
if (results.items.length > 0) {
|
|
318
|
+
// Find the exact match
|
|
319
|
+
const exactMatch = results.items.find((item) => item.doc.name === component.name);
|
|
320
|
+
if (exactMatch) {
|
|
321
|
+
// Check if the query (after normalization) exactly matches the component name
|
|
322
|
+
const normalizedQuery = component.name.toLowerCase().trim();
|
|
323
|
+
const nameLower = component.name.toLowerCase();
|
|
324
|
+
if (nameLower === normalizedQuery) {
|
|
325
|
+
// True exact match - should get 100 points (or 50 if deprecated)
|
|
326
|
+
const expectedScore = component.deprecated ? 50 : 100;
|
|
327
|
+
expect(exactMatch.relevanceScore).toBeGreaterThanOrEqual(expectedScore);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
// Not an exact match after normalization, but should still be found
|
|
331
|
+
expect(exactMatch.relevanceScore).toBeGreaterThan(0);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}), { numRuns: 100 });
|
|
337
|
+
});
|
|
338
|
+
it('should apply deprecated penalty to scores', () => {
|
|
339
|
+
fc.assert(fc.property(fc.record({
|
|
340
|
+
components: fc
|
|
341
|
+
.tuple(
|
|
342
|
+
// Create two components with same name prefix, one deprecated
|
|
343
|
+
fc.string({ minLength: 5, maxLength: 20 }).filter((s) => s.trim().length > 0), fc.string({ minLength: 1, maxLength: 10 }))
|
|
344
|
+
.map(([prefix, suffix]) => [
|
|
345
|
+
{
|
|
346
|
+
name: `${prefix}Component`,
|
|
347
|
+
id: '1',
|
|
348
|
+
file: 'file1.ts',
|
|
349
|
+
type: 'component',
|
|
350
|
+
description: `${prefix} description`,
|
|
351
|
+
deprecated: false,
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
name: `${prefix}${suffix}Component`,
|
|
355
|
+
id: '2',
|
|
356
|
+
file: 'file2.ts',
|
|
357
|
+
type: 'component',
|
|
358
|
+
description: `${prefix} description`,
|
|
359
|
+
deprecated: true,
|
|
360
|
+
},
|
|
361
|
+
]),
|
|
362
|
+
directives: fc.constant([]),
|
|
363
|
+
pipes: fc.constant([]),
|
|
364
|
+
injectables: fc.constant([]),
|
|
365
|
+
interfaces: fc.constant([]),
|
|
366
|
+
classes: fc.constant([]),
|
|
367
|
+
modules: fc.constant([]),
|
|
368
|
+
}), (documentation) => {
|
|
369
|
+
const builder = new IndexBuilder();
|
|
370
|
+
const index = builder.build(documentation);
|
|
371
|
+
const searchEngine = new SearchEngine(index);
|
|
372
|
+
const nonDeprecated = documentation.components[0];
|
|
373
|
+
const deprecated = documentation.components[1];
|
|
374
|
+
// Search for the common prefix
|
|
375
|
+
const prefix = nonDeprecated.name.replace('Component', '');
|
|
376
|
+
const results = searchEngine.search({ query: prefix, includeDeprecated: true });
|
|
377
|
+
// Find both components in results
|
|
378
|
+
const nonDepResult = results.items.find((item) => item.doc.name === nonDeprecated.name);
|
|
379
|
+
const depResult = results.items.find((item) => item.doc.name === deprecated.name);
|
|
380
|
+
if (nonDepResult && depResult) {
|
|
381
|
+
// Non-deprecated should have higher or equal score
|
|
382
|
+
// (equal if both have score 0, which can happen with very different names)
|
|
383
|
+
expect(nonDepResult.relevanceScore).toBeGreaterThanOrEqual(depResult.relevanceScore);
|
|
384
|
+
}
|
|
385
|
+
}), { numRuns: 100 });
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
//# sourceMappingURL=search-engine.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-engine.property.test.js","sourceRoot":"","sources":["../../../src/query/__tests__/search-engine.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts deprecation information from Compodoc JSON data
|
|
3
|
+
*/
|
|
4
|
+
interface DeprecatableItem {
|
|
5
|
+
deprecated?: boolean;
|
|
6
|
+
deprecationMessage?: string;
|
|
7
|
+
decorators?: Array<{
|
|
8
|
+
name: string;
|
|
9
|
+
}>;
|
|
10
|
+
jsdoctags?: Array<{
|
|
11
|
+
tagName?: {
|
|
12
|
+
text: string;
|
|
13
|
+
};
|
|
14
|
+
comment?: string;
|
|
15
|
+
}>;
|
|
16
|
+
file?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class DeprecationParser {
|
|
19
|
+
/**
|
|
20
|
+
* Checks if an item has deprecation information
|
|
21
|
+
*/
|
|
22
|
+
isDeprecated(item: DeprecatableItem): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Extracts deprecation message from item metadata
|
|
25
|
+
*/
|
|
26
|
+
extractDeprecationMessage(item: DeprecatableItem): string;
|
|
27
|
+
/**
|
|
28
|
+
* Extracts version information from deprecation message
|
|
29
|
+
*/
|
|
30
|
+
extractVersion(message: string): string | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Extracts replacement suggestion from deprecation message
|
|
33
|
+
*/
|
|
34
|
+
extractReplacement(message: string): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Parses complete deprecation information from an item
|
|
37
|
+
*/
|
|
38
|
+
parseDeprecationInfo(item: DeprecatableItem): {
|
|
39
|
+
deprecationMessage: string;
|
|
40
|
+
versionDeprecated?: string;
|
|
41
|
+
replacementSuggestion?: string;
|
|
42
|
+
filePath?: string;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=deprecation-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecation-parser.d.ts","sourceRoot":"","sources":["../../src/query/deprecation-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAa7C;;OAEG;IACH,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAazD;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAiBnD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAkBvD;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG;QAC5C,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CAUF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts deprecation information from Compodoc JSON data
|
|
3
|
+
*/
|
|
4
|
+
export class DeprecationParser {
|
|
5
|
+
/**
|
|
6
|
+
* Checks if an item has deprecation information
|
|
7
|
+
*/
|
|
8
|
+
isDeprecated(item) {
|
|
9
|
+
if (item.deprecated === true) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
if (item.decorators && item.decorators.some((d) => d.name === 'deprecated')) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (item.jsdoctags && item.jsdoctags.some((tag) => tag.tagName?.text === 'deprecated')) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extracts deprecation message from item metadata
|
|
22
|
+
*/
|
|
23
|
+
extractDeprecationMessage(item) {
|
|
24
|
+
const deprecatedTag = item.jsdoctags?.find((tag) => tag.tagName?.text === 'deprecated');
|
|
25
|
+
if (deprecatedTag?.comment) {
|
|
26
|
+
return deprecatedTag.comment;
|
|
27
|
+
}
|
|
28
|
+
if (item.deprecationMessage) {
|
|
29
|
+
return item.deprecationMessage;
|
|
30
|
+
}
|
|
31
|
+
return 'This item is deprecated.';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extracts version information from deprecation message
|
|
35
|
+
*/
|
|
36
|
+
extractVersion(message) {
|
|
37
|
+
const versionPatterns = [
|
|
38
|
+
/since\s+v?(\d+\.\d+\.\d+)/i,
|
|
39
|
+
/deprecated\s+in\s+v?(\d+\.\d+\.\d+)/i,
|
|
40
|
+
/v(\d+\.\d+\.\d+)/i,
|
|
41
|
+
];
|
|
42
|
+
for (const pattern of versionPatterns) {
|
|
43
|
+
const match = message.match(pattern);
|
|
44
|
+
if (match) {
|
|
45
|
+
return match[1];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Extracts replacement suggestion from deprecation message
|
|
52
|
+
*/
|
|
53
|
+
extractReplacement(message) {
|
|
54
|
+
const replacementPatterns = [
|
|
55
|
+
/use\s+([A-Za-z0-9_-]+)\s+instead/i,
|
|
56
|
+
/replaced\s+by\s+([A-Za-z0-9_-]+)/i,
|
|
57
|
+
/migrate\s+to\s+([A-Za-z0-9_-]+)/i,
|
|
58
|
+
/see\s+([A-Za-z0-9_-]+)/i,
|
|
59
|
+
];
|
|
60
|
+
for (const pattern of replacementPatterns) {
|
|
61
|
+
const match = message.match(pattern);
|
|
62
|
+
if (match) {
|
|
63
|
+
return match[1];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parses complete deprecation information from an item
|
|
70
|
+
*/
|
|
71
|
+
parseDeprecationInfo(item) {
|
|
72
|
+
const message = this.extractDeprecationMessage(item);
|
|
73
|
+
return {
|
|
74
|
+
deprecationMessage: message,
|
|
75
|
+
versionDeprecated: this.extractVersion(message),
|
|
76
|
+
replacementSuggestion: this.extractReplacement(message),
|
|
77
|
+
filePath: item.file,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=deprecation-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecation-parser.js","sourceRoot":"","sources":["../../src/query/deprecation-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,YAAY,CAAC,IAAsB;QACjC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,IAAsB;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;QACxF,IAAI,aAAa,EAAE,OAAO,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QAED,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAe;QAC5B,MAAM,eAAe,GAAG;YACtB,4BAA4B;YAC5B,sCAAsC;YACtC,mBAAmB;SACpB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,MAAM,mBAAmB,GAAG;YAC1B,mCAAmC;YACnC,mCAAmC;YACnC,kCAAkC;YAClC,yBAAyB;SAC1B,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,IAAsB;QAMzC,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO;YACL,kBAAkB,EAAE,OAAO;YAC3B,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/C,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACvD,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DeprecatedItem, DeprecationListOptions, DeprecationInfo } from '../types/deprecation.js';
|
|
2
|
+
import { ComponentIndex } from './index-builder.js';
|
|
3
|
+
/**
|
|
4
|
+
* Query functions for deprecation information
|
|
5
|
+
*/
|
|
6
|
+
export declare class DeprecationQuery {
|
|
7
|
+
private index;
|
|
8
|
+
private parser;
|
|
9
|
+
constructor(index: ComponentIndex);
|
|
10
|
+
/**
|
|
11
|
+
* Lists all deprecated items, optionally filtered by type
|
|
12
|
+
*/
|
|
13
|
+
listDeprecated(options?: DeprecationListOptions): DeprecatedItem[];
|
|
14
|
+
/**
|
|
15
|
+
* Gets detailed deprecation information for a specific component
|
|
16
|
+
*/
|
|
17
|
+
getDeprecationInfo(componentName: string): DeprecationInfo | null;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=deprecation-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecation-query.d.ts","sourceRoot":"","sources":["../../src/query/deprecation-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,qBAAa,gBAAgB;IAGf,OAAO,CAAC,KAAK;IAFzB,OAAO,CAAC,MAAM,CAAoB;gBAEd,KAAK,EAAE,cAAc;IAIzC;;OAEG;IACH,cAAc,CAAC,OAAO,GAAE,sBAA2B,GAAG,cAAc,EAAE;IAsCtE;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CA4BlE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { DeprecationParser } from './deprecation-parser.js';
|
|
2
|
+
/**
|
|
3
|
+
* Query functions for deprecation information
|
|
4
|
+
*/
|
|
5
|
+
export class DeprecationQuery {
|
|
6
|
+
index;
|
|
7
|
+
parser;
|
|
8
|
+
constructor(index) {
|
|
9
|
+
this.index = index;
|
|
10
|
+
this.parser = new DeprecationParser();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Lists all deprecated items, optionally filtered by type
|
|
14
|
+
*/
|
|
15
|
+
listDeprecated(options = {}) {
|
|
16
|
+
const deprecated = [];
|
|
17
|
+
const itemTypes = [
|
|
18
|
+
{ items: this.index.components, type: 'component' },
|
|
19
|
+
{ items: this.index.directives, type: 'directive' },
|
|
20
|
+
{ items: this.index.pipes, type: 'pipe' },
|
|
21
|
+
{ items: this.index.services, type: 'injectable' },
|
|
22
|
+
];
|
|
23
|
+
for (const { items, type } of itemTypes) {
|
|
24
|
+
if (options.type && options.type !== type) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
for (const item of items) {
|
|
28
|
+
if (this.parser.isDeprecated(item)) {
|
|
29
|
+
const deprecationInfo = this.parser.parseDeprecationInfo(item);
|
|
30
|
+
const replacement = options.includeReplacements
|
|
31
|
+
? deprecationInfo.replacementSuggestion
|
|
32
|
+
: undefined;
|
|
33
|
+
deprecated.push({
|
|
34
|
+
name: item.name,
|
|
35
|
+
type,
|
|
36
|
+
deprecationMessage: deprecationInfo.deprecationMessage,
|
|
37
|
+
versionDeprecated: deprecationInfo.versionDeprecated,
|
|
38
|
+
replacementSuggestion: replacement,
|
|
39
|
+
filePath: deprecationInfo.filePath,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return deprecated;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets detailed deprecation information for a specific component
|
|
48
|
+
*/
|
|
49
|
+
getDeprecationInfo(componentName) {
|
|
50
|
+
const item = this.index.byName.get(componentName);
|
|
51
|
+
if (!item) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const isDeprecated = this.parser.isDeprecated(item);
|
|
55
|
+
if (!isDeprecated) {
|
|
56
|
+
return {
|
|
57
|
+
name: componentName,
|
|
58
|
+
type: item.type,
|
|
59
|
+
isDeprecated: false,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const deprecationInfo = this.parser.parseDeprecationInfo(item);
|
|
63
|
+
return {
|
|
64
|
+
name: componentName,
|
|
65
|
+
type: item.type,
|
|
66
|
+
isDeprecated: true,
|
|
67
|
+
deprecationMessage: deprecationInfo.deprecationMessage,
|
|
68
|
+
versionDeprecated: deprecationInfo.versionDeprecated,
|
|
69
|
+
replacementSuggestion: deprecationInfo.replacementSuggestion,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=deprecation-query.js.map
|