@cyanheads/mcp-ts-core 0.1.0-beta.12
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/CLAUDE.md +583 -0
- package/LICENSE +201 -0
- package/README.md +287 -0
- package/biome.json +103 -0
- package/dist/app.d.ts +82 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +222 -0
- package/dist/app.js.map +1 -0
- package/dist/cli/init.d.ts +8 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +161 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/config/index.d.ts +349 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +464 -0
- package/dist/config/index.js.map +1 -0
- package/dist/context.d.ts +119 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +144 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/prompts/prompt-registration.d.ts +33 -0
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -0
- package/dist/mcp-server/prompts/prompt-registration.js +91 -0
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts +49 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts.map +1 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.js +39 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.js.map +1 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +37 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.js +2 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -0
- package/dist/mcp-server/resources/resource-registration.d.ts +27 -0
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -0
- package/dist/mcp-server/resources/resource-registration.js +85 -0
- package/dist/mcp-server/resources/resource-registration.js.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts +84 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.js +40 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.js.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts +32 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js +103 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +94 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.js +2 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +111 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -0
- package/dist/mcp-server/roots/roots-registration.d.ts +22 -0
- package/dist/mcp-server/roots/roots-registration.d.ts.map +1 -0
- package/dist/mcp-server/roots/roots-registration.js +25 -0
- package/dist/mcp-server/roots/roots-registration.js.map +1 -0
- package/dist/mcp-server/server.d.ts +34 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +62 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +42 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +70 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +1 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +109 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +209 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +1 -0
- package/dist/mcp-server/tasks/core/taskManager.d.ts +103 -0
- package/dist/mcp-server/tasks/core/taskManager.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/taskManager.js +144 -0
- package/dist/mcp-server/tasks/core/taskManager.js.map +1 -0
- package/dist/mcp-server/tasks/core/taskTypes.d.ts +11 -0
- package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/taskTypes.js +13 -0
- package/dist/mcp-server/tasks/core/taskTypes.js.map +1 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +108 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js +14 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/tool-registration.d.ts +49 -0
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/tool-registration.js +269 -0
- package/dist/mcp-server/tools/tool-registration.js.map +1 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.d.ts +73 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.js +45 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts +33 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.js +107 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +118 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.js +2 -0
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +34 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +68 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -0
- package/dist/mcp-server/transports/ITransport.d.ts +15 -0
- package/dist/mcp-server/transports/ITransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/ITransport.js +2 -0
- package/dist/mcp-server/transports/ITransport.js.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.js +43 -0
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +24 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js +69 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +19 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js +2 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +18 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js +64 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts +25 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.js +34 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.js +58 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.d.ts +25 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.js +30 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +14 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +86 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +14 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +113 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js +112 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts +47 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.js +396 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.js +2 -0
- package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts +21 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js +44 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +33 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.js +54 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -0
- package/dist/mcp-server/transports/http/sessionStore.d.ts +87 -0
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/sessionStore.js +209 -0
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -0
- package/dist/mcp-server/transports/manager.d.ts +22 -0
- package/dist/mcp-server/transports/manager.d.ts.map +1 -0
- package/dist/mcp-server/transports/manager.js +62 -0
- package/dist/mcp-server/transports/manager.js.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +44 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js +63 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
- package/dist/services/graph/core/GraphService.d.ts +205 -0
- package/dist/services/graph/core/GraphService.d.ts.map +1 -0
- package/dist/services/graph/core/GraphService.js +231 -0
- package/dist/services/graph/core/GraphService.js.map +1 -0
- package/dist/services/graph/core/IGraphProvider.d.ts +295 -0
- package/dist/services/graph/core/IGraphProvider.d.ts.map +1 -0
- package/dist/services/graph/core/IGraphProvider.js +8 -0
- package/dist/services/graph/core/IGraphProvider.js.map +1 -0
- package/dist/services/graph/types.d.ts +107 -0
- package/dist/services/graph/types.d.ts.map +1 -0
- package/dist/services/graph/types.js +8 -0
- package/dist/services/graph/types.js.map +1 -0
- package/dist/services/llm/core/ILlmProvider.d.ts +86 -0
- package/dist/services/llm/core/ILlmProvider.d.ts.map +1 -0
- package/dist/services/llm/core/ILlmProvider.js +2 -0
- package/dist/services/llm/core/ILlmProvider.js.map +1 -0
- package/dist/services/llm/providers/openrouter.provider.d.ts +187 -0
- package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -0
- package/dist/services/llm/providers/openrouter.provider.js +302 -0
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -0
- package/dist/services/llm/types.d.ts +16 -0
- package/dist/services/llm/types.d.ts.map +1 -0
- package/dist/services/llm/types.js +9 -0
- package/dist/services/llm/types.js.map +1 -0
- package/dist/services/speech/core/ISpeechProvider.d.ts +92 -0
- package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -0
- package/dist/services/speech/core/ISpeechProvider.js +34 -0
- package/dist/services/speech/core/ISpeechProvider.js.map +1 -0
- package/dist/services/speech/core/SpeechService.d.ts +87 -0
- package/dist/services/speech/core/SpeechService.d.ts.map +1 -0
- package/dist/services/speech/core/SpeechService.js +135 -0
- package/dist/services/speech/core/SpeechService.js.map +1 -0
- package/dist/services/speech/providers/elevenlabs.provider.d.ts +77 -0
- package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -0
- package/dist/services/speech/providers/elevenlabs.provider.js +199 -0
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -0
- package/dist/services/speech/providers/whisper.provider.d.ts +94 -0
- package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -0
- package/dist/services/speech/providers/whisper.provider.js +240 -0
- package/dist/services/speech/providers/whisper.provider.js.map +1 -0
- package/dist/services/speech/types.d.ts +173 -0
- package/dist/services/speech/types.d.ts.map +1 -0
- package/dist/services/speech/types.js +8 -0
- package/dist/services/speech/types.js.map +1 -0
- package/dist/storage/core/IStorageProvider.d.ts +159 -0
- package/dist/storage/core/IStorageProvider.d.ts.map +1 -0
- package/dist/storage/core/IStorageProvider.js +2 -0
- package/dist/storage/core/IStorageProvider.js.map +1 -0
- package/dist/storage/core/StorageService.d.ts +22 -0
- package/dist/storage/core/StorageService.d.ts.map +1 -0
- package/dist/storage/core/StorageService.js +151 -0
- package/dist/storage/core/StorageService.js.map +1 -0
- package/dist/storage/core/storageFactory.d.ts +66 -0
- package/dist/storage/core/storageFactory.d.ts.map +1 -0
- package/dist/storage/core/storageFactory.js +122 -0
- package/dist/storage/core/storageFactory.js.map +1 -0
- package/dist/storage/core/storageValidation.d.ts +77 -0
- package/dist/storage/core/storageValidation.d.ts.map +1 -0
- package/dist/storage/core/storageValidation.js +303 -0
- package/dist/storage/core/storageValidation.js.map +1 -0
- package/dist/storage/providers/cloudflare/d1Provider.d.ts +94 -0
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/d1Provider.js +347 -0
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -0
- package/dist/storage/providers/cloudflare/kvProvider.d.ts +21 -0
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/kvProvider.js +183 -0
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -0
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +28 -0
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/r2Provider.js +222 -0
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +20 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +282 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +21 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.js +139 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -0
- package/dist/storage/providers/supabase/supabase.types.d.ts +49 -0
- package/dist/storage/providers/supabase/supabase.types.d.ts.map +1 -0
- package/dist/storage/providers/supabase/supabase.types.js +8 -0
- package/dist/storage/providers/supabase/supabase.types.js.map +1 -0
- package/dist/storage/providers/supabase/supabaseProvider.d.ts +24 -0
- package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -0
- package/dist/storage/providers/supabase/supabaseProvider.js +209 -0
- package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -0
- package/dist/testing/index.d.ts +53 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +132 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types-global/errors.d.ts +83 -0
- package/dist/types-global/errors.d.ts.map +1 -0
- package/dist/types-global/errors.js +113 -0
- package/dist/types-global/errors.js.map +1 -0
- package/dist/utils/formatting/diffFormatter.d.ts +227 -0
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/diffFormatter.js +369 -0
- package/dist/utils/formatting/diffFormatter.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +9 -0
- package/dist/utils/formatting/index.d.ts.map +1 -0
- package/dist/utils/formatting/index.js +9 -0
- package/dist/utils/formatting/index.js.map +1 -0
- package/dist/utils/formatting/markdownBuilder.d.ts +543 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
- package/dist/utils/formatting/markdownBuilder.js +674 -0
- package/dist/utils/formatting/markdownBuilder.js.map +1 -0
- package/dist/utils/formatting/tableFormatter.d.ts +261 -0
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/tableFormatter.js +456 -0
- package/dist/utils/formatting/tableFormatter.js.map +1 -0
- package/dist/utils/formatting/treeFormatter.d.ts +344 -0
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/treeFormatter.js +400 -0
- package/dist/utils/formatting/treeFormatter.js.map +1 -0
- package/dist/utils/internal/encoding.d.ts +42 -0
- package/dist/utils/internal/encoding.d.ts.map +1 -0
- package/dist/utils/internal/encoding.js +87 -0
- package/dist/utils/internal/encoding.js.map +1 -0
- package/dist/utils/internal/error-handler/errorHandler.d.ts +140 -0
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/errorHandler.js +318 -0
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -0
- package/dist/utils/internal/error-handler/helpers.d.ts +98 -0
- package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/helpers.js +214 -0
- package/dist/utils/internal/error-handler/helpers.js.map +1 -0
- package/dist/utils/internal/error-handler/mappings.d.ts +85 -0
- package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/mappings.js +234 -0
- package/dist/utils/internal/error-handler/mappings.js.map +1 -0
- package/dist/utils/internal/error-handler/types.d.ts +160 -0
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/types.js +6 -0
- package/dist/utils/internal/error-handler/types.js.map +1 -0
- package/dist/utils/internal/health.d.ts +60 -0
- package/dist/utils/internal/health.d.ts.map +1 -0
- package/dist/utils/internal/health.js +46 -0
- package/dist/utils/internal/health.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +300 -0
- package/dist/utils/internal/logger.d.ts.map +1 -0
- package/dist/utils/internal/logger.js +573 -0
- package/dist/utils/internal/logger.js.map +1 -0
- package/dist/utils/internal/performance.d.ts +78 -0
- package/dist/utils/internal/performance.d.ts.map +1 -0
- package/dist/utils/internal/performance.js +227 -0
- package/dist/utils/internal/performance.js.map +1 -0
- package/dist/utils/internal/requestContext.d.ts +200 -0
- package/dist/utils/internal/requestContext.d.ts.map +1 -0
- package/dist/utils/internal/requestContext.js +163 -0
- package/dist/utils/internal/requestContext.js.map +1 -0
- package/dist/utils/internal/runtime.d.ts +49 -0
- package/dist/utils/internal/runtime.d.ts.map +1 -0
- package/dist/utils/internal/runtime.js +90 -0
- package/dist/utils/internal/runtime.js.map +1 -0
- package/dist/utils/internal/startupBanner.d.ts +23 -0
- package/dist/utils/internal/startupBanner.d.ts.map +1 -0
- package/dist/utils/internal/startupBanner.js +34 -0
- package/dist/utils/internal/startupBanner.js.map +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +97 -0
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
- package/dist/utils/metrics/tokenCounter.js +162 -0
- package/dist/utils/metrics/tokenCounter.js.map +1 -0
- package/dist/utils/network/fetchWithTimeout.d.ts +91 -0
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
- package/dist/utils/network/fetchWithTimeout.js +305 -0
- package/dist/utils/network/fetchWithTimeout.js.map +1 -0
- package/dist/utils/pagination/pagination.d.ts +157 -0
- package/dist/utils/pagination/pagination.d.ts.map +1 -0
- package/dist/utils/pagination/pagination.js +191 -0
- package/dist/utils/pagination/pagination.js.map +1 -0
- package/dist/utils/parsing/csvParser.d.ts +84 -0
- package/dist/utils/parsing/csvParser.d.ts.map +1 -0
- package/dist/utils/parsing/csvParser.js +132 -0
- package/dist/utils/parsing/csvParser.js.map +1 -0
- package/dist/utils/parsing/dateParser.d.ts +103 -0
- package/dist/utils/parsing/dateParser.d.ts.map +1 -0
- package/dist/utils/parsing/dateParser.js +142 -0
- package/dist/utils/parsing/dateParser.js.map +1 -0
- package/dist/utils/parsing/frontmatterParser.d.ts +91 -0
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -0
- package/dist/utils/parsing/frontmatterParser.js +163 -0
- package/dist/utils/parsing/frontmatterParser.js.map +1 -0
- package/dist/utils/parsing/index.d.ts +15 -0
- package/dist/utils/parsing/index.d.ts.map +1 -0
- package/dist/utils/parsing/index.js +15 -0
- package/dist/utils/parsing/index.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +115 -0
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
- package/dist/utils/parsing/jsonParser.js +177 -0
- package/dist/utils/parsing/jsonParser.js.map +1 -0
- package/dist/utils/parsing/pdfParser.d.ts +563 -0
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -0
- package/dist/utils/parsing/pdfParser.js +775 -0
- package/dist/utils/parsing/pdfParser.js.map +1 -0
- package/dist/utils/parsing/thinkBlock.d.ts +31 -0
- package/dist/utils/parsing/thinkBlock.d.ts.map +1 -0
- package/dist/utils/parsing/thinkBlock.js +31 -0
- package/dist/utils/parsing/thinkBlock.js.map +1 -0
- package/dist/utils/parsing/xmlParser.d.ts +69 -0
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -0
- package/dist/utils/parsing/xmlParser.js +140 -0
- package/dist/utils/parsing/xmlParser.js.map +1 -0
- package/dist/utils/parsing/yamlParser.d.ts +64 -0
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -0
- package/dist/utils/parsing/yamlParser.js +129 -0
- package/dist/utils/parsing/yamlParser.js.map +1 -0
- package/dist/utils/scheduling/scheduler.d.ts +174 -0
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduling/scheduler.js +248 -0
- package/dist/utils/scheduling/scheduler.js.map +1 -0
- package/dist/utils/security/idGenerator.d.ts +189 -0
- package/dist/utils/security/idGenerator.d.ts.map +1 -0
- package/dist/utils/security/idGenerator.js +301 -0
- package/dist/utils/security/idGenerator.js.map +1 -0
- package/dist/utils/security/index.d.ts +8 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +8 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rateLimiter.d.ts +171 -0
- package/dist/utils/security/rateLimiter.d.ts.map +1 -0
- package/dist/utils/security/rateLimiter.js +294 -0
- package/dist/utils/security/rateLimiter.js.map +1 -0
- package/dist/utils/security/sanitization.d.ts +430 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -0
- package/dist/utils/security/sanitization.js +759 -0
- package/dist/utils/security/sanitization.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +12 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +12 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/instrumentation.d.ts +62 -0
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/utils/telemetry/instrumentation.js +223 -0
- package/dist/utils/telemetry/instrumentation.js.map +1 -0
- package/dist/utils/telemetry/metrics.d.ts +170 -0
- package/dist/utils/telemetry/metrics.d.ts.map +1 -0
- package/dist/utils/telemetry/metrics.js +205 -0
- package/dist/utils/telemetry/metrics.js.map +1 -0
- package/dist/utils/telemetry/semconv.d.ts +147 -0
- package/dist/utils/telemetry/semconv.d.ts.map +1 -0
- package/dist/utils/telemetry/semconv.js +159 -0
- package/dist/utils/telemetry/semconv.js.map +1 -0
- package/dist/utils/telemetry/trace.d.ts +141 -0
- package/dist/utils/telemetry/trace.d.ts.map +1 -0
- package/dist/utils/telemetry/trace.js +193 -0
- package/dist/utils/telemetry/trace.js.map +1 -0
- package/dist/utils/types/guards.d.ts +209 -0
- package/dist/utils/types/guards.d.ts.map +1 -0
- package/dist/utils/types/guards.js +229 -0
- package/dist/utils/types/guards.js.map +1 -0
- package/dist/utils/types/index.d.ts +6 -0
- package/dist/utils/types/index.d.ts.map +1 -0
- package/dist/utils/types/index.js +6 -0
- package/dist/utils/types/index.js.map +1 -0
- package/dist/worker.d.ts +59 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +216 -0
- package/dist/worker.js.map +1 -0
- package/package.json +377 -0
- package/skills/README.md +38 -0
- package/skills/add-export/SKILL.md +49 -0
- package/skills/add-prompt/SKILL.md +97 -0
- package/skills/add-provider/SKILL.md +53 -0
- package/skills/add-resource/SKILL.md +107 -0
- package/skills/add-service/SKILL.md +113 -0
- package/skills/add-tool/SKILL.md +110 -0
- package/skills/api-auth/SKILL.md +173 -0
- package/skills/api-config/SKILL.md +68 -0
- package/skills/api-context/SKILL.md +321 -0
- package/skills/api-errors/SKILL.md +146 -0
- package/skills/api-services/SKILL.md +24 -0
- package/skills/api-services/references/graph.md +124 -0
- package/skills/api-services/references/llm.md +46 -0
- package/skills/api-services/references/speech.md +72 -0
- package/skills/api-testing/SKILL.md +263 -0
- package/skills/api-utils/SKILL.md +106 -0
- package/skills/api-utils/references/formatting.md +237 -0
- package/skills/api-utils/references/parsing.md +263 -0
- package/skills/api-utils/references/security.md +226 -0
- package/skills/api-workers/SKILL.md +165 -0
- package/skills/devcheck/SKILL.md +31 -0
- package/skills/maintenance/SKILL.md +52 -0
- package/skills/migrate-mcp-ts-template/SKILL.md +131 -0
- package/skills/release/SKILL.md +67 -0
- package/skills/setup/SKILL.md +89 -0
- package/skills/walkthrough-init/SKILL.md +50 -0
- package/templates/.env.example +17 -0
- package/templates/AGENTS.md +113 -0
- package/templates/CLAUDE.md +113 -0
- package/templates/_tsconfig.json +33 -0
- package/templates/biome.template.json +43 -0
- package/templates/package.json +26 -0
- package/templates/src/index.ts +16 -0
- package/templates/src/mcp-server/prompts/definitions/echo.prompt.ts +19 -0
- package/templates/src/mcp-server/resources/definitions/echo.resource.ts +30 -0
- package/templates/src/mcp-server/tools/definitions/echo.tool.ts +24 -0
- package/templates/vitest.config.ts +12 -0
- package/tsconfig.base.json +44 -0
- package/vitest.config.base.ts +38 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Type guard utilities for safe runtime type narrowing.
|
|
3
|
+
* @module utils/types/guards
|
|
4
|
+
*
|
|
5
|
+
* Provides reusable type guards to replace unsafe type assertions throughout the codebase.
|
|
6
|
+
* All guards perform proper runtime validation and narrow TypeScript types safely.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Type guard to check if a value is a non-null object.
|
|
10
|
+
*
|
|
11
|
+
* @param value - Value to check
|
|
12
|
+
* @returns True if value is an object (excluding null and arrays)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* if (isObject(someValue)) {
|
|
17
|
+
* // someValue is now typed as object
|
|
18
|
+
* console.log(someValue.toString());
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function isObject(value) {
|
|
23
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if a value is a plain record (non-null, non-array object with string keys).
|
|
27
|
+
*
|
|
28
|
+
* Arrays are excluded — this guard is intended for key-value objects only.
|
|
29
|
+
* Delegates to {@link isObject} for the underlying check.
|
|
30
|
+
*
|
|
31
|
+
* @param value - Value to check
|
|
32
|
+
* @returns True if value is a `Record<string, unknown>` (plain object, not null, not an array)
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* if (isRecord(data)) {
|
|
37
|
+
* // data is now typed as Record<string, unknown>
|
|
38
|
+
* const keys = Object.keys(data);
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export function isRecord(value) {
|
|
43
|
+
return isObject(value);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Type guard to check if an object has a specific property.
|
|
47
|
+
*
|
|
48
|
+
* @param obj - Object to check
|
|
49
|
+
* @param key - Property key to look for
|
|
50
|
+
* @returns True if object has the specified property
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* if (hasProperty(error, 'message')) {
|
|
55
|
+
* // TypeScript now knows error has a 'message' property
|
|
56
|
+
* console.log(error.message);
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function hasProperty(obj, key) {
|
|
61
|
+
return isObject(obj) && key in obj;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Type guard to check if an object has a property of a specific type.
|
|
65
|
+
*
|
|
66
|
+
* @param obj - Object to check
|
|
67
|
+
* @param key - Property key to look for
|
|
68
|
+
* @param typeGuard - Type guard function for the property value
|
|
69
|
+
* @returns True if object has the property and it matches the type
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* if (hasPropertyOfType(obj, 'count', (v): v is number => typeof v === 'number')) {
|
|
74
|
+
* // obj.count is now typed as number
|
|
75
|
+
* console.log(obj.count + 1);
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export function hasPropertyOfType(obj, key, typeGuard) {
|
|
80
|
+
return hasProperty(obj, key) && typeGuard(obj[key]);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Type guard to check if a value is a string.
|
|
84
|
+
*
|
|
85
|
+
* @param value - Value to check
|
|
86
|
+
* @returns True if value is a string
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* if (isString(value)) {
|
|
91
|
+
* // value is now typed as string
|
|
92
|
+
* console.log(value.toUpperCase());
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export function isString(value) {
|
|
97
|
+
return typeof value === 'string';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Type guard to check if a value is a number.
|
|
101
|
+
*
|
|
102
|
+
* `NaN` is explicitly excluded — `typeof NaN === 'number'` is true in JavaScript,
|
|
103
|
+
* but `NaN` is almost never a valid value in the contexts where this guard is used.
|
|
104
|
+
*
|
|
105
|
+
* @param value - Value to check
|
|
106
|
+
* @returns True if value is a finite or infinite number (excluding NaN)
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* if (isNumber(value)) {
|
|
111
|
+
* // value is now typed as number (NaN excluded)
|
|
112
|
+
* console.log(value.toFixed(2));
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function isNumber(value) {
|
|
117
|
+
return typeof value === 'number' && !Number.isNaN(value);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Type guard to check if an error is an AggregateError.
|
|
121
|
+
*
|
|
122
|
+
* AggregateError contains multiple errors in an 'errors' array property.
|
|
123
|
+
* This guard safely checks for the errors property without unsafe type assertions.
|
|
124
|
+
*
|
|
125
|
+
* @param error - Error to check
|
|
126
|
+
* @returns True if error is an AggregateError with errors array
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* if (isAggregateError(error)) {
|
|
131
|
+
* // error.errors is now safely typed as unknown[]
|
|
132
|
+
* error.errors.forEach(innerError => console.log(innerError));
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export function isAggregateError(error) {
|
|
137
|
+
return error instanceof Error && hasProperty(error, 'errors') && Array.isArray(error.errors);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Type guard to check if an error has a code property.
|
|
141
|
+
*
|
|
142
|
+
* @param error - Error to check
|
|
143
|
+
* @returns True if error has a code property
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* if (isErrorWithCode(error)) {
|
|
148
|
+
* console.log(`Error code: ${error.code}`);
|
|
149
|
+
* }
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export function isErrorWithCode(error) {
|
|
153
|
+
return error instanceof Error && hasProperty(error, 'code');
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Type guard to check if an error has a status property.
|
|
157
|
+
*
|
|
158
|
+
* @param error - Error to check
|
|
159
|
+
* @returns True if error has a status property
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* if (isErrorWithStatus(error)) {
|
|
164
|
+
* console.log(`HTTP status: ${error.status}`);
|
|
165
|
+
* }
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export function isErrorWithStatus(error) {
|
|
169
|
+
return error instanceof Error && hasProperty(error, 'status');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Safely get a property from an object if it exists.
|
|
173
|
+
*
|
|
174
|
+
* @param obj - Object to get property from
|
|
175
|
+
* @param key - Property key
|
|
176
|
+
* @returns Property value or undefined if property doesn't exist
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const message = getProperty(error, 'message');
|
|
181
|
+
* // message is typed as unknown
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export function getProperty(obj, key) {
|
|
185
|
+
return hasProperty(obj, key) ? obj[key] : undefined;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Safely get a string property from an object.
|
|
189
|
+
*
|
|
190
|
+
* @param obj - Object to get property from
|
|
191
|
+
* @param key - Property key
|
|
192
|
+
* @returns String value or undefined if property doesn't exist or is not a string
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```typescript
|
|
196
|
+
* const traceId = getStringProperty(context, 'traceId');
|
|
197
|
+
* if (traceId) {
|
|
198
|
+
* // traceId is typed as string
|
|
199
|
+
* console.log(traceId.toUpperCase());
|
|
200
|
+
* }
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export function getStringProperty(obj, key) {
|
|
204
|
+
const value = getProperty(obj, key);
|
|
205
|
+
return isString(value) ? value : undefined;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Safely get a number property from an object.
|
|
209
|
+
*
|
|
210
|
+
* Returns `undefined` if the property is absent, not a number, or is `NaN`.
|
|
211
|
+
*
|
|
212
|
+
* @param obj - Object to get property from
|
|
213
|
+
* @param key - Property key
|
|
214
|
+
* @returns Number value or undefined if property doesn't exist, is not a number, or is NaN
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* const retries = getNumberProperty(config, 'maxRetries');
|
|
219
|
+
* if (retries !== undefined) {
|
|
220
|
+
* // retries is typed as number
|
|
221
|
+
* console.log(`Max retries: ${retries}`);
|
|
222
|
+
* }
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
export function getNumberProperty(obj, key) {
|
|
226
|
+
const value = getProperty(obj, key);
|
|
227
|
+
return isNumber(value) ? value : undefined;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/utils/types/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CACzB,GAAY,EACZ,GAAM;IAEN,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,GAAM,EACN,SAAyC;IAEzC,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAwB,GAAY,EAAE,GAAM;IACrE,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAAwB,GAAY,EAAE,GAAM;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAwB,GAAY,EAAE,GAAM;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cloudflare Worker entry point factory. `createWorkerHandler()`
|
|
3
|
+
* returns a standard Workers export object (`{ fetch, scheduled }`) that handles
|
|
4
|
+
* env injection, binding storage, singleton init caching, per-request server
|
|
5
|
+
* creation (GHSA-345p-7cg4-v4c7), error responses, and telemetry flush via
|
|
6
|
+
* `ctx.waitUntil()`.
|
|
7
|
+
* @module src/worker
|
|
8
|
+
*/
|
|
9
|
+
import type { Ai, D1Database, KVNamespace, R2Bucket, ScheduledController } from '@cloudflare/workers-types';
|
|
10
|
+
import { type CreateAppOptions } from './app.js';
|
|
11
|
+
/**
|
|
12
|
+
* Cloudflare Worker Bindings with proper type safety.
|
|
13
|
+
* No index signature — servers extend via intersection types.
|
|
14
|
+
*/
|
|
15
|
+
export interface CloudflareBindings {
|
|
16
|
+
AI?: Ai;
|
|
17
|
+
DB?: D1Database;
|
|
18
|
+
ENVIRONMENT?: string;
|
|
19
|
+
KV_NAMESPACE?: KVNamespace;
|
|
20
|
+
LOG_LEVEL?: string;
|
|
21
|
+
MCP_ALLOWED_ORIGINS?: string;
|
|
22
|
+
MCP_AUTH_MODE?: string;
|
|
23
|
+
MCP_AUTH_SECRET_KEY?: string;
|
|
24
|
+
OAUTH_AUDIENCE?: string;
|
|
25
|
+
OAUTH_ISSUER_URL?: string;
|
|
26
|
+
OAUTH_JWKS_URI?: string;
|
|
27
|
+
OPENROUTER_API_KEY?: string;
|
|
28
|
+
OTEL_ENABLED?: string;
|
|
29
|
+
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT?: string;
|
|
30
|
+
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT?: string;
|
|
31
|
+
R2_BUCKET?: R2Bucket;
|
|
32
|
+
SPEECH_STT_API_KEY?: string;
|
|
33
|
+
SPEECH_STT_ENABLED?: string;
|
|
34
|
+
SPEECH_TTS_API_KEY?: string;
|
|
35
|
+
SPEECH_TTS_ENABLED?: string;
|
|
36
|
+
STORAGE_PROVIDER_TYPE?: string;
|
|
37
|
+
SUPABASE_ANON_KEY?: string;
|
|
38
|
+
SUPABASE_SERVICE_ROLE_KEY?: string;
|
|
39
|
+
SUPABASE_URL?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Options for {@link createWorkerHandler}. */
|
|
42
|
+
export interface WorkerHandlerOptions extends CreateAppOptions {
|
|
43
|
+
/** Extra string CF bindings to inject into process.env (beyond the core set). */
|
|
44
|
+
extraEnvBindings?: Array<[string, string]>;
|
|
45
|
+
/** Extra object CF bindings (KV, R2, D1, etc.) to store on globalThis. */
|
|
46
|
+
extraObjectBindings?: Array<[string, string]>;
|
|
47
|
+
/** Handler for scheduled/cron events. Called after app init and binding refresh. */
|
|
48
|
+
onScheduled?: (controller: ScheduledController, env: CloudflareBindings, ctx: ExecutionContext) => Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns a standard Cloudflare Workers export object (`{ fetch, scheduled }`).
|
|
52
|
+
* Handles env injection, binding storage, singleton init caching, per-request
|
|
53
|
+
* server creation, error responses, and telemetry flush via `ctx.waitUntil()`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createWorkerHandler(options?: WorkerHandlerOptions): {
|
|
56
|
+
fetch(request: Request, env: CloudflareBindings, ctx: ExecutionContext): Promise<Response>;
|
|
57
|
+
scheduled(controller: ScheduledController, env: CloudflareBindings, ctx: ExecutionContext): Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EACV,EAAE,EAEF,UAAU,EACV,WAAW,EACX,QAAQ,EACR,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,UAAU,CAAC;AAMlE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC,CAAC,EAAE,MAAM,CAAC;IAC7C,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,oFAAoF;IACpF,WAAW,CAAC,EAAE,CACZ,UAAU,EAAE,mBAAmB,EAC/B,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAwED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;mBAmFvD,OAAO,OACX,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,QAAQ,CAAC;0BA4DN,mBAAmB,OAC1B,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC;EAuCnB"}
|
package/dist/worker.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { composeServices } from './app.js';
|
|
2
|
+
import { createHttpApp } from './mcp-server/transports/http/httpTransport.js';
|
|
3
|
+
import { logger } from './utils/internal/logger.js';
|
|
4
|
+
import { initHighResTimer } from './utils/internal/performance.js';
|
|
5
|
+
import { requestContextService } from './utils/internal/requestContext.js';
|
|
6
|
+
/** Core string bindings injected into process.env for config parsing. */
|
|
7
|
+
const CORE_ENV_BINDINGS = [
|
|
8
|
+
['ENVIRONMENT', 'NODE_ENV'],
|
|
9
|
+
['LOG_LEVEL', 'MCP_LOG_LEVEL'],
|
|
10
|
+
['MCP_AUTH_MODE', 'MCP_AUTH_MODE'],
|
|
11
|
+
['MCP_AUTH_SECRET_KEY', 'MCP_AUTH_SECRET_KEY'],
|
|
12
|
+
['OPENROUTER_API_KEY', 'OPENROUTER_API_KEY'],
|
|
13
|
+
['SUPABASE_URL', 'SUPABASE_URL'],
|
|
14
|
+
['SUPABASE_ANON_KEY', 'SUPABASE_ANON_KEY'],
|
|
15
|
+
['SUPABASE_SERVICE_ROLE_KEY', 'SUPABASE_SERVICE_ROLE_KEY'],
|
|
16
|
+
['STORAGE_PROVIDER_TYPE', 'STORAGE_PROVIDER_TYPE'],
|
|
17
|
+
['OAUTH_ISSUER_URL', 'OAUTH_ISSUER_URL'],
|
|
18
|
+
['OAUTH_AUDIENCE', 'OAUTH_AUDIENCE'],
|
|
19
|
+
['OAUTH_JWKS_URI', 'OAUTH_JWKS_URI'],
|
|
20
|
+
['MCP_ALLOWED_ORIGINS', 'MCP_ALLOWED_ORIGINS'],
|
|
21
|
+
['SPEECH_TTS_ENABLED', 'SPEECH_TTS_ENABLED'],
|
|
22
|
+
['SPEECH_TTS_API_KEY', 'SPEECH_TTS_API_KEY'],
|
|
23
|
+
['SPEECH_STT_ENABLED', 'SPEECH_STT_ENABLED'],
|
|
24
|
+
['SPEECH_STT_API_KEY', 'SPEECH_STT_API_KEY'],
|
|
25
|
+
['OTEL_ENABLED', 'OTEL_ENABLED'],
|
|
26
|
+
['OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'],
|
|
27
|
+
['OTEL_EXPORTER_OTLP_METRICS_ENDPOINT', 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'],
|
|
28
|
+
];
|
|
29
|
+
/** Core object bindings stored on globalThis for storage/AI providers. */
|
|
30
|
+
const CORE_OBJECT_BINDINGS = [
|
|
31
|
+
['KV_NAMESPACE', 'KV_NAMESPACE'],
|
|
32
|
+
['R2_BUCKET', 'R2_BUCKET'],
|
|
33
|
+
['DB', 'DB'],
|
|
34
|
+
['AI', 'AI'],
|
|
35
|
+
];
|
|
36
|
+
function injectEnvVars(env, extraBindings) {
|
|
37
|
+
if (typeof process === 'undefined')
|
|
38
|
+
return;
|
|
39
|
+
for (const [bindingKey, processKey] of CORE_ENV_BINDINGS) {
|
|
40
|
+
const value = env[bindingKey];
|
|
41
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
42
|
+
process.env[processKey] = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (extraBindings) {
|
|
46
|
+
for (const [bindingKey, processKey] of extraBindings) {
|
|
47
|
+
const value = env[bindingKey];
|
|
48
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
49
|
+
process.env[processKey] = value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function storeBindings(env, extraBindings) {
|
|
55
|
+
for (const [bindingKey, globalKey] of CORE_OBJECT_BINDINGS) {
|
|
56
|
+
const value = env[bindingKey];
|
|
57
|
+
if (value != null) {
|
|
58
|
+
Object.assign(globalThis, { [globalKey]: value });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (extraBindings) {
|
|
62
|
+
for (const [bindingKey, globalKey] of extraBindings) {
|
|
63
|
+
const value = env[bindingKey];
|
|
64
|
+
if (value != null) {
|
|
65
|
+
Object.assign(globalThis, { [globalKey]: value });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns a standard Cloudflare Workers export object (`{ fetch, scheduled }`).
|
|
72
|
+
* Handles env injection, binding storage, singleton init caching, per-request
|
|
73
|
+
* server creation, error responses, and telemetry flush via `ctx.waitUntil()`.
|
|
74
|
+
*/
|
|
75
|
+
export function createWorkerHandler(options = {}) {
|
|
76
|
+
const { extraEnvBindings, extraObjectBindings, onScheduled, ...appOptions } = options;
|
|
77
|
+
let appPromise = null;
|
|
78
|
+
function initializeApp(env) {
|
|
79
|
+
if (appPromise)
|
|
80
|
+
return appPromise;
|
|
81
|
+
appPromise = (async () => {
|
|
82
|
+
const initStartTime = Date.now();
|
|
83
|
+
try {
|
|
84
|
+
if (typeof process !== 'undefined' && process.env) {
|
|
85
|
+
process.env.IS_SERVERLESS = 'true';
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
Object.assign(globalThis, { IS_SERVERLESS: true });
|
|
89
|
+
}
|
|
90
|
+
const { createServer } = await composeServices(appOptions);
|
|
91
|
+
await initHighResTimer();
|
|
92
|
+
const logLevel = env.LOG_LEVEL?.toLowerCase() ?? 'info';
|
|
93
|
+
const validLogLevels = [
|
|
94
|
+
'debug',
|
|
95
|
+
'info',
|
|
96
|
+
'notice',
|
|
97
|
+
'warning',
|
|
98
|
+
'error',
|
|
99
|
+
'crit',
|
|
100
|
+
'alert',
|
|
101
|
+
'emerg',
|
|
102
|
+
];
|
|
103
|
+
const validatedLogLevel = validLogLevels.includes(logLevel)
|
|
104
|
+
? logLevel
|
|
105
|
+
: 'info';
|
|
106
|
+
await logger.initialize(validatedLogLevel, 'http');
|
|
107
|
+
const workerContext = requestContextService.createRequestContext({
|
|
108
|
+
operation: 'WorkerInitialization',
|
|
109
|
+
isServerless: true,
|
|
110
|
+
});
|
|
111
|
+
logger.info('Cloudflare Worker initializing...', {
|
|
112
|
+
...workerContext,
|
|
113
|
+
environment: env.ENVIRONMENT ?? 'production',
|
|
114
|
+
storageProvider: env.STORAGE_PROVIDER_TYPE ?? 'in-memory',
|
|
115
|
+
});
|
|
116
|
+
const { app } = await createHttpApp(createServer, workerContext);
|
|
117
|
+
const initDuration = Date.now() - initStartTime;
|
|
118
|
+
logger.info('Cloudflare Worker initialized successfully.', {
|
|
119
|
+
...workerContext,
|
|
120
|
+
initDurationMs: initDuration,
|
|
121
|
+
});
|
|
122
|
+
return app;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const initDuration = Date.now() - initStartTime;
|
|
126
|
+
const errorContext = requestContextService.createRequestContext({
|
|
127
|
+
operation: 'WorkerInitialization',
|
|
128
|
+
isServerless: true,
|
|
129
|
+
initDurationMs: initDuration,
|
|
130
|
+
error: error instanceof Error ? error.message : String(error),
|
|
131
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
132
|
+
});
|
|
133
|
+
logger.crit('Failed to initialize Cloudflare Worker.', error instanceof Error ? error : new Error(String(error)), errorContext);
|
|
134
|
+
appPromise = null;
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
return appPromise;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
async fetch(request, env, ctx) {
|
|
142
|
+
try {
|
|
143
|
+
injectEnvVars(env, extraEnvBindings);
|
|
144
|
+
storeBindings(env, extraObjectBindings);
|
|
145
|
+
const app = await initializeApp(env);
|
|
146
|
+
const cfProperties = request.cf;
|
|
147
|
+
const requestId = request.headers.get('cf-ray') ?? crypto.randomUUID();
|
|
148
|
+
const requestContext = requestContextService.createRequestContext({
|
|
149
|
+
operation: 'WorkerFetch',
|
|
150
|
+
requestId,
|
|
151
|
+
isServerless: true,
|
|
152
|
+
...(cfProperties && {
|
|
153
|
+
colo: cfProperties.colo,
|
|
154
|
+
country: cfProperties.country,
|
|
155
|
+
city: cfProperties.city,
|
|
156
|
+
}),
|
|
157
|
+
});
|
|
158
|
+
logger.debug('Processing Worker fetch request.', {
|
|
159
|
+
...requestContext,
|
|
160
|
+
method: request.method,
|
|
161
|
+
url: request.url,
|
|
162
|
+
colo: cfProperties?.colo,
|
|
163
|
+
});
|
|
164
|
+
return await app.fetch(request, env, ctx);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
const requestId = request.headers.get('cf-ray');
|
|
168
|
+
const errorContext = requestContextService.createRequestContext({
|
|
169
|
+
operation: 'WorkerFetch',
|
|
170
|
+
isServerless: true,
|
|
171
|
+
method: request.method,
|
|
172
|
+
url: request.url,
|
|
173
|
+
...(requestId && { requestId }),
|
|
174
|
+
});
|
|
175
|
+
logger.error('Worker fetch handler error.', error instanceof Error ? error : new Error(String(error)), errorContext);
|
|
176
|
+
return new Response(JSON.stringify({
|
|
177
|
+
error: 'Internal Server Error',
|
|
178
|
+
message: 'An internal error occurred.',
|
|
179
|
+
}), {
|
|
180
|
+
status: 500,
|
|
181
|
+
headers: { 'Content-Type': 'application/json' },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
async scheduled(controller, env, ctx) {
|
|
186
|
+
try {
|
|
187
|
+
injectEnvVars(env, extraEnvBindings);
|
|
188
|
+
storeBindings(env, extraObjectBindings);
|
|
189
|
+
await initializeApp(env);
|
|
190
|
+
if (onScheduled) {
|
|
191
|
+
await onScheduled(controller, env, ctx);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const scheduledContext = requestContextService.createRequestContext({
|
|
195
|
+
operation: 'WorkerScheduled',
|
|
196
|
+
isServerless: true,
|
|
197
|
+
cron: controller.cron,
|
|
198
|
+
});
|
|
199
|
+
logger.info('Processing scheduled event.', {
|
|
200
|
+
...scheduledContext,
|
|
201
|
+
scheduledTime: new Date(controller.scheduledTime).toISOString(),
|
|
202
|
+
});
|
|
203
|
+
logger.info('Scheduled event completed.', scheduledContext);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const errorContext = requestContextService.createRequestContext({
|
|
207
|
+
operation: 'WorkerScheduled',
|
|
208
|
+
isServerless: true,
|
|
209
|
+
cron: controller.cron,
|
|
210
|
+
});
|
|
211
|
+
logger.error('Worker scheduled handler error.', error instanceof Error ? error : new Error(String(error)), errorContext);
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAyB,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAoB,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAkD3E,yEAAyE;AACzE,MAAM,iBAAiB,GAAsD;IAC3E,CAAC,aAAa,EAAE,UAAU,CAAC;IAC3B,CAAC,WAAW,EAAE,eAAe,CAAC;IAC9B,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC9C,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC1C,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;IAC1D,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAClD,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACxC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC9C,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,oCAAoC,EAAE,oCAAoC,CAAC;IAC5E,CAAC,qCAAqC,EAAE,qCAAqC,CAAC;CACtE,CAAC;AAEX,0EAA0E;AAC1E,MAAM,oBAAoB,GAAsD;IAC9E,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,CAAC;CACJ,CAAC;AAEX,SAAS,aAAa,CAAC,GAAuB,EAAE,aAAuC;IACrF,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO;IAC3C,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,aAAa,EAAE,CAAC;YACrD,MAAM,KAAK,GAAI,GAA+B,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAuB,EAAE,aAAuC;IACrF,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;YACpD,MAAM,KAAK,GAAI,GAA+B,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAgC,EAAE;IACpE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;IAEtF,IAAI,UAAU,GAAoC,IAAI,CAAC;IAEvD,SAAS,aAAa,CAAC,GAAuB;QAC5C,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAElC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEjC,IAAI,CAAC;gBACH,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM,gBAAgB,EAAE,CAAC;gBAEzB,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC;gBACxD,MAAM,cAAc,GAAkB;oBACpC,OAAO;oBACP,MAAM;oBACN,QAAQ;oBACR,SAAS;oBACT,OAAO;oBACP,MAAM;oBACN,OAAO;oBACP,OAAO;iBACR,CAAC;gBACF,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAuB,CAAC;oBACxE,CAAC,CAAE,QAAwB;oBAC3B,CAAC,CAAC,MAAM,CAAC;gBACX,MAAM,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBAEnD,MAAM,aAAa,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAC/D,SAAS,EAAE,sBAAsB;oBACjC,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;oBAC/C,GAAG,aAAa;oBAChB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,YAAY;oBAC5C,eAAe,EAAE,GAAG,CAAC,qBAAqB,IAAI,WAAW;iBAC1D,CAAC,CAAC;gBAEH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,aAAa,CAAqB,YAAY,EAAE,aAAa,CAAC,CAAC;gBAErF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;oBACzD,GAAG,aAAa;oBAChB,cAAc,EAAE,YAAY;iBAC7B,CAAC,CAAC;gBAEH,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;gBAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAC9D,SAAS,EAAE,sBAAsB;oBACjC,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,YAAY;oBAC5B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBACxD,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CACT,yCAAyC,EACzC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,YAAY,CACb,CAAC;gBAEF,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAK,CACT,OAAgB,EAChB,GAAuB,EACvB,GAAqB;YAErB,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBACrC,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBAExC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;gBAGrC,MAAM,YAAY,GAAI,OAAyB,CAAC,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAEvE,MAAM,cAAc,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAChE,SAAS,EAAE,aAAa;oBACxB,SAAS;oBACT,YAAY,EAAE,IAAI;oBAClB,GAAG,CAAC,YAAY,IAAI;wBAClB,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,OAAO,EAAE,YAAY,CAAC,OAAO;wBAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;qBACxB,CAAC;iBACH,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;oBAC/C,GAAG,cAAc;oBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,YAAY,EAAE,IAAI;iBACzB,CAAC,CAAC;gBAEH,OAAO,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAC9D,SAAS,EAAE,aAAa;oBACxB,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;iBAChC,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CACV,6BAA6B,EAC7B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,YAAY,CACb,CAAC;gBAEF,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE,6BAA6B;iBACvC,CAAC,EACF;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,SAAS,CACb,UAA+B,EAC/B,GAAuB,EACvB,GAAqB;YAErB,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBACrC,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBAExC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;gBAEzB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBAED,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAClE,SAAS,EAAE,iBAAiB;oBAC5B,YAAY,EAAE,IAAI;oBAClB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;oBACzC,GAAG,gBAAgB;oBACnB,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;iBAChE,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;oBAC9D,SAAS,EAAE,iBAAiB;oBAC5B,YAAY,EAAE,IAAI;oBAClB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,YAAY,CACb,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|