mcp-server-framework 1.0.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/CHANGELOG.md +174 -0
- package/LICENSE-GPL.md +219 -0
- package/LICENSE.md +187 -0
- package/README.md +439 -0
- package/build/config/config-cache.d.ts +120 -0
- package/build/config/config-cache.d.ts.map +1 -0
- package/build/config/config-cache.js +310 -0
- package/build/config/config-cache.js.map +1 -0
- package/build/config/env.d.ts +476 -0
- package/build/config/env.d.ts.map +1 -0
- package/build/config/env.js +441 -0
- package/build/config/env.js.map +1 -0
- package/build/config/extensions.d.ts +107 -0
- package/build/config/extensions.d.ts.map +1 -0
- package/build/config/extensions.js +152 -0
- package/build/config/extensions.js.map +1 -0
- package/build/config/file/index.d.ts +8 -0
- package/build/config/file/index.d.ts.map +1 -0
- package/build/config/file/index.js +10 -0
- package/build/config/file/index.js.map +1 -0
- package/build/config/file/loader.d.ts +31 -0
- package/build/config/file/loader.d.ts.map +1 -0
- package/build/config/file/loader.js +313 -0
- package/build/config/file/loader.js.map +1 -0
- package/build/config/file/schema.d.ts +583 -0
- package/build/config/file/schema.d.ts.map +1 -0
- package/build/config/file/schema.js +388 -0
- package/build/config/file/schema.js.map +1 -0
- package/build/config/index.d.ts +15 -0
- package/build/config/index.d.ts.map +1 -0
- package/build/config/index.js +27 -0
- package/build/config/index.js.map +1 -0
- package/build/config/startup-warnings.d.ts +46 -0
- package/build/config/startup-warnings.d.ts.map +1 -0
- package/build/config/startup-warnings.js +61 -0
- package/build/config/startup-warnings.js.map +1 -0
- package/build/connection/connection-state.d.ts +196 -0
- package/build/connection/connection-state.d.ts.map +1 -0
- package/build/connection/connection-state.js +426 -0
- package/build/connection/connection-state.js.map +1 -0
- package/build/connection/core/base.d.ts +43 -0
- package/build/connection/core/base.d.ts.map +1 -0
- package/build/connection/core/base.js +82 -0
- package/build/connection/core/base.js.map +1 -0
- package/build/connection/core/constants.d.ts +121 -0
- package/build/connection/core/constants.d.ts.map +1 -0
- package/build/connection/core/constants.js +151 -0
- package/build/connection/core/constants.js.map +1 -0
- package/build/connection/core/index.d.ts +13 -0
- package/build/connection/core/index.d.ts.map +1 -0
- package/build/connection/core/index.js +14 -0
- package/build/connection/core/index.js.map +1 -0
- package/build/connection/core/types.d.ts +102 -0
- package/build/connection/core/types.d.ts.map +1 -0
- package/build/connection/core/types.js +31 -0
- package/build/connection/core/types.js.map +1 -0
- package/build/connection/index.d.ts +19 -0
- package/build/connection/index.d.ts.map +1 -0
- package/build/connection/index.js +22 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/types.d.ts +125 -0
- package/build/connection/types.d.ts.map +1 -0
- package/build/connection/types.js +39 -0
- package/build/connection/types.js.map +1 -0
- package/build/errors/categories/auth.d.ts +59 -0
- package/build/errors/categories/auth.d.ts.map +1 -0
- package/build/errors/categories/auth.js +111 -0
- package/build/errors/categories/auth.js.map +1 -0
- package/build/errors/categories/connection.d.ts +70 -0
- package/build/errors/categories/connection.d.ts.map +1 -0
- package/build/errors/categories/connection.js +120 -0
- package/build/errors/categories/connection.js.map +1 -0
- package/build/errors/categories/index.d.ts +14 -0
- package/build/errors/categories/index.d.ts.map +1 -0
- package/build/errors/categories/index.js +20 -0
- package/build/errors/categories/index.js.map +1 -0
- package/build/errors/categories/operation.d.ts +83 -0
- package/build/errors/categories/operation.d.ts.map +1 -0
- package/build/errors/categories/operation.js +149 -0
- package/build/errors/categories/operation.js.map +1 -0
- package/build/errors/categories/protocol.d.ts +68 -0
- package/build/errors/categories/protocol.d.ts.map +1 -0
- package/build/errors/categories/protocol.js +135 -0
- package/build/errors/categories/protocol.js.map +1 -0
- package/build/errors/categories/session.d.ts +50 -0
- package/build/errors/categories/session.d.ts.map +1 -0
- package/build/errors/categories/session.js +97 -0
- package/build/errors/categories/session.js.map +1 -0
- package/build/errors/categories/system.d.ts +95 -0
- package/build/errors/categories/system.d.ts.map +1 -0
- package/build/errors/categories/system.js +190 -0
- package/build/errors/categories/system.js.map +1 -0
- package/build/errors/categories/transport.d.ts +70 -0
- package/build/errors/categories/transport.d.ts.map +1 -0
- package/build/errors/categories/transport.js +148 -0
- package/build/errors/categories/transport.js.map +1 -0
- package/build/errors/categories/validation.d.ts +140 -0
- package/build/errors/categories/validation.d.ts.map +1 -0
- package/build/errors/categories/validation.js +311 -0
- package/build/errors/categories/validation.js.map +1 -0
- package/build/errors/core/base.d.ts +103 -0
- package/build/errors/core/base.d.ts.map +1 -0
- package/build/errors/core/base.js +219 -0
- package/build/errors/core/base.js.map +1 -0
- package/build/errors/core/constants.d.ts +40 -0
- package/build/errors/core/constants.d.ts.map +1 -0
- package/build/errors/core/constants.js +49 -0
- package/build/errors/core/constants.js.map +1 -0
- package/build/errors/core/error-codes.d.ts +72 -0
- package/build/errors/core/error-codes.d.ts.map +1 -0
- package/build/errors/core/error-codes.js +88 -0
- package/build/errors/core/error-codes.js.map +1 -0
- package/build/errors/core/http.d.ts +69 -0
- package/build/errors/core/http.d.ts.map +1 -0
- package/build/errors/core/http.js +106 -0
- package/build/errors/core/http.js.map +1 -0
- package/build/errors/core/index.d.ts +23 -0
- package/build/errors/core/index.d.ts.map +1 -0
- package/build/errors/core/index.js +41 -0
- package/build/errors/core/index.js.map +1 -0
- package/build/errors/core/json-rpc.d.ts +69 -0
- package/build/errors/core/json-rpc.d.ts.map +1 -0
- package/build/errors/core/json-rpc.js +79 -0
- package/build/errors/core/json-rpc.js.map +1 -0
- package/build/errors/core/messages.d.ts +51 -0
- package/build/errors/core/messages.d.ts.map +1 -0
- package/build/errors/core/messages.js +59 -0
- package/build/errors/core/messages.js.map +1 -0
- package/build/errors/core/types.d.ts +80 -0
- package/build/errors/core/types.d.ts.map +1 -0
- package/build/errors/core/types.js +10 -0
- package/build/errors/core/types.js.map +1 -0
- package/build/errors/factory.d.ts +199 -0
- package/build/errors/factory.d.ts.map +1 -0
- package/build/errors/factory.js +244 -0
- package/build/errors/factory.js.map +1 -0
- package/build/errors/index.d.ts +35 -0
- package/build/errors/index.d.ts.map +1 -0
- package/build/errors/index.js +67 -0
- package/build/errors/index.js.map +1 -0
- package/build/index.d.ts +93 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +107 -0
- package/build/index.js.map +1 -0
- package/build/logger/core/constants.d.ts +143 -0
- package/build/logger/core/constants.d.ts.map +1 -0
- package/build/logger/core/constants.js +206 -0
- package/build/logger/core/constants.js.map +1 -0
- package/build/logger/core/context.d.ts +170 -0
- package/build/logger/core/context.d.ts.map +1 -0
- package/build/logger/core/context.js +237 -0
- package/build/logger/core/context.js.map +1 -0
- package/build/logger/core/errors.d.ts +101 -0
- package/build/logger/core/errors.d.ts.map +1 -0
- package/build/logger/core/errors.js +128 -0
- package/build/logger/core/errors.js.map +1 -0
- package/build/logger/core/format.d.ts +40 -0
- package/build/logger/core/format.d.ts.map +1 -0
- package/build/logger/core/format.js +47 -0
- package/build/logger/core/format.js.map +1 -0
- package/build/logger/core/index.d.ts +19 -0
- package/build/logger/core/index.d.ts.map +1 -0
- package/build/logger/core/index.js +47 -0
- package/build/logger/core/index.js.map +1 -0
- package/build/logger/core/trace-context.d.ts +51 -0
- package/build/logger/core/trace-context.d.ts.map +1 -0
- package/build/logger/core/trace-context.js +42 -0
- package/build/logger/core/trace-context.js.map +1 -0
- package/build/logger/core/types.d.ts +233 -0
- package/build/logger/core/types.d.ts.map +1 -0
- package/build/logger/core/types.js +10 -0
- package/build/logger/core/types.js.map +1 -0
- package/build/logger/factory.d.ts +150 -0
- package/build/logger/factory.d.ts.map +1 -0
- package/build/logger/factory.js +236 -0
- package/build/logger/factory.js.map +1 -0
- package/build/logger/formatters/index.d.ts +12 -0
- package/build/logger/formatters/index.d.ts.map +1 -0
- package/build/logger/formatters/index.js +15 -0
- package/build/logger/formatters/index.js.map +1 -0
- package/build/logger/formatters/json-formatter.d.ts +54 -0
- package/build/logger/formatters/json-formatter.d.ts.map +1 -0
- package/build/logger/formatters/json-formatter.js +80 -0
- package/build/logger/formatters/json-formatter.js.map +1 -0
- package/build/logger/formatters/schema.d.ts +230 -0
- package/build/logger/formatters/schema.d.ts.map +1 -0
- package/build/logger/formatters/schema.js +278 -0
- package/build/logger/formatters/schema.js.map +1 -0
- package/build/logger/formatters/text-formatter.d.ts +50 -0
- package/build/logger/formatters/text-formatter.d.ts.map +1 -0
- package/build/logger/formatters/text-formatter.js +93 -0
- package/build/logger/formatters/text-formatter.js.map +1 -0
- package/build/logger/index.d.ts +39 -0
- package/build/logger/index.d.ts.map +1 -0
- package/build/logger/index.js +43 -0
- package/build/logger/index.js.map +1 -0
- package/build/logger/logger.d.ts +278 -0
- package/build/logger/logger.d.ts.map +1 -0
- package/build/logger/logger.js +459 -0
- package/build/logger/logger.js.map +1 -0
- package/build/logger/mcp-logger.d.ts +177 -0
- package/build/logger/mcp-logger.d.ts.map +1 -0
- package/build/logger/mcp-logger.js +294 -0
- package/build/logger/mcp-logger.js.map +1 -0
- package/build/logger/scrubbing/index.d.ts +14 -0
- package/build/logger/scrubbing/index.d.ts.map +1 -0
- package/build/logger/scrubbing/index.js +16 -0
- package/build/logger/scrubbing/index.js.map +1 -0
- package/build/logger/scrubbing/injection-guard.d.ts +69 -0
- package/build/logger/scrubbing/injection-guard.d.ts.map +1 -0
- package/build/logger/scrubbing/injection-guard.js +102 -0
- package/build/logger/scrubbing/injection-guard.js.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts +72 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.js +177 -0
- package/build/logger/scrubbing/secret-scrubber.js.map +1 -0
- package/build/logger/writers/base-writer.d.ts +45 -0
- package/build/logger/writers/base-writer.d.ts.map +1 -0
- package/build/logger/writers/base-writer.js +41 -0
- package/build/logger/writers/base-writer.js.map +1 -0
- package/build/logger/writers/composite-writer.d.ts +83 -0
- package/build/logger/writers/composite-writer.d.ts.map +1 -0
- package/build/logger/writers/composite-writer.js +121 -0
- package/build/logger/writers/composite-writer.js.map +1 -0
- package/build/logger/writers/console-writer.d.ts +59 -0
- package/build/logger/writers/console-writer.d.ts.map +1 -0
- package/build/logger/writers/console-writer.js +73 -0
- package/build/logger/writers/console-writer.js.map +1 -0
- package/build/logger/writers/file-writer.d.ts +160 -0
- package/build/logger/writers/file-writer.d.ts.map +1 -0
- package/build/logger/writers/file-writer.js +345 -0
- package/build/logger/writers/file-writer.js.map +1 -0
- package/build/logger/writers/index.d.ts +15 -0
- package/build/logger/writers/index.d.ts.map +1 -0
- package/build/logger/writers/index.js +19 -0
- package/build/logger/writers/index.js.map +1 -0
- package/build/mcp/capabilities/apps/define-app.d.ts +68 -0
- package/build/mcp/capabilities/apps/define-app.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/define-app.js +127 -0
- package/build/mcp/capabilities/apps/define-app.js.map +1 -0
- package/build/mcp/capabilities/apps/index.d.ts +10 -0
- package/build/mcp/capabilities/apps/index.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/index.js +10 -0
- package/build/mcp/capabilities/apps/index.js.map +1 -0
- package/build/mcp/capabilities/capabilities.d.ts +24 -0
- package/build/mcp/capabilities/capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/capabilities.js +50 -0
- package/build/mcp/capabilities/capabilities.js.map +1 -0
- package/build/mcp/capabilities/index.d.ts +17 -0
- package/build/mcp/capabilities/index.d.ts.map +1 -0
- package/build/mcp/capabilities/index.js +20 -0
- package/build/mcp/capabilities/index.js.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts +95 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.js +109 -0
- package/build/mcp/capabilities/prompts/define-prompt.js.map +1 -0
- package/build/mcp/capabilities/prompts/index.d.ts +10 -0
- package/build/mcp/capabilities/prompts/index.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/index.js +10 -0
- package/build/mcp/capabilities/prompts/index.js.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts +95 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.js +149 -0
- package/build/mcp/capabilities/registry/base-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/index.d.ts +16 -0
- package/build/mcp/capabilities/registry/index.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/index.js +34 -0
- package/build/mcp/capabilities/registry/index.js.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts +116 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.js +232 -0
- package/build/mcp/capabilities/registry/prompt-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/reset.d.ts +30 -0
- package/build/mcp/capabilities/registry/reset.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/reset.js +48 -0
- package/build/mcp/capabilities/registry/reset.js.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts +152 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.js +430 -0
- package/build/mcp/capabilities/registry/resource-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts +48 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js +62 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts +96 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js +190 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts +100 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.js +242 -0
- package/build/mcp/capabilities/registry/tool-registry.js.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts +103 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.js +137 -0
- package/build/mcp/capabilities/resources/define-resource.js.map +1 -0
- package/build/mcp/capabilities/resources/index.d.ts +10 -0
- package/build/mcp/capabilities/resources/index.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/index.js +10 -0
- package/build/mcp/capabilities/resources/index.js.map +1 -0
- package/build/mcp/capabilities/server-capabilities.d.ts +33 -0
- package/build/mcp/capabilities/server-capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/server-capabilities.js +16 -0
- package/build/mcp/capabilities/server-capabilities.js.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts +75 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.js +93 -0
- package/build/mcp/capabilities/tasks/define-task.js.map +1 -0
- package/build/mcp/capabilities/tasks/index.d.ts +11 -0
- package/build/mcp/capabilities/tasks/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/index.js +11 -0
- package/build/mcp/capabilities/tasks/index.js.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts +62 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.js +73 -0
- package/build/mcp/capabilities/tools/define-tool.js.map +1 -0
- package/build/mcp/capabilities/tools/index.d.ts +10 -0
- package/build/mcp/capabilities/tools/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/index.js +10 -0
- package/build/mcp/capabilities/tools/index.js.map +1 -0
- package/build/mcp/handlers/index.d.ts +19 -0
- package/build/mcp/handlers/index.d.ts.map +1 -0
- package/build/mcp/handlers/index.js +26 -0
- package/build/mcp/handlers/index.js.map +1 -0
- package/build/mcp/handlers/ping.d.ts +27 -0
- package/build/mcp/handlers/ping.d.ts.map +1 -0
- package/build/mcp/handlers/ping.js +61 -0
- package/build/mcp/handlers/ping.js.map +1 -0
- package/build/mcp/handlers/progress.d.ts +41 -0
- package/build/mcp/handlers/progress.d.ts.map +1 -0
- package/build/mcp/handlers/progress.js +79 -0
- package/build/mcp/handlers/progress.js.map +1 -0
- package/build/mcp/index.d.ts +28 -0
- package/build/mcp/index.d.ts.map +1 -0
- package/build/mcp/index.js +34 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/responses/helpers.d.ts +146 -0
- package/build/mcp/responses/helpers.d.ts.map +1 -0
- package/build/mcp/responses/helpers.js +197 -0
- package/build/mcp/responses/helpers.js.map +1 -0
- package/build/mcp/responses/index.d.ts +9 -0
- package/build/mcp/responses/index.d.ts.map +1 -0
- package/build/mcp/responses/index.js +12 -0
- package/build/mcp/responses/index.js.map +1 -0
- package/build/mcp/types/context.d.ts +371 -0
- package/build/mcp/types/context.d.ts.map +1 -0
- package/build/mcp/types/context.js +17 -0
- package/build/mcp/types/context.js.map +1 -0
- package/build/mcp/types/definition.d.ts +727 -0
- package/build/mcp/types/definition.d.ts.map +1 -0
- package/build/mcp/types/definition.js +29 -0
- package/build/mcp/types/definition.js.map +1 -0
- package/build/mcp/types/handler.d.ts +58 -0
- package/build/mcp/types/handler.d.ts.map +1 -0
- package/build/mcp/types/handler.js +10 -0
- package/build/mcp/types/handler.js.map +1 -0
- package/build/mcp/types/index.d.ts +21 -0
- package/build/mcp/types/index.d.ts.map +1 -0
- package/build/mcp/types/index.js +18 -0
- package/build/mcp/types/index.js.map +1 -0
- package/build/mcp/types/response.d.ts +79 -0
- package/build/mcp/types/response.d.ts.map +1 -0
- package/build/mcp/types/response.js +10 -0
- package/build/mcp/types/response.js.map +1 -0
- package/build/server/auth/auth-context.d.ts +52 -0
- package/build/server/auth/auth-context.d.ts.map +1 -0
- package/build/server/auth/auth-context.js +45 -0
- package/build/server/auth/auth-context.js.map +1 -0
- package/build/server/auth/guards.d.ts +72 -0
- package/build/server/auth/guards.d.ts.map +1 -0
- package/build/server/auth/guards.js +103 -0
- package/build/server/auth/guards.js.map +1 -0
- package/build/server/auth/index.d.ts +21 -0
- package/build/server/auth/index.d.ts.map +1 -0
- package/build/server/auth/index.js +20 -0
- package/build/server/auth/index.js.map +1 -0
- package/build/server/auth/oidc-discovery.d.ts +68 -0
- package/build/server/auth/oidc-discovery.d.ts.map +1 -0
- package/build/server/auth/oidc-discovery.js +234 -0
- package/build/server/auth/oidc-discovery.js.map +1 -0
- package/build/server/auth/oidc-provider.d.ts +96 -0
- package/build/server/auth/oidc-provider.d.ts.map +1 -0
- package/build/server/auth/oidc-provider.js +126 -0
- package/build/server/auth/oidc-provider.js.map +1 -0
- package/build/server/auth/types.d.ts +204 -0
- package/build/server/auth/types.d.ts.map +1 -0
- package/build/server/auth/types.js +29 -0
- package/build/server/auth/types.js.map +1 -0
- package/build/server/auth/upstream-provider.d.ts +161 -0
- package/build/server/auth/upstream-provider.d.ts.map +1 -0
- package/build/server/auth/upstream-provider.js +411 -0
- package/build/server/auth/upstream-provider.js.map +1 -0
- package/build/server/builder/constants.d.ts +45 -0
- package/build/server/builder/constants.d.ts.map +1 -0
- package/build/server/builder/constants.js +54 -0
- package/build/server/builder/constants.js.map +1 -0
- package/build/server/builder/index.d.ts +24 -0
- package/build/server/builder/index.d.ts.map +1 -0
- package/build/server/builder/index.js +25 -0
- package/build/server/builder/index.js.map +1 -0
- package/build/server/builder/primitive-collector.d.ts +24 -0
- package/build/server/builder/primitive-collector.d.ts.map +1 -0
- package/build/server/builder/primitive-collector.js +89 -0
- package/build/server/builder/primitive-collector.js.map +1 -0
- package/build/server/builder/server-builder.d.ts +53 -0
- package/build/server/builder/server-builder.d.ts.map +1 -0
- package/build/server/builder/server-builder.js +132 -0
- package/build/server/builder/server-builder.js.map +1 -0
- package/build/server/builder/types.d.ts +93 -0
- package/build/server/builder/types.d.ts.map +1 -0
- package/build/server/builder/types.js +25 -0
- package/build/server/builder/types.js.map +1 -0
- package/build/server/builder/validation.d.ts +36 -0
- package/build/server/builder/validation.d.ts.map +1 -0
- package/build/server/builder/validation.js +44 -0
- package/build/server/builder/validation.js.map +1 -0
- package/build/server/create-server.d.ts +57 -0
- package/build/server/create-server.d.ts.map +1 -0
- package/build/server/create-server.js +104 -0
- package/build/server/create-server.js.map +1 -0
- package/build/server/http/express-app.d.ts +103 -0
- package/build/server/http/express-app.d.ts.map +1 -0
- package/build/server/http/express-app.js +391 -0
- package/build/server/http/express-app.js.map +1 -0
- package/build/server/http/http-server.d.ts +67 -0
- package/build/server/http/http-server.d.ts.map +1 -0
- package/build/server/http/http-server.js +188 -0
- package/build/server/http/http-server.js.map +1 -0
- package/build/server/http/http-transport.d.ts +33 -0
- package/build/server/http/http-transport.d.ts.map +1 -0
- package/build/server/http/http-transport.js +84 -0
- package/build/server/http/http-transport.js.map +1 -0
- package/build/server/http/index.d.ts +15 -0
- package/build/server/http/index.d.ts.map +1 -0
- package/build/server/http/index.js +11 -0
- package/build/server/http/index.js.map +1 -0
- package/build/server/index.d.ts +25 -0
- package/build/server/index.d.ts.map +1 -0
- package/build/server/index.js +41 -0
- package/build/server/index.js.map +1 -0
- package/build/server/lifecycle.d.ts +114 -0
- package/build/server/lifecycle.d.ts.map +1 -0
- package/build/server/lifecycle.js +30 -0
- package/build/server/lifecycle.js.map +1 -0
- package/build/server/middleware/bearer-auth.d.ts +43 -0
- package/build/server/middleware/bearer-auth.d.ts.map +1 -0
- package/build/server/middleware/bearer-auth.js +75 -0
- package/build/server/middleware/bearer-auth.js.map +1 -0
- package/build/server/middleware/custom-header-auth.d.ts +40 -0
- package/build/server/middleware/custom-header-auth.d.ts.map +1 -0
- package/build/server/middleware/custom-header-auth.js +90 -0
- package/build/server/middleware/custom-header-auth.js.map +1 -0
- package/build/server/middleware/dns-rebinding.d.ts +25 -0
- package/build/server/middleware/dns-rebinding.d.ts.map +1 -0
- package/build/server/middleware/dns-rebinding.js +94 -0
- package/build/server/middleware/dns-rebinding.js.map +1 -0
- package/build/server/middleware/index.d.ts +69 -0
- package/build/server/middleware/index.d.ts.map +1 -0
- package/build/server/middleware/index.js +68 -0
- package/build/server/middleware/index.js.map +1 -0
- package/build/server/middleware/logging.d.ts +21 -0
- package/build/server/middleware/logging.d.ts.map +1 -0
- package/build/server/middleware/logging.js +36 -0
- package/build/server/middleware/logging.js.map +1 -0
- package/build/server/middleware/oauth-router.d.ts +50 -0
- package/build/server/middleware/oauth-router.d.ts.map +1 -0
- package/build/server/middleware/oauth-router.js +53 -0
- package/build/server/middleware/oauth-router.js.map +1 -0
- package/build/server/middleware/protocol-version.d.ts +13 -0
- package/build/server/middleware/protocol-version.d.ts.map +1 -0
- package/build/server/middleware/protocol-version.js +48 -0
- package/build/server/middleware/protocol-version.js.map +1 -0
- package/build/server/middleware/rate-limit.d.ts +47 -0
- package/build/server/middleware/rate-limit.d.ts.map +1 -0
- package/build/server/middleware/rate-limit.js +109 -0
- package/build/server/middleware/rate-limit.js.map +1 -0
- package/build/server/middleware/trust-proxy.d.ts +37 -0
- package/build/server/middleware/trust-proxy.d.ts.map +1 -0
- package/build/server/middleware/trust-proxy.js +154 -0
- package/build/server/middleware/trust-proxy.js.map +1 -0
- package/build/server/option-overrides.d.ts +25 -0
- package/build/server/option-overrides.d.ts.map +1 -0
- package/build/server/option-overrides.js +85 -0
- package/build/server/option-overrides.js.map +1 -0
- package/build/server/routes/health.d.ts +87 -0
- package/build/server/routes/health.d.ts.map +1 -0
- package/build/server/routes/health.js +183 -0
- package/build/server/routes/health.js.map +1 -0
- package/build/server/routes/index.d.ts +16 -0
- package/build/server/routes/index.d.ts.map +1 -0
- package/build/server/routes/index.js +18 -0
- package/build/server/routes/index.js.map +1 -0
- package/build/server/routes/metrics.d.ts +40 -0
- package/build/server/routes/metrics.d.ts.map +1 -0
- package/build/server/routes/metrics.js +81 -0
- package/build/server/routes/metrics.js.map +1 -0
- package/build/server/routes/oauth-router.d.ts +50 -0
- package/build/server/routes/oauth-router.d.ts.map +1 -0
- package/build/server/routes/oauth-router.js +53 -0
- package/build/server/routes/oauth-router.js.map +1 -0
- package/build/server/routes/readiness-status.d.ts +25 -0
- package/build/server/routes/readiness-status.d.ts.map +1 -0
- package/build/server/routes/readiness-status.js +27 -0
- package/build/server/routes/readiness-status.js.map +1 -0
- package/build/server/routes/sse-router.d.ts +43 -0
- package/build/server/routes/sse-router.d.ts.map +1 -0
- package/build/server/routes/sse-router.js +92 -0
- package/build/server/routes/sse-router.js.map +1 -0
- package/build/server/routes/streamable-http-router.d.ts +36 -0
- package/build/server/routes/streamable-http-router.d.ts.map +1 -0
- package/build/server/routes/streamable-http-router.js +59 -0
- package/build/server/routes/streamable-http-router.js.map +1 -0
- package/build/server/server-instance.d.ts +185 -0
- package/build/server/server-instance.d.ts.map +1 -0
- package/build/server/server-instance.js +615 -0
- package/build/server/server-instance.js.map +1 -0
- package/build/server/server-options.d.ts +411 -0
- package/build/server/server-options.d.ts.map +1 -0
- package/build/server/server-options.js +17 -0
- package/build/server/server-options.js.map +1 -0
- package/build/server/session/in-memory-store.d.ts +128 -0
- package/build/server/session/in-memory-store.d.ts.map +1 -0
- package/build/server/session/in-memory-store.js +312 -0
- package/build/server/session/in-memory-store.js.map +1 -0
- package/build/server/session/index.d.ts +43 -0
- package/build/server/session/index.d.ts.map +1 -0
- package/build/server/session/index.js +47 -0
- package/build/server/session/index.js.map +1 -0
- package/build/server/session/mcp-session.d.ts +210 -0
- package/build/server/session/mcp-session.d.ts.map +1 -0
- package/build/server/session/mcp-session.js +428 -0
- package/build/server/session/mcp-session.js.map +1 -0
- package/build/server/session/session-factory.d.ts +119 -0
- package/build/server/session/session-factory.d.ts.map +1 -0
- package/build/server/session/session-factory.js +131 -0
- package/build/server/session/session-factory.js.map +1 -0
- package/build/server/session/session-housekeeper.d.ts +100 -0
- package/build/server/session/session-housekeeper.d.ts.map +1 -0
- package/build/server/session/session-housekeeper.js +217 -0
- package/build/server/session/session-housekeeper.js.map +1 -0
- package/build/server/session/session-manager.d.ts +227 -0
- package/build/server/session/session-manager.d.ts.map +1 -0
- package/build/server/session/session-manager.js +282 -0
- package/build/server/session/session-manager.js.map +1 -0
- package/build/server/session/session-store.d.ts +95 -0
- package/build/server/session/session-store.d.ts.map +1 -0
- package/build/server/session/session-store.js +13 -0
- package/build/server/session/session-store.js.map +1 -0
- package/build/server/session/session.d.ts +132 -0
- package/build/server/session/session.d.ts.map +1 -0
- package/build/server/session/session.js +61 -0
- package/build/server/session/session.js.map +1 -0
- package/build/server/transport/constants.d.ts +85 -0
- package/build/server/transport/constants.d.ts.map +1 -0
- package/build/server/transport/constants.js +103 -0
- package/build/server/transport/constants.js.map +1 -0
- package/build/server/transport/index.d.ts +21 -0
- package/build/server/transport/index.d.ts.map +1 -0
- package/build/server/transport/index.js +28 -0
- package/build/server/transport/index.js.map +1 -0
- package/build/server/transport/sse/handler.d.ts +46 -0
- package/build/server/transport/sse/handler.d.ts.map +1 -0
- package/build/server/transport/sse/handler.js +189 -0
- package/build/server/transport/sse/handler.js.map +1 -0
- package/build/server/transport/sse/index.d.ts +15 -0
- package/build/server/transport/sse/index.d.ts.map +1 -0
- package/build/server/transport/sse/index.js +14 -0
- package/build/server/transport/sse/index.js.map +1 -0
- package/build/server/transport/sse/transport.d.ts +94 -0
- package/build/server/transport/sse/transport.d.ts.map +1 -0
- package/build/server/transport/sse/transport.js +175 -0
- package/build/server/transport/sse/transport.js.map +1 -0
- package/build/server/transport/stdio-transport.d.ts +23 -0
- package/build/server/transport/stdio-transport.d.ts.map +1 -0
- package/build/server/transport/stdio-transport.js +59 -0
- package/build/server/transport/stdio-transport.js.map +1 -0
- package/build/server/transport/streamable-http/index.d.ts +9 -0
- package/build/server/transport/streamable-http/index.d.ts.map +1 -0
- package/build/server/transport/streamable-http/index.js +9 -0
- package/build/server/transport/streamable-http/index.js.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts +41 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.js +264 -0
- package/build/server/transport/streamable-http/stateful-handler.js.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts +28 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.js +81 -0
- package/build/server/transport/streamable-http/stateless-handler.js.map +1 -0
- package/build/server/transport/streamable-http/transport.d.ts +110 -0
- package/build/server/transport/streamable-http/transport.d.ts.map +1 -0
- package/build/server/transport/streamable-http/transport.js +118 -0
- package/build/server/transport/streamable-http/transport.js.map +1 -0
- package/build/server/transport/transport-context.d.ts +67 -0
- package/build/server/transport/transport-context.d.ts.map +1 -0
- package/build/server/transport/transport-context.js +38 -0
- package/build/server/transport/transport-context.js.map +1 -0
- package/build/server/transport/types.d.ts +56 -0
- package/build/server/transport/types.d.ts.map +1 -0
- package/build/server/transport/types.js +11 -0
- package/build/server/transport/types.js.map +1 -0
- package/build/server/transport-options.d.ts +248 -0
- package/build/server/transport-options.d.ts.map +1 -0
- package/build/server/transport-options.js +18 -0
- package/build/server/transport-options.js.map +1 -0
- package/build/server/types.d.ts +172 -0
- package/build/server/types.d.ts.map +1 -0
- package/build/server/types.js +9 -0
- package/build/server/types.js.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts +30 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.js +54 -0
- package/build/telemetry/connection-telemetry-bridge.js.map +1 -0
- package/build/telemetry/core/config.d.ts +38 -0
- package/build/telemetry/core/config.d.ts.map +1 -0
- package/build/telemetry/core/config.js +54 -0
- package/build/telemetry/core/config.js.map +1 -0
- package/build/telemetry/core/constants.d.ts +183 -0
- package/build/telemetry/core/constants.d.ts.map +1 -0
- package/build/telemetry/core/constants.js +207 -0
- package/build/telemetry/core/constants.js.map +1 -0
- package/build/telemetry/core/diag-logger.d.ts +35 -0
- package/build/telemetry/core/diag-logger.d.ts.map +1 -0
- package/build/telemetry/core/diag-logger.js +54 -0
- package/build/telemetry/core/diag-logger.js.map +1 -0
- package/build/telemetry/core/index.d.ts +12 -0
- package/build/telemetry/core/index.d.ts.map +1 -0
- package/build/telemetry/core/index.js +32 -0
- package/build/telemetry/core/index.js.map +1 -0
- package/build/telemetry/core/types.d.ts +106 -0
- package/build/telemetry/core/types.d.ts.map +1 -0
- package/build/telemetry/core/types.js +10 -0
- package/build/telemetry/core/types.js.map +1 -0
- package/build/telemetry/index.d.ts +59 -0
- package/build/telemetry/index.d.ts.map +1 -0
- package/build/telemetry/index.js +79 -0
- package/build/telemetry/index.js.map +1 -0
- package/build/telemetry/metrics.d.ts +127 -0
- package/build/telemetry/metrics.d.ts.map +1 -0
- package/build/telemetry/metrics.js +337 -0
- package/build/telemetry/metrics.js.map +1 -0
- package/build/telemetry/sdk.d.ts +110 -0
- package/build/telemetry/sdk.d.ts.map +1 -0
- package/build/telemetry/sdk.js +547 -0
- package/build/telemetry/sdk.js.map +1 -0
- package/build/telemetry/tracing.d.ts +78 -0
- package/build/telemetry/tracing.d.ts.map +1 -0
- package/build/telemetry/tracing.js +257 -0
- package/build/telemetry/tracing.js.map +1 -0
- package/build/utils/env-helpers.d.ts +46 -0
- package/build/utils/env-helpers.d.ts.map +1 -0
- package/build/utils/env-helpers.js +54 -0
- package/build/utils/env-helpers.js.map +1 -0
- package/build/utils/index.d.ts +14 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +19 -0
- package/build/utils/index.js.map +1 -0
- package/build/utils/sensitive-keys.d.ts +48 -0
- package/build/utils/sensitive-keys.d.ts.map +1 -0
- package/build/utils/sensitive-keys.js +131 -0
- package/build/utils/sensitive-keys.js.map +1 -0
- package/build/utils/string-helpers.d.ts +126 -0
- package/build/utils/string-helpers.d.ts.map +1 -0
- package/build/utils/string-helpers.js +189 -0
- package/build/utils/string-helpers.js.map +1 -0
- package/build/utils/validation.d.ts +84 -0
- package/build/utils/validation.d.ts.map +1 -0
- package/build/utils/validation.js +111 -0
- package/build/utils/validation.js.map +1 -0
- package/build/utils/zod-helpers.d.ts +92 -0
- package/build/utils/zod-helpers.d.ts.map +1 -0
- package/build/utils/zod-helpers.js +120 -0
- package/build/utils/zod-helpers.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Helpers
|
|
3
|
+
*
|
|
4
|
+
* Generic string manipulation utilities used across the framework.
|
|
5
|
+
*
|
|
6
|
+
* @module utils/string-helpers
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Split a comma-separated string into trimmed, non-empty segments.
|
|
10
|
+
*
|
|
11
|
+
* Used by Zod schema helpers and config file mappers to provide
|
|
12
|
+
* a single source of truth for CSV-style string parsing.
|
|
13
|
+
*
|
|
14
|
+
* @param value - Raw comma-separated string (e.g., `"a, b, c"`)
|
|
15
|
+
* @param options - Parsing options
|
|
16
|
+
* @param options.lowercase - Lowercase all segments (default: false)
|
|
17
|
+
* @returns Array of trimmed, non-empty strings
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* splitCommaSeparated('a, b, c'); // ['a', 'b', 'c']
|
|
22
|
+
* splitCommaSeparated('A, B', { lowercase: true }); // ['a', 'b']
|
|
23
|
+
* splitCommaSeparated(''); // []
|
|
24
|
+
* splitCommaSeparated(' , , '); // []
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function splitCommaSeparated(value: string, options?: {
|
|
28
|
+
lowercase?: boolean;
|
|
29
|
+
}): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Interpolation parameters type.
|
|
32
|
+
* Maps template variable names to their values.
|
|
33
|
+
*/
|
|
34
|
+
export type MessageParams = Record<string, string | number | boolean | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Interpolate a template string with parameters.
|
|
37
|
+
*
|
|
38
|
+
* Replaces `{variableName}` placeholders with values from the params object.
|
|
39
|
+
* Unmatched placeholders are preserved as-is.
|
|
40
|
+
*
|
|
41
|
+
* @param template - The template string with `{variable}` placeholders
|
|
42
|
+
* @param params - The parameters to interpolate
|
|
43
|
+
* @returns The interpolated string
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* interpolate("Hello {name}!", { name: "World" })
|
|
48
|
+
* // "Hello World!"
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function interpolate(template: string, params: MessageParams): string;
|
|
52
|
+
/**
|
|
53
|
+
* Truncate an ID string (session, request, trace) for display purposes.
|
|
54
|
+
*
|
|
55
|
+
* Keeps logs readable while providing enough uniqueness for debugging.
|
|
56
|
+
* Also avoids exposing full tokens in log output.
|
|
57
|
+
*
|
|
58
|
+
* @param id - The full ID string
|
|
59
|
+
* @param length - Number of characters to keep (default: 8)
|
|
60
|
+
* @returns Truncated ID
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* truncateId('a1b2c3d4-e5f6-7890-abcd-ef1234567890')
|
|
65
|
+
* // Returns: 'a1b2c3d4'
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function truncateId(id: string, length?: number): string;
|
|
69
|
+
/**
|
|
70
|
+
* Regex pattern for human-readable byte sizes.
|
|
71
|
+
*
|
|
72
|
+
* Matches formats like `"10mb"`, `"1.5gb"`, `"500kb"`, or plain byte
|
|
73
|
+
* counts like `"1048576"`. Case-insensitive, optional whitespace
|
|
74
|
+
* between number and unit.
|
|
75
|
+
*
|
|
76
|
+
* Shared with Zod schemas (`MCP_BODY_SIZE_LIMIT`, `LOG_MAX_FILE_SIZE`)
|
|
77
|
+
* to ensure consistent validation across env vars and config files.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* BYTE_SIZE_REGEX.test('10mb'); // true
|
|
82
|
+
* BYTE_SIZE_REGEX.test('1.5 gb'); // true
|
|
83
|
+
* BYTE_SIZE_REGEX.test('1048576'); // true (plain bytes)
|
|
84
|
+
* BYTE_SIZE_REGEX.test('abc'); // false
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare const BYTE_SIZE_REGEX: RegExp;
|
|
88
|
+
/**
|
|
89
|
+
* Parse a human-readable byte size string into a number of bytes.
|
|
90
|
+
*
|
|
91
|
+
* Accepts formats like `"10mb"`, `"1.5gb"`, `"500kb"`, or plain numeric
|
|
92
|
+
* strings like `"1048576"` (interpreted as bytes). Uses binary units
|
|
93
|
+
* (1 KB = 1024 bytes, 1 MB = 1048576 bytes, etc.).
|
|
94
|
+
*
|
|
95
|
+
* The supported units match the `MCP_BODY_SIZE_LIMIT` regex pattern
|
|
96
|
+
* used throughout the framework: `kb`, `mb`, `gb`, `tb`, `pb`.
|
|
97
|
+
*
|
|
98
|
+
* @param value - Human-readable size string (e.g. `"10mb"`, `"1048576"`)
|
|
99
|
+
* @returns Number of bytes (floored to integer)
|
|
100
|
+
* @throws {Error} If the format is invalid
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* parseByteSize('10mb'); // 10485760
|
|
105
|
+
* parseByteSize('500kb'); // 512000
|
|
106
|
+
* parseByteSize('1.5gb'); // 1610612736
|
|
107
|
+
* parseByteSize('1048576'); // 1048576 (plain bytes)
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function parseByteSize(value: string): number;
|
|
111
|
+
/**
|
|
112
|
+
* Check if a host string is a localhost/loopback address.
|
|
113
|
+
*
|
|
114
|
+
* @param host - The host string to check (e.g., 'localhost:3000', '192.168.1.1')
|
|
115
|
+
* @returns true if the host is a local loopback address
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* isLocalHost('localhost:3000'); // true
|
|
120
|
+
* isLocalHost('127.0.0.1'); // true
|
|
121
|
+
* isLocalHost('[::1]:8080'); // true
|
|
122
|
+
* isLocalHost('192.168.1.1'); // false
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function isLocalHost(host: string): boolean;
|
|
126
|
+
//# sourceMappingURL=string-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/string-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,EAAE,CAMlG;AAYD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAS3E;AASD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAA4B,GAAG,MAAM,CAEjF;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,QAAuC,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBnD;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjD"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Helpers
|
|
3
|
+
*
|
|
4
|
+
* Generic string manipulation utilities used across the framework.
|
|
5
|
+
*
|
|
6
|
+
* @module utils/string-helpers
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Comma-Separated Parsing
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Split a comma-separated string into trimmed, non-empty segments.
|
|
13
|
+
*
|
|
14
|
+
* Used by Zod schema helpers and config file mappers to provide
|
|
15
|
+
* a single source of truth for CSV-style string parsing.
|
|
16
|
+
*
|
|
17
|
+
* @param value - Raw comma-separated string (e.g., `"a, b, c"`)
|
|
18
|
+
* @param options - Parsing options
|
|
19
|
+
* @param options.lowercase - Lowercase all segments (default: false)
|
|
20
|
+
* @returns Array of trimmed, non-empty strings
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* splitCommaSeparated('a, b, c'); // ['a', 'b', 'c']
|
|
25
|
+
* splitCommaSeparated('A, B', { lowercase: true }); // ['a', 'b']
|
|
26
|
+
* splitCommaSeparated(''); // []
|
|
27
|
+
* splitCommaSeparated(' , , '); // []
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function splitCommaSeparated(value, options = {}) {
|
|
31
|
+
const items = value
|
|
32
|
+
.split(",")
|
|
33
|
+
.map((s) => s.trim())
|
|
34
|
+
.filter((s) => s.length > 0);
|
|
35
|
+
return options.lowercase ? items.map((s) => s.toLowerCase()) : items;
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Template Interpolation
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* Cached regex for template interpolation.
|
|
42
|
+
* Pattern matches `{variableName}` placeholders.
|
|
43
|
+
*/
|
|
44
|
+
const INTERPOLATION_REGEX = /\{(\w+)\}/g;
|
|
45
|
+
/**
|
|
46
|
+
* Interpolate a template string with parameters.
|
|
47
|
+
*
|
|
48
|
+
* Replaces `{variableName}` placeholders with values from the params object.
|
|
49
|
+
* Unmatched placeholders are preserved as-is.
|
|
50
|
+
*
|
|
51
|
+
* @param template - The template string with `{variable}` placeholders
|
|
52
|
+
* @param params - The parameters to interpolate
|
|
53
|
+
* @returns The interpolated string
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* interpolate("Hello {name}!", { name: "World" })
|
|
58
|
+
* // "Hello World!"
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export function interpolate(template, params) {
|
|
62
|
+
INTERPOLATION_REGEX.lastIndex = 0;
|
|
63
|
+
return template.replace(INTERPOLATION_REGEX, (match, key) => {
|
|
64
|
+
const value = params[key];
|
|
65
|
+
if (value === undefined) {
|
|
66
|
+
return match;
|
|
67
|
+
}
|
|
68
|
+
return String(value);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// ID Truncation
|
|
73
|
+
// ============================================================================
|
|
74
|
+
/** Default display length for truncated IDs. */
|
|
75
|
+
const DEFAULT_ID_DISPLAY_LENGTH = 8;
|
|
76
|
+
/**
|
|
77
|
+
* Truncate an ID string (session, request, trace) for display purposes.
|
|
78
|
+
*
|
|
79
|
+
* Keeps logs readable while providing enough uniqueness for debugging.
|
|
80
|
+
* Also avoids exposing full tokens in log output.
|
|
81
|
+
*
|
|
82
|
+
* @param id - The full ID string
|
|
83
|
+
* @param length - Number of characters to keep (default: 8)
|
|
84
|
+
* @returns Truncated ID
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* truncateId('a1b2c3d4-e5f6-7890-abcd-ef1234567890')
|
|
89
|
+
* // Returns: 'a1b2c3d4'
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export function truncateId(id, length = DEFAULT_ID_DISPLAY_LENGTH) {
|
|
93
|
+
return id.substring(0, length);
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Byte Size Parsing
|
|
97
|
+
// ============================================================================
|
|
98
|
+
/**
|
|
99
|
+
* Regex pattern for human-readable byte sizes.
|
|
100
|
+
*
|
|
101
|
+
* Matches formats like `"10mb"`, `"1.5gb"`, `"500kb"`, or plain byte
|
|
102
|
+
* counts like `"1048576"`. Case-insensitive, optional whitespace
|
|
103
|
+
* between number and unit.
|
|
104
|
+
*
|
|
105
|
+
* Shared with Zod schemas (`MCP_BODY_SIZE_LIMIT`, `LOG_MAX_FILE_SIZE`)
|
|
106
|
+
* to ensure consistent validation across env vars and config files.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* BYTE_SIZE_REGEX.test('10mb'); // true
|
|
111
|
+
* BYTE_SIZE_REGEX.test('1.5 gb'); // true
|
|
112
|
+
* BYTE_SIZE_REGEX.test('1048576'); // true (plain bytes)
|
|
113
|
+
* BYTE_SIZE_REGEX.test('abc'); // false
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export const BYTE_SIZE_REGEX = /^\d+(\.\d+)?\s*(kb|mb|gb|tb|pb)?$/i;
|
|
117
|
+
/**
|
|
118
|
+
* Binary unit multipliers (1 KB = 1024 bytes).
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
const BYTE_MULTIPLIERS = {
|
|
122
|
+
kb: 1024,
|
|
123
|
+
mb: 1024 ** 2,
|
|
124
|
+
gb: 1024 ** 3,
|
|
125
|
+
tb: 1024 ** 4,
|
|
126
|
+
pb: 1024 ** 5,
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Parse a human-readable byte size string into a number of bytes.
|
|
130
|
+
*
|
|
131
|
+
* Accepts formats like `"10mb"`, `"1.5gb"`, `"500kb"`, or plain numeric
|
|
132
|
+
* strings like `"1048576"` (interpreted as bytes). Uses binary units
|
|
133
|
+
* (1 KB = 1024 bytes, 1 MB = 1048576 bytes, etc.).
|
|
134
|
+
*
|
|
135
|
+
* The supported units match the `MCP_BODY_SIZE_LIMIT` regex pattern
|
|
136
|
+
* used throughout the framework: `kb`, `mb`, `gb`, `tb`, `pb`.
|
|
137
|
+
*
|
|
138
|
+
* @param value - Human-readable size string (e.g. `"10mb"`, `"1048576"`)
|
|
139
|
+
* @returns Number of bytes (floored to integer)
|
|
140
|
+
* @throws {Error} If the format is invalid
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* parseByteSize('10mb'); // 10485760
|
|
145
|
+
* parseByteSize('500kb'); // 512000
|
|
146
|
+
* parseByteSize('1.5gb'); // 1610612736
|
|
147
|
+
* parseByteSize('1048576'); // 1048576 (plain bytes)
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export function parseByteSize(value) {
|
|
151
|
+
const trimmed = value.trim();
|
|
152
|
+
const match = trimmed.match(/^(\d+(?:\.\d+)?)\s*(kb|mb|gb|tb|pb)?$/i);
|
|
153
|
+
if (!match) {
|
|
154
|
+
throw new Error(`Invalid byte size format: "${value}". Use formats like "10mb", "500kb", "2gb", or a plain byte count like "1048576".`);
|
|
155
|
+
}
|
|
156
|
+
const num = parseFloat(match[1]);
|
|
157
|
+
const unit = match[2]?.toLowerCase();
|
|
158
|
+
if (!unit) {
|
|
159
|
+
return Math.floor(num);
|
|
160
|
+
}
|
|
161
|
+
return Math.floor(num * (BYTE_MULTIPLIERS[unit] ?? 1));
|
|
162
|
+
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// Network Helpers
|
|
165
|
+
// ============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Check if a host string is a localhost/loopback address.
|
|
168
|
+
*
|
|
169
|
+
* @param host - The host string to check (e.g., 'localhost:3000', '192.168.1.1')
|
|
170
|
+
* @returns true if the host is a local loopback address
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* isLocalHost('localhost:3000'); // true
|
|
175
|
+
* isLocalHost('127.0.0.1'); // true
|
|
176
|
+
* isLocalHost('[::1]:8080'); // true
|
|
177
|
+
* isLocalHost('192.168.1.1'); // false
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function isLocalHost(host) {
|
|
181
|
+
const cleanHost = host.trim().toLowerCase();
|
|
182
|
+
return (cleanHost.startsWith("localhost:") ||
|
|
183
|
+
cleanHost === "localhost" ||
|
|
184
|
+
cleanHost.startsWith("127.0.0.1:") ||
|
|
185
|
+
cleanHost === "127.0.0.1" ||
|
|
186
|
+
cleanHost.startsWith("[::1]:") ||
|
|
187
|
+
cleanHost === "[::1]");
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=string-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-helpers.js","sourceRoot":"","sources":["../../src/utils/string-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,UAAmC,EAAE;IACtF,MAAM,KAAK,GAAG,KAAK;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvE,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAQzC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAqB;IACjE,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,gDAAgD;AAChD,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,MAAM,GAAG,yBAAyB;IACvE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAEpE;;;GAGG;AACH,MAAM,gBAAgB,GAAqC;IACzD,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI,IAAI,CAAC;IACb,EAAE,EAAE,IAAI,IAAI,CAAC;IACb,EAAE,EAAE,IAAI,IAAI,CAAC;IACb,EAAE,EAAE,IAAI,IAAI,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,mFAAmF,CACvH,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC;QAClC,SAAS,KAAK,WAAW;QACzB,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC;QAClC,SAAS,KAAK,WAAW;QACzB,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,SAAS,KAAK,OAAO,CACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Definition Validation
|
|
3
|
+
*
|
|
4
|
+
* Runtime validation helpers for define*() factory functions.
|
|
5
|
+
* Catches misconfigurations early with clear, actionable error messages.
|
|
6
|
+
*
|
|
7
|
+
* These validations complement TypeScript's compile-time checks by catching:
|
|
8
|
+
* - Empty strings (valid `string` but invalid as identifiers)
|
|
9
|
+
* - Wrong types from JavaScript consumers or dynamic definitions
|
|
10
|
+
* - Missing required fields in loose object literals
|
|
11
|
+
*
|
|
12
|
+
* @internal Not exported from the public API.
|
|
13
|
+
* @module utils/validation
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Validate that a definition name is a non-empty string.
|
|
17
|
+
*
|
|
18
|
+
* @param name - The name value to validate
|
|
19
|
+
* @param type - Definition type for error context (e.g., 'Tool', 'Resource')
|
|
20
|
+
* @throws TypeError if name is not a non-empty string
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateName(name: unknown, type: string): asserts name is string;
|
|
23
|
+
/**
|
|
24
|
+
* Validate that a string field is non-empty.
|
|
25
|
+
*
|
|
26
|
+
* @param value - The value to validate
|
|
27
|
+
* @param type - Definition type for error context
|
|
28
|
+
* @param field - Field name for error context
|
|
29
|
+
* @throws TypeError if value is not a non-empty string
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateNonEmptyString(value: unknown, type: string, field: string): asserts value is string;
|
|
32
|
+
/**
|
|
33
|
+
* Validate that a value is a function.
|
|
34
|
+
*
|
|
35
|
+
* @param value - The value to validate
|
|
36
|
+
* @param type - Definition type for error context
|
|
37
|
+
* @param field - Field name for error context
|
|
38
|
+
* @throws TypeError if value is not a function
|
|
39
|
+
*/
|
|
40
|
+
export declare function validateFunction(value: unknown, type: string, field: string): asserts value is (...args: unknown[]) => unknown;
|
|
41
|
+
/**
|
|
42
|
+
* Validate that a value is a Zod schema (duck-type check).
|
|
43
|
+
*
|
|
44
|
+
* Performs a minimal structural check for Zod-like objects by verifying
|
|
45
|
+
* the presence of `.parse()`. This is intentionally loose to support
|
|
46
|
+
* different Zod versions and custom schema wrappers.
|
|
47
|
+
*
|
|
48
|
+
* @param schema - The value to validate
|
|
49
|
+
* @param type - Definition type for error context
|
|
50
|
+
* @param field - Field name for error context
|
|
51
|
+
* @throws TypeError if value doesn't look like a Zod schema
|
|
52
|
+
*/
|
|
53
|
+
export declare function validateZodSchema(schema: unknown, type: string, field: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Validate that a value is a non-null object (not an array).
|
|
56
|
+
*
|
|
57
|
+
* @param value - The value to validate
|
|
58
|
+
* @param type - Definition type for error context
|
|
59
|
+
* @param field - Field name for error context
|
|
60
|
+
* @throws TypeError if value is not a plain object
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateObject(value: unknown, type: string, field: string): asserts value is Record<string, unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Validate that a value is one of the allowed enum values.
|
|
65
|
+
*
|
|
66
|
+
* @param value - The value to validate
|
|
67
|
+
* @param allowed - Array of allowed string values
|
|
68
|
+
* @param type - Definition type for error context
|
|
69
|
+
* @param field - Field name for error context
|
|
70
|
+
* @throws TypeError if value is not one of the allowed values
|
|
71
|
+
*/
|
|
72
|
+
export declare function validateEnum(value: unknown, allowed: readonly string[], type: string, field: string): asserts value is string;
|
|
73
|
+
/**
|
|
74
|
+
* Validate common definition fields: name (non-empty string) and description (non-empty string).
|
|
75
|
+
* Shared across all define*() factory functions.
|
|
76
|
+
*
|
|
77
|
+
* @param definition - Object with name and description fields
|
|
78
|
+
* @param type - Definition type for error context (e.g., 'Tool', 'Resource')
|
|
79
|
+
*/
|
|
80
|
+
export declare function validateDefinitionBase(definition: {
|
|
81
|
+
name: unknown;
|
|
82
|
+
description: unknown;
|
|
83
|
+
}, type: string): void;
|
|
84
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAIhF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAI3G;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAIlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIpH;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,IAAI,MAAM,CAMzB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG9G"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Definition Validation
|
|
3
|
+
*
|
|
4
|
+
* Runtime validation helpers for define*() factory functions.
|
|
5
|
+
* Catches misconfigurations early with clear, actionable error messages.
|
|
6
|
+
*
|
|
7
|
+
* These validations complement TypeScript's compile-time checks by catching:
|
|
8
|
+
* - Empty strings (valid `string` but invalid as identifiers)
|
|
9
|
+
* - Wrong types from JavaScript consumers or dynamic definitions
|
|
10
|
+
* - Missing required fields in loose object literals
|
|
11
|
+
*
|
|
12
|
+
* @internal Not exported from the public API.
|
|
13
|
+
* @module utils/validation
|
|
14
|
+
*/
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Validation Helpers
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a definition name is a non-empty string.
|
|
20
|
+
*
|
|
21
|
+
* @param name - The name value to validate
|
|
22
|
+
* @param type - Definition type for error context (e.g., 'Tool', 'Resource')
|
|
23
|
+
* @throws TypeError if name is not a non-empty string
|
|
24
|
+
*/
|
|
25
|
+
export function validateName(name, type) {
|
|
26
|
+
if (typeof name !== "string" || name.trim().length === 0) {
|
|
27
|
+
throw new TypeError(`${type} definition requires a non-empty 'name', received: ${String(name)}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate that a string field is non-empty.
|
|
32
|
+
*
|
|
33
|
+
* @param value - The value to validate
|
|
34
|
+
* @param type - Definition type for error context
|
|
35
|
+
* @param field - Field name for error context
|
|
36
|
+
* @throws TypeError if value is not a non-empty string
|
|
37
|
+
*/
|
|
38
|
+
export function validateNonEmptyString(value, type, field) {
|
|
39
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
40
|
+
throw new TypeError(`${type} definition requires a non-empty '${field}', received: ${String(value)}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate that a value is a function.
|
|
45
|
+
*
|
|
46
|
+
* @param value - The value to validate
|
|
47
|
+
* @param type - Definition type for error context
|
|
48
|
+
* @param field - Field name for error context
|
|
49
|
+
* @throws TypeError if value is not a function
|
|
50
|
+
*/
|
|
51
|
+
export function validateFunction(value, type, field) {
|
|
52
|
+
if (typeof value !== "function") {
|
|
53
|
+
throw new TypeError(`${type} definition requires '${field}' to be a function, received: ${typeof value}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate that a value is a Zod schema (duck-type check).
|
|
58
|
+
*
|
|
59
|
+
* Performs a minimal structural check for Zod-like objects by verifying
|
|
60
|
+
* the presence of `.parse()`. This is intentionally loose to support
|
|
61
|
+
* different Zod versions and custom schema wrappers.
|
|
62
|
+
*
|
|
63
|
+
* @param schema - The value to validate
|
|
64
|
+
* @param type - Definition type for error context
|
|
65
|
+
* @param field - Field name for error context
|
|
66
|
+
* @throws TypeError if value doesn't look like a Zod schema
|
|
67
|
+
*/
|
|
68
|
+
export function validateZodSchema(schema, type, field) {
|
|
69
|
+
if (schema == null || typeof schema !== "object" || !("parse" in schema)) {
|
|
70
|
+
throw new TypeError(`${type} definition requires '${field}' to be a Zod schema (object with .parse()), received: ${typeof schema}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate that a value is a non-null object (not an array).
|
|
75
|
+
*
|
|
76
|
+
* @param value - The value to validate
|
|
77
|
+
* @param type - Definition type for error context
|
|
78
|
+
* @param field - Field name for error context
|
|
79
|
+
* @throws TypeError if value is not a plain object
|
|
80
|
+
*/
|
|
81
|
+
export function validateObject(value, type, field) {
|
|
82
|
+
if (value == null || typeof value !== "object" || Array.isArray(value)) {
|
|
83
|
+
throw new TypeError(`${type} definition requires '${field}' to be an object, received: ${typeof value}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validate that a value is one of the allowed enum values.
|
|
88
|
+
*
|
|
89
|
+
* @param value - The value to validate
|
|
90
|
+
* @param allowed - Array of allowed string values
|
|
91
|
+
* @param type - Definition type for error context
|
|
92
|
+
* @param field - Field name for error context
|
|
93
|
+
* @throws TypeError if value is not one of the allowed values
|
|
94
|
+
*/
|
|
95
|
+
export function validateEnum(value, allowed, type, field) {
|
|
96
|
+
if (!allowed.includes(value)) {
|
|
97
|
+
throw new TypeError(`${type} definition requires '${field}' to be one of [${allowed.join(", ")}], received: '${String(value)}'`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Validate common definition fields: name (non-empty string) and description (non-empty string).
|
|
102
|
+
* Shared across all define*() factory functions.
|
|
103
|
+
*
|
|
104
|
+
* @param definition - Object with name and description fields
|
|
105
|
+
* @param type - Definition type for error context (e.g., 'Tool', 'Resource')
|
|
106
|
+
*/
|
|
107
|
+
export function validateDefinitionBase(definition, type) {
|
|
108
|
+
validateName(definition.name, type);
|
|
109
|
+
validateNonEmptyString(definition.description, type, "description");
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,IAAY;IACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,sDAAsD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,qCAAqC,KAAK,gBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,IAAY,EACZ,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,yBAAyB,KAAK,iCAAiC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe,EAAE,IAAY,EAAE,KAAa;IAC5E,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,yBAAyB,KAAK,0DAA0D,OAAO,MAAM,EAAE,CAC/G,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa;IACxE,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,yBAAyB,KAAK,gCAAgC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAc,EACd,OAA0B,EAC1B,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAe,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,yBAAyB,KAAK,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,GAAG,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAmD,EAAE,IAAY;IACtG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,sBAAsB,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod Schema Helpers
|
|
3
|
+
*
|
|
4
|
+
* Reusable Zod schema primitives for environment variable parsing.
|
|
5
|
+
* These helpers eliminate repetition in `env.ts` and ensure consistent
|
|
6
|
+
* coercion behavior for common patterns:
|
|
7
|
+
*
|
|
8
|
+
* - Boolean env vars (`"true"` / `"false"` strings)
|
|
9
|
+
* - Comma-separated lists (`"a,b,c"` → `string[]`)
|
|
10
|
+
*
|
|
11
|
+
* @module utils/zod-helpers
|
|
12
|
+
*/
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
/**
|
|
15
|
+
* Zod schema for boolean environment variables.
|
|
16
|
+
*
|
|
17
|
+
* Accepts both native booleans (from config files) and string values
|
|
18
|
+
* from process.env. Only `"true"` (case-insensitive) maps to `true`,
|
|
19
|
+
* everything else maps to `false`.
|
|
20
|
+
*
|
|
21
|
+
* @param defaultValue - Default value when the env var is not set
|
|
22
|
+
* @returns Zod schema that outputs a `boolean`
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // In env schema:
|
|
27
|
+
* OTEL_ENABLED: booleanFromEnv(false),
|
|
28
|
+
* MCP_LEGACY_SSE_ENABLED: booleanFromEnv(false),
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function booleanFromEnv(defaultValue: boolean): z.ZodDefault<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodString, boolean, string>]>>;
|
|
32
|
+
/**
|
|
33
|
+
* Zod schema for comma-separated string list env vars.
|
|
34
|
+
*
|
|
35
|
+
* Splits on `,`, trims whitespace, removes empty segments.
|
|
36
|
+
* Optionally lowercases all values.
|
|
37
|
+
*
|
|
38
|
+
* Use for **required** list fields that always produce a `string[]`.
|
|
39
|
+
* For optional fields that should return `undefined` when empty,
|
|
40
|
+
* use {@link optionalCommaSeparatedList}.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Configuration for list parsing
|
|
43
|
+
* @param options.lowercase - Lowercase all values (default: false)
|
|
44
|
+
* @returns Zod schema that outputs `string[]`
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* // In env schema:
|
|
49
|
+
* OTEL_METRICS_EXPORTER: commaSeparatedList({ lowercase: true }).default('otlp,prometheus'),
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function commaSeparatedList(options?: {
|
|
53
|
+
lowercase?: boolean;
|
|
54
|
+
}): z.ZodEffects<z.ZodString, string[], string>;
|
|
55
|
+
/**
|
|
56
|
+
* Zod schema for optional comma-separated string list env vars.
|
|
57
|
+
*
|
|
58
|
+
* Like {@link commaSeparatedList}, but returns `undefined` when the
|
|
59
|
+
* input is empty or produces no items after trimming. The resulting
|
|
60
|
+
* field type is `string[] | undefined`.
|
|
61
|
+
*
|
|
62
|
+
* Use for optional list fields where absence has semantic meaning
|
|
63
|
+
* (e.g., "use defaults" for allowed origins/hosts).
|
|
64
|
+
*
|
|
65
|
+
* @returns Zod schema that outputs `string[] | undefined`
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // In env schema:
|
|
70
|
+
* MCP_ALLOWED_ORIGINS: optionalCommaSeparatedList(),
|
|
71
|
+
* MCP_ALLOWED_HOSTS: optionalCommaSeparatedList(),
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function optionalCommaSeparatedList(): z.ZodOptional<z.ZodEffects<z.ZodString, string[] | undefined, string>>;
|
|
75
|
+
/**
|
|
76
|
+
* Zod schema for human-readable byte size environment variables.
|
|
77
|
+
*
|
|
78
|
+
* Accepts strings like `"10mb"`, `"500kb"`, `"1.5gb"`, or plain byte
|
|
79
|
+
* counts like `"1048576"`. Transforms the input to a `number` (bytes)
|
|
80
|
+
* via {@link parseByteSize}.
|
|
81
|
+
*
|
|
82
|
+
* @param defaultValue - Default value as human-readable string (e.g. `'10mb'`)
|
|
83
|
+
* @returns Zod schema that accepts `string` and outputs `number` (bytes)
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // In env schema:
|
|
88
|
+
* LOG_MAX_FILE_SIZE: byteSizeSchema('10mb').pipe(z.number().int().min(1024)),
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function byteSizeSchema(defaultValue: string): z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
92
|
+
//# sourceMappingURL=zod-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/zod-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,OAAO,wFAKnD;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,+CAEvE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,2EAQzC;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,2DAKlD"}
|