@digital-science-dsl/dimensions-analytics-mcp 0.5.3
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/CHANGELOG.md +61 -0
- package/README.md +152 -0
- package/bin/dimensions-analytics-mcp-http.js +2 -0
- package/bin/dimensions-analytics-mcp.js +2 -0
- package/dist/client/auth/config-loaders.d.ts +22 -0
- package/dist/client/auth/config-loaders.d.ts.map +1 -0
- package/dist/client/auth/config-loaders.js +68 -0
- package/dist/client/auth/config-loaders.js.map +1 -0
- package/dist/client/auth/decorators/index.d.ts +7 -0
- package/dist/client/auth/decorators/index.d.ts.map +1 -0
- package/dist/client/auth/decorators/index.js +6 -0
- package/dist/client/auth/decorators/index.js.map +1 -0
- package/dist/client/auth/decorators/with-caching.d.ts +81 -0
- package/dist/client/auth/decorators/with-caching.d.ts.map +1 -0
- package/dist/client/auth/decorators/with-caching.js +168 -0
- package/dist/client/auth/decorators/with-caching.js.map +1 -0
- package/dist/client/auth/factory.d.ts +13 -0
- package/dist/client/auth/factory.d.ts.map +1 -0
- package/dist/client/auth/factory.js +29 -0
- package/dist/client/auth/factory.js.map +1 -0
- package/dist/client/auth/index.d.ts +7 -0
- package/dist/client/auth/index.d.ts.map +1 -0
- package/dist/client/auth/index.js +6 -0
- package/dist/client/auth/index.js.map +1 -0
- package/dist/client/auth/jwt-utils.d.ts +17 -0
- package/dist/client/auth/jwt-utils.d.ts.map +1 -0
- package/dist/client/auth/jwt-utils.js +33 -0
- package/dist/client/auth/jwt-utils.js.map +1 -0
- package/dist/client/auth/node.d.ts +16 -0
- package/dist/client/auth/node.d.ts.map +1 -0
- package/dist/client/auth/node.js +15 -0
- package/dist/client/auth/node.js.map +1 -0
- package/dist/client/auth/providers/index.d.ts +2 -0
- package/dist/client/auth/providers/index.d.ts.map +1 -0
- package/dist/client/auth/providers/index.js +2 -0
- package/dist/client/auth/providers/index.js.map +1 -0
- package/dist/client/auth/providers/jwt-auth-provider.d.ts +70 -0
- package/dist/client/auth/providers/jwt-auth-provider.d.ts.map +1 -0
- package/dist/client/auth/providers/jwt-auth-provider.js +134 -0
- package/dist/client/auth/providers/jwt-auth-provider.js.map +1 -0
- package/dist/client/auth/schemas.d.ts +19 -0
- package/dist/client/auth/schemas.d.ts.map +1 -0
- package/dist/client/auth/schemas.js +23 -0
- package/dist/client/auth/schemas.js.map +1 -0
- package/dist/client/auth/types.d.ts +25 -0
- package/dist/client/auth/types.d.ts.map +1 -0
- package/dist/client/auth/types.js +9 -0
- package/dist/client/auth/types.js.map +1 -0
- package/dist/client/command.d.ts +44 -0
- package/dist/client/command.d.ts.map +1 -0
- package/dist/client/command.js +23 -0
- package/dist/client/command.js.map +1 -0
- package/dist/client/config/index.d.ts +11 -0
- package/dist/client/config/index.d.ts.map +1 -0
- package/dist/client/config/index.js +8 -0
- package/dist/client/config/index.js.map +1 -0
- package/dist/client/config/loader.d.ts +27 -0
- package/dist/client/config/loader.d.ts.map +1 -0
- package/dist/client/config/loader.js +128 -0
- package/dist/client/config/loader.js.map +1 -0
- package/dist/client/config/node.d.ts +18 -0
- package/dist/client/config/node.d.ts.map +1 -0
- package/dist/client/config/node.js +17 -0
- package/dist/client/config/node.js.map +1 -0
- package/dist/client/config/schemas.d.ts +23 -0
- package/dist/client/config/schemas.d.ts.map +1 -0
- package/dist/client/config/schemas.js +24 -0
- package/dist/client/config/schemas.js.map +1 -0
- package/dist/client/config/types.d.ts +37 -0
- package/dist/client/config/types.d.ts.map +1 -0
- package/dist/client/config/types.js +6 -0
- package/dist/client/config/types.js.map +1 -0
- package/dist/client/config/unified-loader.d.ts +41 -0
- package/dist/client/config/unified-loader.d.ts.map +1 -0
- package/dist/client/config/unified-loader.js +86 -0
- package/dist/client/config/unified-loader.js.map +1 -0
- package/dist/client/config.d.ts +43 -0
- package/dist/client/config.d.ts.map +1 -0
- package/dist/client/config.js +56 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/deployment-config.d.ts +36 -0
- package/dist/client/deployment-config.d.ts.map +1 -0
- package/dist/client/deployment-config.js +79 -0
- package/dist/client/deployment-config.js.map +1 -0
- package/dist/client/errors.d.ts +180 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +253 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/http-client.d.ts +215 -0
- package/dist/client/http-client.d.ts.map +1 -0
- package/dist/client/http-client.js +419 -0
- package/dist/client/http-client.js.map +1 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +18 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/internal-dsl-client.d.ts +30 -0
- package/dist/client/internal-dsl-client.d.ts.map +1 -0
- package/dist/client/internal-dsl-client.js +101 -0
- package/dist/client/internal-dsl-client.js.map +1 -0
- package/dist/client/rate-limiter.d.ts +79 -0
- package/dist/client/rate-limiter.d.ts.map +1 -0
- package/dist/client/rate-limiter.js +118 -0
- package/dist/client/rate-limiter.js.map +1 -0
- package/dist/client/resolve-api-key-user.d.ts +24 -0
- package/dist/client/resolve-api-key-user.d.ts.map +1 -0
- package/dist/client/resolve-api-key-user.js +80 -0
- package/dist/client/resolve-api-key-user.js.map +1 -0
- package/dist/client/types.d.ts +44 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +10 -0
- package/dist/client/types.js.map +1 -0
- package/dist/dsl/client.d.ts +330 -0
- package/dist/dsl/client.d.ts.map +1 -0
- package/dist/dsl/client.js +433 -0
- package/dist/dsl/client.js.map +1 -0
- package/dist/dsl/commands/apply-filters.d.ts +15 -0
- package/dist/dsl/commands/apply-filters.d.ts.map +1 -0
- package/dist/dsl/commands/apply-filters.js +29 -0
- package/dist/dsl/commands/apply-filters.js.map +1 -0
- package/dist/dsl/commands/facet/index.d.ts +6 -0
- package/dist/dsl/commands/facet/index.d.ts.map +1 -0
- package/dist/dsl/commands/facet/index.js +6 -0
- package/dist/dsl/commands/facet/index.js.map +1 -0
- package/dist/dsl/commands/facet/schemas.d.ts +71 -0
- package/dist/dsl/commands/facet/schemas.d.ts.map +1 -0
- package/dist/dsl/commands/facet/schemas.js +84 -0
- package/dist/dsl/commands/facet/schemas.js.map +1 -0
- package/dist/dsl/commands/functions/ClassifyCommand.d.ts +96 -0
- package/dist/dsl/commands/functions/ClassifyCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ClassifyCommand.js +95 -0
- package/dist/dsl/commands/functions/ClassifyCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts +86 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js +131 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts +73 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.js +110 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts +66 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.js +87 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/index.d.ts +10 -0
- package/dist/dsl/commands/functions/index.d.ts.map +1 -0
- package/dist/dsl/commands/functions/index.js +10 -0
- package/dist/dsl/commands/functions/index.js.map +1 -0
- package/dist/dsl/commands/index.d.ts +8 -0
- package/dist/dsl/commands/index.d.ts.map +1 -0
- package/dist/dsl/commands/index.js +7 -0
- package/dist/dsl/commands/index.js.map +1 -0
- package/dist/dsl/commands/validate-input.d.ts +18 -0
- package/dist/dsl/commands/validate-input.d.ts.map +1 -0
- package/dist/dsl/commands/validate-input.js +27 -0
- package/dist/dsl/commands/validate-input.js.map +1 -0
- package/dist/dsl/create-client.d.ts +32 -0
- package/dist/dsl/create-client.d.ts.map +1 -0
- package/dist/dsl/create-client.js +58 -0
- package/dist/dsl/create-client.js.map +1 -0
- package/dist/dsl/fluent-query-builder.d.ts +439 -0
- package/dist/dsl/fluent-query-builder.d.ts.map +1 -0
- package/dist/dsl/fluent-query-builder.js +534 -0
- package/dist/dsl/fluent-query-builder.js.map +1 -0
- package/dist/dsl/index.d.ts +32 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +31 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/pagination.d.ts +82 -0
- package/dist/dsl/pagination.d.ts.map +1 -0
- package/dist/dsl/pagination.js +135 -0
- package/dist/dsl/pagination.js.map +1 -0
- package/dist/dsl/query-builder.d.ts +456 -0
- package/dist/dsl/query-builder.d.ts.map +1 -0
- package/dist/dsl/query-builder.js +994 -0
- package/dist/dsl/query-builder.js.map +1 -0
- package/dist/dsl/response-parser.d.ts +111 -0
- package/dist/dsl/response-parser.d.ts.map +1 -0
- package/dist/dsl/response-parser.js +210 -0
- package/dist/dsl/response-parser.js.map +1 -0
- package/dist/dsl/schema/cache.d.ts +52 -0
- package/dist/dsl/schema/cache.d.ts.map +1 -0
- package/dist/dsl/schema/cache.js +97 -0
- package/dist/dsl/schema/cache.js.map +1 -0
- package/dist/dsl/schema/extract.d.ts +18 -0
- package/dist/dsl/schema/extract.d.ts.map +1 -0
- package/dist/dsl/schema/extract.js +41 -0
- package/dist/dsl/schema/extract.js.map +1 -0
- package/dist/dsl/schema/index.d.ts +13 -0
- package/dist/dsl/schema/index.d.ts.map +1 -0
- package/dist/dsl/schema/index.js +12 -0
- package/dist/dsl/schema/index.js.map +1 -0
- package/dist/dsl/schema/load.d.ts +41 -0
- package/dist/dsl/schema/load.d.ts.map +1 -0
- package/dist/dsl/schema/load.js +119 -0
- package/dist/dsl/schema/load.js.map +1 -0
- package/dist/dsl/schema/store.d.ts +137 -0
- package/dist/dsl/schema/store.d.ts.map +1 -0
- package/dist/dsl/schema/store.js +204 -0
- package/dist/dsl/schema/store.js.map +1 -0
- package/dist/dsl/schema/structured-entities.d.ts +21 -0
- package/dist/dsl/schema/structured-entities.d.ts.map +1 -0
- package/dist/dsl/schema/structured-entities.js +39 -0
- package/dist/dsl/schema/structured-entities.js.map +1 -0
- package/dist/dsl/schema/summary.d.ts +51 -0
- package/dist/dsl/schema/summary.d.ts.map +1 -0
- package/dist/dsl/schema/summary.js +61 -0
- package/dist/dsl/schema/summary.js.map +1 -0
- package/dist/dsl/schema/types.d.ts +36 -0
- package/dist/dsl/schema/types.d.ts.map +1 -0
- package/dist/dsl/schema/types.js +6 -0
- package/dist/dsl/schema/types.js.map +1 -0
- package/dist/dsl/schema/validation.d.ts +21 -0
- package/dist/dsl/schema/validation.d.ts.map +1 -0
- package/dist/dsl/schema/validation.js +44 -0
- package/dist/dsl/schema/validation.js.map +1 -0
- package/dist/dsl/types/buckets.d.ts +18 -0
- package/dist/dsl/types/buckets.d.ts.map +1 -0
- package/dist/dsl/types/buckets.js +6 -0
- package/dist/dsl/types/buckets.js.map +1 -0
- package/dist/dsl/types/common.d.ts +91 -0
- package/dist/dsl/types/common.d.ts.map +1 -0
- package/dist/dsl/types/common.js +6 -0
- package/dist/dsl/types/common.js.map +1 -0
- package/dist/dsl/types/entities.d.ts +35 -0
- package/dist/dsl/types/entities.d.ts.map +1 -0
- package/dist/dsl/types/entities.js +11 -0
- package/dist/dsl/types/entities.js.map +1 -0
- package/dist/dsl/types/index.d.ts +12 -0
- package/dist/dsl/types/index.d.ts.map +1 -0
- package/dist/dsl/types/index.js +7 -0
- package/dist/dsl/types/index.js.map +1 -0
- package/dist/dsl/types/return-clauses.d.ts +107 -0
- package/dist/dsl/types/return-clauses.d.ts.map +1 -0
- package/dist/dsl/types/return-clauses.js +22 -0
- package/dist/dsl/types/return-clauses.js.map +1 -0
- package/dist/dsl/types/special-functions.d.ts +175 -0
- package/dist/dsl/types/special-functions.d.ts.map +1 -0
- package/dist/dsl/types/special-functions.js +25 -0
- package/dist/dsl/types/special-functions.js.map +1 -0
- package/dist/dsl/types/vocabulary.d.ts +21 -0
- package/dist/dsl/types/vocabulary.d.ts.map +1 -0
- package/dist/dsl/types/vocabulary.js +44 -0
- package/dist/dsl/types/vocabulary.js.map +1 -0
- package/dist/dsl/usage-policy.d.ts +87 -0
- package/dist/dsl/usage-policy.d.ts.map +1 -0
- package/dist/dsl/usage-policy.js +133 -0
- package/dist/dsl/usage-policy.js.map +1 -0
- package/dist/dsl/utils/escape.d.ts +24 -0
- package/dist/dsl/utils/escape.d.ts.map +1 -0
- package/dist/dsl/utils/escape.js +124 -0
- package/dist/dsl/utils/escape.js.map +1 -0
- package/dist/dsl/utils/sanitize.d.ts +13 -0
- package/dist/dsl/utils/sanitize.d.ts.map +1 -0
- package/dist/dsl/utils/sanitize.js +19 -0
- package/dist/dsl/utils/sanitize.js.map +1 -0
- package/dist/dsl/utils/string-utils.d.ts +35 -0
- package/dist/dsl/utils/string-utils.d.ts.map +1 -0
- package/dist/dsl/utils/string-utils.js +145 -0
- package/dist/dsl/utils/string-utils.js.map +1 -0
- package/dist/dsl/utils/validate-field-name.d.ts +11 -0
- package/dist/dsl/utils/validate-field-name.d.ts.map +1 -0
- package/dist/dsl/utils/validate-field-name.js +18 -0
- package/dist/dsl/utils/validate-field-name.js.map +1 -0
- package/dist/examples/dsl-examples.d.ts +11 -0
- package/dist/examples/dsl-examples.d.ts.map +1 -0
- package/dist/examples/dsl-examples.js +49 -0
- package/dist/examples/dsl-examples.js.map +1 -0
- package/dist/examples/usage-scenarios.d.ts +22 -0
- package/dist/examples/usage-scenarios.d.ts.map +1 -0
- package/dist/examples/usage-scenarios.js +173 -0
- package/dist/examples/usage-scenarios.js.map +1 -0
- package/dist/funder-org-names.d.ts +12 -0
- package/dist/funder-org-names.d.ts.map +1 -0
- package/dist/funder-org-names.js +30 -0
- package/dist/funder-org-names.js.map +1 -0
- package/dist/http-main.d.ts +7 -0
- package/dist/http-main.d.ts.map +1 -0
- package/dist/http-main.js +36 -0
- package/dist/http-main.js.map +1 -0
- package/dist/http.d.ts +29 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +173 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/kwq/build-query.d.ts +26 -0
- package/dist/kwq/build-query.d.ts.map +1 -0
- package/dist/kwq/build-query.js +37 -0
- package/dist/kwq/build-query.js.map +1 -0
- package/dist/kwq/concept-groups.d.ts +49 -0
- package/dist/kwq/concept-groups.d.ts.map +1 -0
- package/dist/kwq/concept-groups.js +55 -0
- package/dist/kwq/concept-groups.js.map +1 -0
- package/dist/kwq/dsl-assembler.d.ts +28 -0
- package/dist/kwq/dsl-assembler.d.ts.map +1 -0
- package/dist/kwq/dsl-assembler.js +124 -0
- package/dist/kwq/dsl-assembler.js.map +1 -0
- package/dist/kwq/ensemble.d.ts +38 -0
- package/dist/kwq/ensemble.d.ts.map +1 -0
- package/dist/kwq/ensemble.js +107 -0
- package/dist/kwq/ensemble.js.map +1 -0
- package/dist/kwq/index.d.ts +16 -0
- package/dist/kwq/index.d.ts.map +1 -0
- package/dist/kwq/index.js +14 -0
- package/dist/kwq/index.js.map +1 -0
- package/dist/kwq/types.d.ts +120 -0
- package/dist/kwq/types.d.ts.map +1 -0
- package/dist/kwq/types.js +11 -0
- package/dist/kwq/types.js.map +1 -0
- package/dist/lambda.d.ts +10 -0
- package/dist/lambda.d.ts.map +1 -0
- package/dist/lambda.js +4 -0
- package/dist/lambda.js.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +33 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/batch-fetch.d.ts +89 -0
- package/dist/mcp/batch-fetch.d.ts.map +1 -0
- package/dist/mcp/batch-fetch.js +178 -0
- package/dist/mcp/batch-fetch.js.map +1 -0
- package/dist/mcp/examples/dsl-examples.d.ts +21 -0
- package/dist/mcp/examples/dsl-examples.d.ts.map +1 -0
- package/dist/mcp/examples/dsl-examples.js +61 -0
- package/dist/mcp/examples/dsl-examples.js.map +1 -0
- package/dist/mcp/examples/usage-scenarios.d.ts +20 -0
- package/dist/mcp/examples/usage-scenarios.d.ts.map +1 -0
- package/dist/mcp/examples/usage-scenarios.js +169 -0
- package/dist/mcp/examples/usage-scenarios.js.map +1 -0
- package/dist/mcp/export-format.d.ts +43 -0
- package/dist/mcp/export-format.d.ts.map +1 -0
- package/dist/mcp/export-format.js +92 -0
- package/dist/mcp/export-format.js.map +1 -0
- package/dist/mcp/funder-org-names.d.ts +12 -0
- package/dist/mcp/funder-org-names.d.ts.map +1 -0
- package/dist/mcp/funder-org-names.js +30 -0
- package/dist/mcp/funder-org-names.js.map +1 -0
- package/dist/mcp/http-server.d.ts +20 -0
- package/dist/mcp/http-server.d.ts.map +1 -0
- package/dist/mcp/http-server.js +118 -0
- package/dist/mcp/http-server.js.map +1 -0
- package/dist/mcp/middleware/field-aliases.d.ts +97 -0
- package/dist/mcp/middleware/field-aliases.d.ts.map +1 -0
- package/dist/mcp/middleware/field-aliases.js +208 -0
- package/dist/mcp/middleware/field-aliases.js.map +1 -0
- package/dist/mcp/resources/schema.d.ts +13 -0
- package/dist/mcp/resources/schema.d.ts.map +1 -0
- package/dist/mcp/resources/schema.js +262 -0
- package/dist/mcp/resources/schema.js.map +1 -0
- package/dist/mcp/schema/context.d.ts +10 -0
- package/dist/mcp/schema/context.d.ts.map +1 -0
- package/dist/mcp/schema/context.js +6 -0
- package/dist/mcp/schema/context.js.map +1 -0
- package/dist/mcp/schema/index.d.ts +8 -0
- package/dist/mcp/schema/index.d.ts.map +1 -0
- package/dist/mcp/schema/index.js +6 -0
- package/dist/mcp/schema/index.js.map +1 -0
- package/dist/mcp/server.d.ts +56 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +168 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/shared-schema.d.ts +13 -0
- package/dist/mcp/shared-schema.d.ts.map +1 -0
- package/dist/mcp/shared-schema.js +28 -0
- package/dist/mcp/shared-schema.js.map +1 -0
- package/dist/mcp/tools/analytics-filters.d.ts +18 -0
- package/dist/mcp/tools/analytics-filters.d.ts.map +1 -0
- package/dist/mcp/tools/analytics-filters.js +35 -0
- package/dist/mcp/tools/analytics-filters.js.map +1 -0
- package/dist/mcp/tools/analytics.d.ts +16 -0
- package/dist/mcp/tools/analytics.d.ts.map +1 -0
- package/dist/mcp/tools/analytics.js +381 -0
- package/dist/mcp/tools/analytics.js.map +1 -0
- package/dist/mcp/tools/concept-profile.d.ts +14 -0
- package/dist/mcp/tools/concept-profile.d.ts.map +1 -0
- package/dist/mcp/tools/concept-profile.js +130 -0
- package/dist/mcp/tools/concept-profile.js.map +1 -0
- package/dist/mcp/tools/dataset-profile.d.ts +15 -0
- package/dist/mcp/tools/dataset-profile.d.ts.map +1 -0
- package/dist/mcp/tools/dataset-profile.js +194 -0
- package/dist/mcp/tools/dataset-profile.js.map +1 -0
- package/dist/mcp/tools/fetch-search-pages.d.ts +15 -0
- package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -0
- package/dist/mcp/tools/fetch-search-pages.js +237 -0
- package/dist/mcp/tools/fetch-search-pages.js.map +1 -0
- package/dist/mcp/tools/functions.d.ts +14 -0
- package/dist/mcp/tools/functions.d.ts.map +1 -0
- package/dist/mcp/tools/functions.js +87 -0
- package/dist/mcp/tools/functions.js.map +1 -0
- package/dist/mcp/tools/impact-chain.d.ts +15 -0
- package/dist/mcp/tools/impact-chain.d.ts.map +1 -0
- package/dist/mcp/tools/impact-chain.js +96 -0
- package/dist/mcp/tools/impact-chain.js.map +1 -0
- package/dist/mcp/tools/kwq.d.ts +19 -0
- package/dist/mcp/tools/kwq.d.ts.map +1 -0
- package/dist/mcp/tools/kwq.js +156 -0
- package/dist/mcp/tools/kwq.js.map +1 -0
- package/dist/mcp/tools/lookup.d.ts +14 -0
- package/dist/mcp/tools/lookup.d.ts.map +1 -0
- package/dist/mcp/tools/lookup.js +146 -0
- package/dist/mcp/tools/lookup.js.map +1 -0
- package/dist/mcp/tools/policy-profile.d.ts +15 -0
- package/dist/mcp/tools/policy-profile.d.ts.map +1 -0
- package/dist/mcp/tools/policy-profile.js +174 -0
- package/dist/mcp/tools/policy-profile.js.map +1 -0
- package/dist/mcp/tools/profile.d.ts +14 -0
- package/dist/mcp/tools/profile.d.ts.map +1 -0
- package/dist/mcp/tools/profile.js +349 -0
- package/dist/mcp/tools/profile.js.map +1 -0
- package/dist/mcp/tools/query.d.ts +16 -0
- package/dist/mcp/tools/query.d.ts.map +1 -0
- package/dist/mcp/tools/query.js +75 -0
- package/dist/mcp/tools/query.js.map +1 -0
- package/dist/mcp/tools/schema.d.ts +23 -0
- package/dist/mcp/tools/schema.d.ts.map +1 -0
- package/dist/mcp/tools/schema.js +124 -0
- package/dist/mcp/tools/schema.js.map +1 -0
- package/dist/mcp/tools/search-entity-metadata.d.ts +18 -0
- package/dist/mcp/tools/search-entity-metadata.d.ts.map +1 -0
- package/dist/mcp/tools/search-entity-metadata.js +221 -0
- package/dist/mcp/tools/search-entity-metadata.js.map +1 -0
- package/dist/mcp/tools/search-input.d.ts +58 -0
- package/dist/mcp/tools/search-input.d.ts.map +1 -0
- package/dist/mcp/tools/search-input.js +76 -0
- package/dist/mcp/tools/search-input.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +24 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +115 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/utils.d.ts +82 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +126 -0
- package/dist/mcp/utils.js.map +1 -0
- package/dist/middleware/field-aliases.d.ts +97 -0
- package/dist/middleware/field-aliases.d.ts.map +1 -0
- package/dist/middleware/field-aliases.js +208 -0
- package/dist/middleware/field-aliases.js.map +1 -0
- package/dist/resources/schema.d.ts +13 -0
- package/dist/resources/schema.d.ts.map +1 -0
- package/dist/resources/schema.js +204 -0
- package/dist/resources/schema.js.map +1 -0
- package/dist/schema/context.d.ts +10 -0
- package/dist/schema/context.d.ts.map +1 -0
- package/dist/schema/context.js +6 -0
- package/dist/schema/context.js.map +1 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/load.d.ts +43 -0
- package/dist/schema/load.d.ts.map +1 -0
- package/dist/schema/load.js +139 -0
- package/dist/schema/load.js.map +1 -0
- package/dist/schema/store.d.ts +112 -0
- package/dist/schema/store.d.ts.map +1 -0
- package/dist/schema/store.js +173 -0
- package/dist/schema/store.js.map +1 -0
- package/dist/schema/structured-entities.d.ts +21 -0
- package/dist/schema/structured-entities.d.ts.map +1 -0
- package/dist/schema/structured-entities.js +39 -0
- package/dist/schema/structured-entities.js.map +1 -0
- package/dist/schema/types.d.ts +36 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +6 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/server.d.ts +57 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +144 -0
- package/dist/server.js.map +1 -0
- package/dist/telemetry.d.ts +172 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +233 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools/analytics-filters.d.ts +18 -0
- package/dist/tools/analytics-filters.d.ts.map +1 -0
- package/dist/tools/analytics-filters.js +35 -0
- package/dist/tools/analytics-filters.js.map +1 -0
- package/dist/tools/analytics.d.ts +16 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +381 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/concept-profile.d.ts +14 -0
- package/dist/tools/concept-profile.d.ts.map +1 -0
- package/dist/tools/concept-profile.js +130 -0
- package/dist/tools/concept-profile.js.map +1 -0
- package/dist/tools/dataset-profile.d.ts +15 -0
- package/dist/tools/dataset-profile.d.ts.map +1 -0
- package/dist/tools/dataset-profile.js +194 -0
- package/dist/tools/dataset-profile.js.map +1 -0
- package/dist/tools/functions.d.ts +14 -0
- package/dist/tools/functions.d.ts.map +1 -0
- package/dist/tools/functions.js +294 -0
- package/dist/tools/functions.js.map +1 -0
- package/dist/tools/impact-chain.d.ts +15 -0
- package/dist/tools/impact-chain.d.ts.map +1 -0
- package/dist/tools/impact-chain.js +96 -0
- package/dist/tools/impact-chain.js.map +1 -0
- package/dist/tools/kwq.d.ts +19 -0
- package/dist/tools/kwq.d.ts.map +1 -0
- package/dist/tools/kwq.js +156 -0
- package/dist/tools/kwq.js.map +1 -0
- package/dist/tools/lookup.d.ts +14 -0
- package/dist/tools/lookup.d.ts.map +1 -0
- package/dist/tools/lookup.js +213 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/policy-profile.d.ts +15 -0
- package/dist/tools/policy-profile.d.ts.map +1 -0
- package/dist/tools/policy-profile.js +174 -0
- package/dist/tools/policy-profile.js.map +1 -0
- package/dist/tools/profile.d.ts +14 -0
- package/dist/tools/profile.d.ts.map +1 -0
- package/dist/tools/profile.js +349 -0
- package/dist/tools/profile.js.map +1 -0
- package/dist/tools/query.d.ts +16 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +53 -0
- package/dist/tools/query.js.map +1 -0
- package/dist/tools/schema.d.ts +23 -0
- package/dist/tools/schema.d.ts.map +1 -0
- package/dist/tools/schema.js +124 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/search-entity-metadata.d.ts +18 -0
- package/dist/tools/search-entity-metadata.d.ts.map +1 -0
- package/dist/tools/search-entity-metadata.js +221 -0
- package/dist/tools/search-entity-metadata.js.map +1 -0
- package/dist/tools/search.d.ts +23 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +110 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/solr-fields.d.ts +39 -0
- package/dist/tools/solr-fields.d.ts.map +1 -0
- package/dist/tools/solr-fields.js +40 -0
- package/dist/tools/solr-fields.js.map +1 -0
- package/dist/utils.d.ts +70 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +104 -0
- package/dist/utils.js.map +1 -0
- package/package.json +41 -0
- package/src/client/auth/config-loaders.ts +81 -0
- package/src/client/auth/decorators/index.ts +7 -0
- package/src/client/auth/decorators/with-caching.ts +237 -0
- package/src/client/auth/factory.ts +34 -0
- package/src/client/auth/index.ts +6 -0
- package/src/client/auth/jwt-utils.ts +36 -0
- package/src/client/auth/node.ts +16 -0
- package/src/client/auth/providers/index.ts +1 -0
- package/src/client/auth/providers/jwt-auth-provider.ts +153 -0
- package/src/client/auth/schemas.ts +25 -0
- package/src/client/auth/types.ts +30 -0
- package/src/client/command.ts +54 -0
- package/src/client/config/index.ts +15 -0
- package/src/client/config/loader.ts +155 -0
- package/src/client/config/node.ts +22 -0
- package/src/client/config/schemas.ts +28 -0
- package/src/client/config/types.ts +39 -0
- package/src/client/config/unified-loader.ts +118 -0
- package/src/client/config.ts +69 -0
- package/src/client/deployment-config.ts +98 -0
- package/src/client/errors.ts +295 -0
- package/src/client/http-client.ts +577 -0
- package/src/client/index.ts +68 -0
- package/src/client/internal-dsl-client.ts +128 -0
- package/src/client/rate-limiter.ts +139 -0
- package/src/client/resolve-api-key-user.ts +99 -0
- package/src/client/types.ts +44 -0
- package/src/dsl/client.ts +538 -0
- package/src/dsl/commands/apply-filters.ts +35 -0
- package/src/dsl/commands/facet/index.ts +12 -0
- package/src/dsl/commands/facet/schemas.ts +101 -0
- package/src/dsl/commands/functions/ClassifyCommand.ts +129 -0
- package/src/dsl/commands/functions/ExtractAffiliationsCommand.ts +163 -0
- package/src/dsl/commands/functions/ExtractConceptsCommand.ts +141 -0
- package/src/dsl/commands/functions/ExtractGrantsCommand.ts +112 -0
- package/src/dsl/commands/functions/index.ts +31 -0
- package/src/dsl/commands/index.ts +29 -0
- package/src/dsl/commands/validate-input.ts +29 -0
- package/src/dsl/create-client.ts +80 -0
- package/src/dsl/fluent-query-builder.ts +684 -0
- package/src/dsl/index.ts +206 -0
- package/src/dsl/pagination.ts +202 -0
- package/src/dsl/query-builder.ts +1120 -0
- package/src/dsl/response-parser.ts +299 -0
- package/src/dsl/schema/cache.ts +124 -0
- package/src/dsl/schema/extract.ts +44 -0
- package/src/dsl/schema/index.ts +50 -0
- package/src/dsl/schema/load.ts +160 -0
- package/src/dsl/schema/store.ts +253 -0
- package/src/dsl/schema/structured-entities.ts +44 -0
- package/src/dsl/schema/summary.ts +94 -0
- package/src/dsl/schema/types.ts +40 -0
- package/src/dsl/schema/validation.ts +56 -0
- package/src/dsl/types/buckets.ts +22 -0
- package/src/dsl/types/common.ts +99 -0
- package/src/dsl/types/entities.ts +43 -0
- package/src/dsl/types/index.ts +63 -0
- package/src/dsl/types/return-clauses.ts +147 -0
- package/src/dsl/types/special-functions.ts +220 -0
- package/src/dsl/types/vocabulary.ts +82 -0
- package/src/dsl/usage-policy.ts +219 -0
- package/src/dsl/utils/escape.ts +123 -0
- package/src/dsl/utils/sanitize.ts +21 -0
- package/src/dsl/utils/string-utils.ts +147 -0
- package/src/dsl/utils/validate-field-name.ts +19 -0
- package/src/http-main.ts +41 -0
- package/src/index.ts +14 -0
- package/src/main.ts +40 -0
- package/src/mcp/batch-fetch.ts +255 -0
- package/src/mcp/examples/dsl-examples.ts +66 -0
- package/src/mcp/examples/usage-scenarios.ts +185 -0
- package/src/mcp/export-format.ts +113 -0
- package/src/mcp/funder-org-names.ts +30 -0
- package/src/mcp/http-server.ts +148 -0
- package/src/mcp/middleware/field-aliases.ts +274 -0
- package/src/mcp/resources/schema.ts +364 -0
- package/src/mcp/schema/context.ts +11 -0
- package/src/mcp/schema/index.ts +38 -0
- package/src/mcp/server.ts +247 -0
- package/src/mcp/shared-schema.ts +34 -0
- package/src/mcp/tools/analytics-filters.ts +46 -0
- package/src/mcp/tools/analytics.ts +453 -0
- package/src/mcp/tools/fetch-search-pages.ts +329 -0
- package/src/mcp/tools/functions.ts +105 -0
- package/src/mcp/tools/lookup.ts +182 -0
- package/src/mcp/tools/query.ts +91 -0
- package/src/mcp/tools/schema.ts +147 -0
- package/src/mcp/tools/search-entity-metadata.ts +253 -0
- package/src/mcp/tools/search-input.ts +87 -0
- package/src/mcp/tools/search.ts +168 -0
- package/src/mcp/utils.ts +199 -0
- package/test/client/auth/config-loaders.test.ts +92 -0
- package/test/client/auth/decorators/with-caching.test.ts +482 -0
- package/test/client/auth/factory.test.ts +68 -0
- package/test/client/auth/providers/jwt-auth-provider.test.ts +398 -0
- package/test/client/auth/types.test.ts +18 -0
- package/test/client/command.test.ts +163 -0
- package/test/client/config/loader.test.ts +377 -0
- package/test/client/config/unified-loader.test.ts +136 -0
- package/test/client/deployment-config.test.ts +69 -0
- package/test/client/errors/index.test.ts +408 -0
- package/test/client/helpers/mock-fetch.ts +42 -0
- package/test/client/http-client.test.ts +1148 -0
- package/test/client/integration/auth-providers.integration.test.ts +186 -0
- package/test/client/internal-dsl-client.test.ts +76 -0
- package/test/client/rate-limiter.test.ts +204 -0
- package/test/client/resolve-api-key-user.test.ts +87 -0
- package/test/dsl/client.special-functions.test.ts +387 -0
- package/test/dsl/client.test.ts +457 -0
- package/test/dsl/commands/apply-filters.test.ts +147 -0
- package/test/dsl/commands/functions/ClassifyCommand.test.ts +170 -0
- package/test/dsl/commands/functions/ExtractAffiliationsCommand.test.ts +306 -0
- package/test/dsl/commands/functions/ExtractConceptsCommand.test.ts +136 -0
- package/test/dsl/commands/functions/ExtractGrantsCommand.test.ts +202 -0
- package/test/dsl/commands/search/filters.test.ts +42 -0
- package/test/dsl/fluent-query-builder.test.ts +865 -0
- package/test/dsl/integration/client.integration.test.ts +294 -0
- package/test/dsl/integration/facet-api.integration.test.ts +276 -0
- package/test/dsl/integration/field-existence.integration.test.ts +148 -0
- package/test/dsl/integration/fluent-api-docs-examples.integration.test.ts +988 -0
- package/test/dsl/integration/fluent-api.integration.test.ts +615 -0
- package/test/dsl/integration/search-helpers.ts +27 -0
- package/test/dsl/integration/special-functions.integration.test.ts +224 -0
- package/test/dsl/integration/test-config.ts +52 -0
- package/test/dsl/pagination.test.ts +86 -0
- package/test/dsl/query-builder.test.ts +1775 -0
- package/test/dsl/response-parser.test.ts +520 -0
- package/test/dsl/schema/cache.test.ts +53 -0
- package/test/dsl/schema/load.test.ts +165 -0
- package/test/dsl/schema/summary.test.ts +61 -0
- package/test/dsl/schema/validation.test.ts +46 -0
- package/test/dsl/time-series.test.ts +135 -0
- package/test/dsl/unnest.test.ts +151 -0
- package/test/dsl/usage-policy.test.ts +100 -0
- package/test/dsl/utils/escape.property.test.ts +109 -0
- package/test/dsl/utils/escape.test.ts +140 -0
- package/test/dsl/utils/validate-field-name.property.test.ts +99 -0
- package/test/dsl/utils/validate-field-name.test.ts +55 -0
- package/test/examples/dsl-examples.test.ts +29 -0
- package/test/examples/usage-scenarios.test.ts +90 -0
- package/test/fixtures/describe-schema.json +4000 -0
- package/test/funder-org-names.test.ts +20 -0
- package/test/helpers/schema-fixture.ts +18 -0
- package/test/helpers/tool-test-harness.ts +114 -0
- package/test/integration/assertions.ts +263 -0
- package/test/integration/env.ts +108 -0
- package/test/integration/harness.ts +307 -0
- package/test/integration/hosted-client.ts +56 -0
- package/test/integration/hosted-mocks.ts +81 -0
- package/test/integration/hosted-run.ts +86 -0
- package/test/integration/hosted.e2e.test.ts +101 -0
- package/test/integration/reporter.ts +100 -0
- package/test/integration/run.ts +74 -0
- package/test/integration/suites/analytics.integration.ts +72 -0
- package/test/integration/suites/functions.integration.ts +37 -0
- package/test/integration/suites/hosted-smoke.integration.ts +38 -0
- package/test/integration/suites/index.ts +22 -0
- package/test/integration/suites/lookup.integration.ts +57 -0
- package/test/integration/suites/query.integration.ts +49 -0
- package/test/integration/suites/resources.integration.ts +68 -0
- package/test/integration/suites/search.integration.ts +80 -0
- package/test/integration/types.ts +92 -0
- package/test/integration/verify-usage-scenarios.ts +162 -0
- package/test/mcp/export-format.test.ts +67 -0
- package/test/mcp/http-server.test.ts +80 -0
- package/test/middleware/field-aliases.test.ts +287 -0
- package/test/resources/schema.test.ts +28 -0
- package/test/schema/describe-contract.test.ts +24 -0
- package/test/schema/store.test.ts +45 -0
- package/test/server.test.ts +170 -0
- package/test/tools/analytics-filters.test.ts +35 -0
- package/test/tools/analytics.test.ts +419 -0
- package/test/tools/fetch-search-pages.test.ts +200 -0
- package/test/tools/functions.test.ts +153 -0
- package/test/tools/lookup.test.ts +296 -0
- package/test/tools/query.test.ts +100 -0
- package/test/tools/schema.test.ts +37 -0
- package/test/tools/search.test.ts +415 -0
- package/test/utils.test.ts +45 -0
- package/tsconfig.json +9 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main DimensionsClient class for interacting with the Dimensions API.
|
|
3
|
+
* Orchestrates authentication, rate limiting, and HTTP communication.
|
|
4
|
+
* @module client
|
|
5
|
+
*/
|
|
6
|
+
import { createAuthProvider, DimensionsClientConfigSchema, HttpClient, InternalDslClient, RateLimiter, ValidationError, } from "../client/index.js";
|
|
7
|
+
import { ClassifyCommand, ExtractAffiliationsCommand, ExtractConceptsCommand, ExtractGrantsCommand, } from "./commands/functions/index.js";
|
|
8
|
+
import { FluentQueryBuilder } from "./fluent-query-builder.js";
|
|
9
|
+
import { QueryBuilder } from "./query-builder.js";
|
|
10
|
+
/**
|
|
11
|
+
* Client for interacting with the Dimensions Analytics API.
|
|
12
|
+
* Handles authentication, rate limiting, and command execution.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const client = new DimensionsClient({ apiKey: "your-api-key" });
|
|
17
|
+
*
|
|
18
|
+
* const result = await client.send(
|
|
19
|
+
* client.rawQuery('search publications for "machine learning" return publications limit 10')
|
|
20
|
+
* );
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export class DimensionsClient {
|
|
24
|
+
config;
|
|
25
|
+
authProvider;
|
|
26
|
+
httpClient;
|
|
27
|
+
internalClient;
|
|
28
|
+
rateLimiter;
|
|
29
|
+
schemaStore;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new DimensionsClient instance.
|
|
32
|
+
* @param config - Client configuration
|
|
33
|
+
* @throws {ValidationError} If configuration is invalid
|
|
34
|
+
*/
|
|
35
|
+
constructor(config) {
|
|
36
|
+
// Validate and apply defaults
|
|
37
|
+
const parseResult = DimensionsClientConfigSchema.safeParse(config);
|
|
38
|
+
if (!parseResult.success) {
|
|
39
|
+
throw new ValidationError(`Invalid configuration: ${parseResult.error.message}`, {
|
|
40
|
+
issues: parseResult.error.issues,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
this.config = parseResult.data;
|
|
44
|
+
if (this.config.backend === "internal") {
|
|
45
|
+
const internal = this.config.internal;
|
|
46
|
+
this.internalClient = new InternalDslClient({
|
|
47
|
+
config: internal.service,
|
|
48
|
+
userEmail: internal.userEmail,
|
|
49
|
+
clientIp: internal.clientIp,
|
|
50
|
+
timeout: this.config.timeout,
|
|
51
|
+
});
|
|
52
|
+
this.rateLimiter = new RateLimiter({
|
|
53
|
+
maxRequests: 1000,
|
|
54
|
+
windowMs: 60_000,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.authProvider = createAuthProvider({
|
|
59
|
+
type: "jwt",
|
|
60
|
+
apiKey: this.config.apiKey,
|
|
61
|
+
authUrl: `${this.config.baseUrl}/api/auth.json`,
|
|
62
|
+
timeout: this.config.timeout,
|
|
63
|
+
});
|
|
64
|
+
this.rateLimiter = new RateLimiter({
|
|
65
|
+
maxRequests: this.config.rateLimitPerMinute,
|
|
66
|
+
windowMs: 60_000,
|
|
67
|
+
});
|
|
68
|
+
this.httpClient = new HttpClient({
|
|
69
|
+
baseUrl: this.config.baseUrl,
|
|
70
|
+
authProvider: this.authProvider,
|
|
71
|
+
timeout: this.config.timeout,
|
|
72
|
+
maxRetries: this.config.maxRetries,
|
|
73
|
+
retryDelay: this.config.retryDelay,
|
|
74
|
+
rateLimiter: this.rateLimiter,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
async executeDslQuery(dsl, endpoint, options) {
|
|
78
|
+
if (this.internalClient) {
|
|
79
|
+
return this.internalClient.query(dsl, options);
|
|
80
|
+
}
|
|
81
|
+
const response = await this.httpClient.query(dsl, endpoint, options);
|
|
82
|
+
return response;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sends a command to the Dimensions API.
|
|
86
|
+
* @param command - The command to execute
|
|
87
|
+
* @returns The transformed response
|
|
88
|
+
* @throws {ValidationError} If command input is invalid
|
|
89
|
+
* @throws {AuthenticationError} If authentication fails
|
|
90
|
+
* @throws {RateLimitError} If rate limit is exceeded
|
|
91
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
92
|
+
* @throws {ServerError} If server error occurs
|
|
93
|
+
* @throws {NetworkError} If network error occurs
|
|
94
|
+
* @throws {TimeoutError} If request times out
|
|
95
|
+
*/
|
|
96
|
+
async send(command) {
|
|
97
|
+
// Build DSL query
|
|
98
|
+
const dsl = command.resolveQuery?.() ?? "";
|
|
99
|
+
const endpoint = command.resolveEndpoint();
|
|
100
|
+
// Validate DSL before sending if enabled
|
|
101
|
+
if (dsl && this.config.validateQueries) {
|
|
102
|
+
this.assertValidDsl(dsl);
|
|
103
|
+
}
|
|
104
|
+
// Execute HTTP query (auth and rate limiting are handled by HttpClient)
|
|
105
|
+
const response = await this.executeDslQuery(dsl, endpoint, undefined);
|
|
106
|
+
// Transform response if command has a transformer
|
|
107
|
+
if (command.transformResponse) {
|
|
108
|
+
return command.transformResponse(response);
|
|
109
|
+
}
|
|
110
|
+
// Return raw response if no transformer
|
|
111
|
+
return response;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Gets current rate limit status.
|
|
115
|
+
* @returns Rate limit information
|
|
116
|
+
*/
|
|
117
|
+
getRateLimitInfo() {
|
|
118
|
+
return {
|
|
119
|
+
remaining: this.rateLimiter.getRemainingRequests(),
|
|
120
|
+
resetInMs: this.rateLimiter.getTimeUntilNextSlot(),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Invalidates the cached authentication token.
|
|
125
|
+
* Forces a new token to be fetched on the next request.
|
|
126
|
+
*/
|
|
127
|
+
invalidateToken() {
|
|
128
|
+
this.authProvider?.invalidate();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Resets the rate limiter, clearing all recorded request timestamps.
|
|
132
|
+
* Useful for testing or when starting a fresh session.
|
|
133
|
+
*/
|
|
134
|
+
resetRateLimiter() {
|
|
135
|
+
this.rateLimiter.reset();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Executes a raw DSL query against the Dimensions API.
|
|
139
|
+
* Use this for generic/dynamic queries not covered by specific commands.
|
|
140
|
+
*
|
|
141
|
+
* @param dsl - The DSL query string to execute
|
|
142
|
+
* @param options - Optional signal and timeout overrides
|
|
143
|
+
* @returns The raw API response
|
|
144
|
+
* @throws {AuthenticationError} If authentication fails
|
|
145
|
+
* @throws {RateLimitError} If rate limit is exceeded
|
|
146
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
147
|
+
* @throws {ServerError} If server error occurs
|
|
148
|
+
* @throws {NetworkError} If network error occurs
|
|
149
|
+
* @throws {TimeoutError} If request times out
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const response = await client.rawQuery(
|
|
154
|
+
* 'search publications for "CRISPR" return publications[id+title] limit 10'
|
|
155
|
+
* );
|
|
156
|
+
* console.log(response.publications);
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
async rawQuery(dsl, options) {
|
|
160
|
+
// Validate DSL before sending if enabled
|
|
161
|
+
if (this.config.validateQueries) {
|
|
162
|
+
this.assertValidDsl(dsl);
|
|
163
|
+
}
|
|
164
|
+
// Execute HTTP query (auth and rate limiting are handled by HttpClient)
|
|
165
|
+
const response = await this.executeDslQuery(dsl, "/api/dsl/v2", options);
|
|
166
|
+
return response;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Validates a DSL string and throws {@link ValidationError} if it is invalid.
|
|
170
|
+
* @param dsl - The DSL query string to validate
|
|
171
|
+
* @throws {ValidationError} If the DSL fails parsing or semantic validation
|
|
172
|
+
*/
|
|
173
|
+
assertValidDsl(_dsl) {
|
|
174
|
+
// Local parser validation removed; Dimensions API validates on execute.
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Attaches a loaded describe schema for QueryBuilder entity/index validation.
|
|
178
|
+
* @param store - Schema from {@link loadSchema} or {@link getOrLoadSchema}
|
|
179
|
+
*/
|
|
180
|
+
attachSchemaStore(store) {
|
|
181
|
+
this.schemaStore = store;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Creates a {@link QueryBuilder} validated against the attached schema when present.
|
|
185
|
+
* @returns New query builder instance
|
|
186
|
+
*/
|
|
187
|
+
createQueryBuilder() {
|
|
188
|
+
return new QueryBuilder(this.schemaStore);
|
|
189
|
+
}
|
|
190
|
+
// #region Fluent API Entity Entry Points
|
|
191
|
+
/**
|
|
192
|
+
* Creates a type-safe fluent query builder for the specified entity.
|
|
193
|
+
* @param entity - The entity type key
|
|
194
|
+
* @returns A FluentQueryBuilder typed to the entity
|
|
195
|
+
*/
|
|
196
|
+
createFluentBuilder(entity) {
|
|
197
|
+
return new FluentQueryBuilder(this, entity, this.schemaStore);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Creates a fluent query builder for publications.
|
|
201
|
+
* @returns A FluentQueryBuilder configured for publications
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const result = await client
|
|
206
|
+
* .publications()
|
|
207
|
+
* .for("machine learning")
|
|
208
|
+
* .where("year", ">=", 2020)
|
|
209
|
+
* .fields(["id", "title", "doi"])
|
|
210
|
+
* .execute();
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
publications() {
|
|
214
|
+
return this.createFluentBuilder("publications");
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Creates a fluent query builder for grants.
|
|
218
|
+
* @returns A FluentQueryBuilder configured for grants
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const result = await client
|
|
223
|
+
* .grants()
|
|
224
|
+
* .for("cancer research")
|
|
225
|
+
* .where("funding_usd", ">", 1000000)
|
|
226
|
+
* .execute();
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
grants() {
|
|
230
|
+
return this.createFluentBuilder("grants");
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Creates a fluent query builder for researchers.
|
|
234
|
+
* @returns A FluentQueryBuilder configured for researchers
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* const result = await client
|
|
239
|
+
* .researchers()
|
|
240
|
+
* .for("smith")
|
|
241
|
+
* .whereNotEmpty("orcid_id")
|
|
242
|
+
* .execute();
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
researchers() {
|
|
246
|
+
return this.createFluentBuilder("researchers");
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Creates a fluent query builder for patents.
|
|
250
|
+
* @returns A FluentQueryBuilder configured for patents
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const result = await client
|
|
255
|
+
* .patents()
|
|
256
|
+
* .for("battery technology")
|
|
257
|
+
* .where("year", ">=", 2020)
|
|
258
|
+
* .execute();
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
patents() {
|
|
262
|
+
return this.createFluentBuilder("patents");
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Creates a fluent query builder for clinical trials.
|
|
266
|
+
* @returns A FluentQueryBuilder configured for clinical_trials
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```typescript
|
|
270
|
+
* const result = await client
|
|
271
|
+
* .clinicalTrials()
|
|
272
|
+
* .for("diabetes")
|
|
273
|
+
* .where("phase", "=", "Phase 3")
|
|
274
|
+
* .execute();
|
|
275
|
+
* ```
|
|
276
|
+
*/
|
|
277
|
+
clinicalTrials() {
|
|
278
|
+
return this.createFluentBuilder("clinical_trials");
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Creates a fluent query builder for datasets.
|
|
282
|
+
* @returns A FluentQueryBuilder configured for datasets
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```typescript
|
|
286
|
+
* const result = await client
|
|
287
|
+
* .datasets()
|
|
288
|
+
* .for("genomics")
|
|
289
|
+
* .where("year", ">=", 2020)
|
|
290
|
+
* .execute();
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
datasets() {
|
|
294
|
+
return this.createFluentBuilder("datasets");
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Creates a fluent query builder for policy documents.
|
|
298
|
+
* @returns A FluentQueryBuilder configured for policy_documents
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```typescript
|
|
302
|
+
* const result = await client
|
|
303
|
+
* .policyDocuments()
|
|
304
|
+
* .for("climate change")
|
|
305
|
+
* .execute();
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
policyDocuments() {
|
|
309
|
+
return this.createFluentBuilder("policy_documents");
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Creates a fluent query builder for organizations.
|
|
313
|
+
* @returns A FluentQueryBuilder configured for organizations
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* ```typescript
|
|
317
|
+
* const result = await client
|
|
318
|
+
* .organizations()
|
|
319
|
+
* .for("stanford")
|
|
320
|
+
* .execute();
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
organizations() {
|
|
324
|
+
return this.createFluentBuilder("organizations");
|
|
325
|
+
}
|
|
326
|
+
// #endregion
|
|
327
|
+
// #region Special Function Methods
|
|
328
|
+
/**
|
|
329
|
+
* Classifies text using a specified Dimensions classification system.
|
|
330
|
+
* Supports FOR, SDG, RCDC, and other research classification taxonomies.
|
|
331
|
+
*
|
|
332
|
+
* @template S - The classification system type
|
|
333
|
+
* @param options - Classification options including title, abstract, and system
|
|
334
|
+
* @returns Classification codes with their names
|
|
335
|
+
* @throws {ValidationError} If input validation fails
|
|
336
|
+
* @throws {AuthenticationError} If authentication fails
|
|
337
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```typescript
|
|
341
|
+
* const result = await client.classify({
|
|
342
|
+
* title: "Burnout and intentions to quit the nursing profession",
|
|
343
|
+
* abstract: "BACKGROUND: Burnout is an occupational disease...",
|
|
344
|
+
* system: "FOR"
|
|
345
|
+
* });
|
|
346
|
+
* console.log(result.FOR); // [{ id: "1117", name: "Public Health..." }]
|
|
347
|
+
* ```
|
|
348
|
+
*/
|
|
349
|
+
async classify(options) {
|
|
350
|
+
return this.send(new ClassifyCommand(options));
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Extracts concepts from text using Dimensions natural language processing.
|
|
354
|
+
*
|
|
355
|
+
* @template WithScores - Whether to include relevance scores
|
|
356
|
+
* @param text - Text to extract concepts from
|
|
357
|
+
* @param options - Optional settings including returnScores
|
|
358
|
+
* @returns Array of concepts, optionally with relevance scores
|
|
359
|
+
* @throws {ValidationError} If input validation fails
|
|
360
|
+
* @throws {AuthenticationError} If authentication fails
|
|
361
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```typescript
|
|
365
|
+
* // Simple extraction
|
|
366
|
+
* const concepts = await client.extractConcepts(
|
|
367
|
+
* "Machine learning algorithms for drug discovery"
|
|
368
|
+
* );
|
|
369
|
+
* console.log(concepts.extracted_concepts); // ["machine learning", "drug discovery", ...]
|
|
370
|
+
*
|
|
371
|
+
* // With relevance scores
|
|
372
|
+
* const conceptsWithScores = await client.extractConcepts(
|
|
373
|
+
* "Machine learning algorithms for drug discovery",
|
|
374
|
+
* { returnScores: true }
|
|
375
|
+
* );
|
|
376
|
+
* console.log(conceptsWithScores.extracted_concepts);
|
|
377
|
+
* // [{ concept: "machine learning", relevance: 0.95 }, ...]
|
|
378
|
+
* ```
|
|
379
|
+
*/
|
|
380
|
+
async extractConcepts(text, options) {
|
|
381
|
+
return this.send(new ExtractConceptsCommand({
|
|
382
|
+
text,
|
|
383
|
+
returnScores: (options?.returnScores ?? false),
|
|
384
|
+
}));
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Extracts and resolves organization affiliations using Dimensions entity resolution.
|
|
388
|
+
* Takes freetext or structured affiliation data and returns matched organizations.
|
|
389
|
+
*
|
|
390
|
+
* @param affiliations - Array of affiliation inputs to resolve
|
|
391
|
+
* @returns Array of resolved organization matches with confidence scores
|
|
392
|
+
* @throws {ValidationError} If input validation fails
|
|
393
|
+
* @throws {AuthenticationError} If authentication fails
|
|
394
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
395
|
+
*
|
|
396
|
+
* @example
|
|
397
|
+
* ```typescript
|
|
398
|
+
* const result = await client.extractAffiliations([
|
|
399
|
+
* { affiliation: "University of Oxford, UK" },
|
|
400
|
+
* { name: "Stanford", city: "Stanford", country: "USA" }
|
|
401
|
+
* ]);
|
|
402
|
+
* console.log(result.extracted_affiliations);
|
|
403
|
+
* // [{ id: "grid.4991.5", name: "University of Oxford", score: 0.95 }, ...]
|
|
404
|
+
* ```
|
|
405
|
+
*/
|
|
406
|
+
async extractAffiliations(affiliations) {
|
|
407
|
+
return this.send(new ExtractAffiliationsCommand({ affiliations }));
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Resolves a grant number to a Dimensions grant ID.
|
|
411
|
+
* Takes a grant number and optional funder information to find the matching grant.
|
|
412
|
+
*
|
|
413
|
+
* @param options - Grant lookup parameters
|
|
414
|
+
* @returns Resolved grant ID, or null if no match found
|
|
415
|
+
* @throws {ValidationError} If input validation fails
|
|
416
|
+
* @throws {AuthenticationError} If authentication fails
|
|
417
|
+
* @throws {QuerySyntaxError} If query syntax is invalid
|
|
418
|
+
*
|
|
419
|
+
* @example
|
|
420
|
+
* ```typescript
|
|
421
|
+
* const result = await client.extractGrants({
|
|
422
|
+
* grantNumber: "R01HL117329",
|
|
423
|
+
* fundref: "100000050"
|
|
424
|
+
* });
|
|
425
|
+
* console.log(result.grant_id);
|
|
426
|
+
* // "grant.2544064"
|
|
427
|
+
* ```
|
|
428
|
+
*/
|
|
429
|
+
async extractGrants(options) {
|
|
430
|
+
return this.send(new ExtractGrantsCommand(options));
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper for applying extended where filters to a QueryBuilder.
|
|
3
|
+
* @module commands/apply-filters
|
|
4
|
+
*/
|
|
5
|
+
import type { QueryBuilder } from "../query-builder.js";
|
|
6
|
+
import type { ExtendedWhereFilterInput } from "./facet/schemas.js";
|
|
7
|
+
/**
|
|
8
|
+
* Applies an array of extended where filters to a QueryBuilder instance.
|
|
9
|
+
* Dispatches to the appropriate QueryBuilder method based on the filter operator.
|
|
10
|
+
*
|
|
11
|
+
* @param builder - QueryBuilder instance to apply filters to
|
|
12
|
+
* @param filters - Array of extended where filters
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyFilters(builder: QueryBuilder, filters: readonly ExtendedWhereFilterInput[]): void;
|
|
15
|
+
//# sourceMappingURL=apply-filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-filters.d.ts","sourceRoot":"","sources":["../../../src/dsl/commands/apply-filters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAC3C,IAAI,CAgBN"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper for applying extended where filters to a QueryBuilder.
|
|
3
|
+
* @module commands/apply-filters
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Applies an array of extended where filters to a QueryBuilder instance.
|
|
7
|
+
* Dispatches to the appropriate QueryBuilder method based on the filter operator.
|
|
8
|
+
*
|
|
9
|
+
* @param builder - QueryBuilder instance to apply filters to
|
|
10
|
+
* @param filters - Array of extended where filters
|
|
11
|
+
*/
|
|
12
|
+
export function applyFilters(builder, filters) {
|
|
13
|
+
for (const f of filters) {
|
|
14
|
+
switch (f.operator) {
|
|
15
|
+
case "is_empty":
|
|
16
|
+
builder.whereEmpty(f.field);
|
|
17
|
+
break;
|
|
18
|
+
case "is_not_empty":
|
|
19
|
+
builder.whereNotEmpty(f.field);
|
|
20
|
+
break;
|
|
21
|
+
case "in":
|
|
22
|
+
builder.whereIn(f.field, f.value);
|
|
23
|
+
break;
|
|
24
|
+
default:
|
|
25
|
+
builder.where(f.field, f.operator, f.value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=apply-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-filters.js","sourceRoot":"","sources":["../../../src/dsl/commands/apply-filters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAqB,EACrB,OAA4C;IAE5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Facet-related schemas shared by QueryBuilder and MCP tools.
|
|
3
|
+
* @module commands/facet
|
|
4
|
+
*/
|
|
5
|
+
export { EntitySchema, type ExtendedWhereFilterInput, ExtendedWhereFilterSchema, type WhereFilterInput, WhereFilterSchema, } from "./schemas.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EAEZ,yBAAyB,EAEzB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod schemas for facet and aggregate commands.
|
|
3
|
+
* @module commands/facet/schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
/**
|
|
7
|
+
* Zod schema for the entity type field, derived from the core VALID_ENTITIES constant.
|
|
8
|
+
*/
|
|
9
|
+
export declare const EntitySchema: z.ZodEnum<{
|
|
10
|
+
[x: string]: string;
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Schema for where clause filters used in facet/aggregate commands.
|
|
14
|
+
* Supports basic comparison operators for field-level filtering.
|
|
15
|
+
*/
|
|
16
|
+
export declare const WhereFilterSchema: z.ZodObject<{
|
|
17
|
+
field: z.ZodString;
|
|
18
|
+
operator: z.ZodEnum<{
|
|
19
|
+
"=": "=";
|
|
20
|
+
"!=": "!=";
|
|
21
|
+
"<": "<";
|
|
22
|
+
">": ">";
|
|
23
|
+
"<=": "<=";
|
|
24
|
+
">=": ">=";
|
|
25
|
+
}>;
|
|
26
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
/**
|
|
29
|
+
* Input type for a where clause filter.
|
|
30
|
+
*/
|
|
31
|
+
export type WhereFilterInput = z.infer<typeof WhereFilterSchema>;
|
|
32
|
+
/**
|
|
33
|
+
* Extended where filter schema supporting all DSL filter operators.
|
|
34
|
+
* Covers scalar comparisons, set membership (in), and emptiness checks (is_empty/is_not_empty).
|
|
35
|
+
*
|
|
36
|
+
* Uses a discriminated union on `operator` for precise type narrowing.
|
|
37
|
+
*/
|
|
38
|
+
export declare const ExtendedWhereFilterSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
39
|
+
field: z.ZodString;
|
|
40
|
+
operator: z.ZodEnum<{
|
|
41
|
+
"=": "=";
|
|
42
|
+
"!=": "!=";
|
|
43
|
+
"<": "<";
|
|
44
|
+
">": ">";
|
|
45
|
+
"<=": "<=";
|
|
46
|
+
">=": ">=";
|
|
47
|
+
}>;
|
|
48
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
49
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
50
|
+
field: z.ZodString;
|
|
51
|
+
operator: z.ZodLiteral<"in">;
|
|
52
|
+
value: z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<number[], number>>, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodNumber>]>;
|
|
53
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
54
|
+
field: z.ZodString;
|
|
55
|
+
operator: z.ZodLiteral<"is_empty">;
|
|
56
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
57
|
+
field: z.ZodString;
|
|
58
|
+
operator: z.ZodLiteral<"is_not_empty">;
|
|
59
|
+
}, z.core.$strip>], "operator">;
|
|
60
|
+
/**
|
|
61
|
+
* Input type for an extended where filter (supports in/is_empty/is_not_empty).
|
|
62
|
+
*/
|
|
63
|
+
export type ExtendedWhereFilterInput = z.infer<typeof ExtendedWhereFilterSchema>;
|
|
64
|
+
/**
|
|
65
|
+
* Validates that a raw API response is a non-null object.
|
|
66
|
+
* @param response - The raw API response
|
|
67
|
+
* @returns The response as a record
|
|
68
|
+
* @throws {ValidationError} If response is not a non-null object
|
|
69
|
+
*/
|
|
70
|
+
export declare function assertObjectResponse(response: unknown): Record<string, unknown>;
|
|
71
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,YAAY;;EAA6D,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAO5B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAyCjE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;+BAKpC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK/E"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod schemas for facet and aggregate commands.
|
|
3
|
+
* @module commands/facet/schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { ValidationError } from "../../../client/index.js";
|
|
7
|
+
import { VALID_ENTITIES } from "../../types/vocabulary.js";
|
|
8
|
+
/**
|
|
9
|
+
* Zod schema for the entity type field, derived from the core VALID_ENTITIES constant.
|
|
10
|
+
*/
|
|
11
|
+
export const EntitySchema = z.enum(VALID_ENTITIES);
|
|
12
|
+
/**
|
|
13
|
+
* Schema for where clause filters used in facet/aggregate commands.
|
|
14
|
+
* Supports basic comparison operators for field-level filtering.
|
|
15
|
+
*/
|
|
16
|
+
export const WhereFilterSchema = z.object({
|
|
17
|
+
/** Field name to filter on */
|
|
18
|
+
field: z.string().min(1),
|
|
19
|
+
/** Comparison operator */
|
|
20
|
+
operator: z.enum(["=", "!=", ">", "<", ">=", "<="]),
|
|
21
|
+
/** Value to compare against */
|
|
22
|
+
value: z.union([z.string(), z.number(), z.boolean()]),
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Schema for scalar comparison filters (=, !=, >, <, >=, <=).
|
|
26
|
+
*/
|
|
27
|
+
const ScalarFilterSchema = z.object({
|
|
28
|
+
/** Field name to filter on */
|
|
29
|
+
field: z.string().min(1),
|
|
30
|
+
/** Scalar comparison operator */
|
|
31
|
+
operator: z.enum(["=", "!=", ">", "<", ">=", "<="]),
|
|
32
|
+
/** Value to compare against */
|
|
33
|
+
value: z.union([z.string(), z.number(), z.boolean()]),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Schema for set membership filters (in).
|
|
37
|
+
*/
|
|
38
|
+
const InFilterSchema = z.object({
|
|
39
|
+
/** Field name to filter on */
|
|
40
|
+
field: z.string().min(1),
|
|
41
|
+
/** Set membership operator */
|
|
42
|
+
operator: z.literal("in"),
|
|
43
|
+
/** Values to match against (scalar is coerced to single-element array) */
|
|
44
|
+
value: z.union([
|
|
45
|
+
z.string().transform((v) => [v]),
|
|
46
|
+
z.number().transform((v) => [v]),
|
|
47
|
+
z.array(z.string()).min(1),
|
|
48
|
+
z.array(z.number()).min(1),
|
|
49
|
+
]),
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Schema for emptiness check filters (is_empty, is_not_empty).
|
|
53
|
+
*/
|
|
54
|
+
const EmptinessFilterSchema = z.object({
|
|
55
|
+
/** Field name to filter on */
|
|
56
|
+
field: z.string().min(1),
|
|
57
|
+
/** Emptiness check operator */
|
|
58
|
+
operator: z.enum(["is_empty", "is_not_empty"]),
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Extended where filter schema supporting all DSL filter operators.
|
|
62
|
+
* Covers scalar comparisons, set membership (in), and emptiness checks (is_empty/is_not_empty).
|
|
63
|
+
*
|
|
64
|
+
* Uses a discriminated union on `operator` for precise type narrowing.
|
|
65
|
+
*/
|
|
66
|
+
export const ExtendedWhereFilterSchema = z.discriminatedUnion("operator", [
|
|
67
|
+
ScalarFilterSchema,
|
|
68
|
+
InFilterSchema,
|
|
69
|
+
EmptinessFilterSchema.extend({ operator: z.literal("is_empty") }),
|
|
70
|
+
EmptinessFilterSchema.extend({ operator: z.literal("is_not_empty") }),
|
|
71
|
+
]);
|
|
72
|
+
/**
|
|
73
|
+
* Validates that a raw API response is a non-null object.
|
|
74
|
+
* @param response - The raw API response
|
|
75
|
+
* @returns The response as a record
|
|
76
|
+
* @throws {ValidationError} If response is not a non-null object
|
|
77
|
+
*/
|
|
78
|
+
export function assertObjectResponse(response) {
|
|
79
|
+
if (response == null || typeof response !== "object" || Array.isArray(response)) {
|
|
80
|
+
throw new ValidationError("Expected object response from API");
|
|
81
|
+
}
|
|
82
|
+
return response;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=schemas.js.map
|