@nanocollective/nanocoder 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +176 -8
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client-empty-message.spec.js.map +1 -1
- package/dist/ai-sdk-client.d.ts +1 -1
- package/dist/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client.js +261 -150
- package/dist/ai-sdk-client.js.map +1 -1
- package/dist/app/utils/appUtils.d.ts +1 -1
- package/dist/app/utils/appUtils.d.ts.map +1 -1
- package/dist/app/utils/appUtils.js +78 -12
- package/dist/app/utils/appUtils.js.map +1 -1
- package/dist/app.d.ts +22 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +353 -48
- package/dist/app.js.map +1 -1
- package/dist/cli.js +37 -2
- package/dist/cli.js.map +1 -1
- package/dist/cli.spec.d.ts +2 -0
- package/dist/cli.spec.d.ts.map +1 -0
- package/dist/cli.spec.js +101 -0
- package/dist/cli.spec.js.map +1 -0
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +2 -2
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/checkpoint.d.ts +6 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +277 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +1 -1
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/custom-commands.d.ts.map +1 -1
- package/dist/commands/custom-commands.js +4 -4
- package/dist/commands/custom-commands.js.map +1 -1
- package/dist/commands/exit.d.ts.map +1 -1
- package/dist/commands/exit.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +2 -2
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +5 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lsp.d.ts.map +1 -1
- package/dist/commands/lsp.js +6 -6
- package/dist/commands/lsp.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +6 -6
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/model-database.d.ts.map +1 -1
- package/dist/commands/model-database.js +8 -8
- package/dist/commands/model-database.js.map +1 -1
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/setup-config.js +1 -1
- package/dist/commands/setup-config.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/theme.d.ts.map +1 -1
- package/dist/commands/theme.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +5 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +3 -3
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +2 -2
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/bash-execution-indicator.d.ts.map +1 -1
- package/dist/components/bash-execution-indicator.js +2 -2
- package/dist/components/bash-execution-indicator.js.map +1 -1
- package/dist/components/cancelling-indicator.js +3 -3
- package/dist/components/cancelling-indicator.js.map +1 -1
- package/dist/components/chat-queue.d.ts.map +1 -1
- package/dist/components/chat-queue.js +1 -1
- package/dist/components/chat-queue.js.map +1 -1
- package/dist/components/checkpoint-display.d.ts +8 -0
- package/dist/components/checkpoint-display.d.ts.map +1 -0
- package/dist/components/checkpoint-display.js +29 -0
- package/dist/components/checkpoint-display.js.map +1 -0
- package/dist/components/checkpoint-selector.d.ts +11 -0
- package/dist/components/checkpoint-selector.d.ts.map +1 -0
- package/dist/components/checkpoint-selector.js +55 -0
- package/dist/components/checkpoint-selector.js.map +1 -0
- package/dist/components/error-message.d.ts.map +1 -1
- package/dist/components/error-message.js +4 -4
- package/dist/components/error-message.js.map +1 -1
- package/dist/components/info-message.d.ts.map +1 -1
- package/dist/components/info-message.js +4 -4
- package/dist/components/info-message.js.map +1 -1
- package/dist/components/model-selector.d.ts.map +1 -1
- package/dist/components/model-selector.js +7 -7
- package/dist/components/model-selector.js.map +1 -1
- package/dist/components/provider-selector.d.ts.map +1 -1
- package/dist/components/provider-selector.js +6 -6
- package/dist/components/provider-selector.js.map +1 -1
- package/dist/components/security-disclaimer.d.ts.map +1 -1
- package/dist/components/security-disclaimer.js +4 -4
- package/dist/components/security-disclaimer.js.map +1 -1
- package/dist/components/status.d.ts +3 -1
- package/dist/components/status.d.ts.map +1 -1
- package/dist/components/status.js +17 -9
- package/dist/components/status.js.map +1 -1
- package/dist/components/success-message.d.ts.map +1 -1
- package/dist/components/success-message.js +4 -4
- package/dist/components/success-message.js.map +1 -1
- package/dist/components/theme-selector.d.ts.map +1 -1
- package/dist/components/theme-selector.js +8 -8
- package/dist/components/theme-selector.js.map +1 -1
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +7 -7
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/components/tool-execution-indicator.d.ts.map +1 -1
- package/dist/components/tool-execution-indicator.js +2 -2
- package/dist/components/tool-execution-indicator.js.map +1 -1
- package/dist/components/tool-message.d.ts.map +1 -1
- package/dist/components/tool-message.js +4 -5
- package/dist/components/tool-message.js.map +1 -1
- package/dist/components/ui/titled-box.d.ts +16 -0
- package/dist/components/ui/titled-box.d.ts.map +1 -0
- package/dist/components/ui/titled-box.js +10 -0
- package/dist/components/ui/titled-box.js.map +1 -0
- package/dist/components/usage/progress-bar.d.ts.map +1 -1
- package/dist/components/usage/progress-bar.js +3 -0
- package/dist/components/usage/progress-bar.js.map +1 -1
- package/dist/components/usage/usage-display.d.ts.map +1 -1
- package/dist/components/usage/usage-display.js +7 -4
- package/dist/components/usage/usage-display.js.map +1 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +7 -7
- package/dist/components/user-input.js.map +1 -1
- package/dist/components/user-message.d.ts.map +1 -1
- package/dist/components/user-message.js +1 -1
- package/dist/components/user-message.js.map +1 -1
- package/dist/components/vscode-extension-prompt.js +3 -3
- package/dist/components/vscode-extension-prompt.js.map +1 -1
- package/dist/components/warning-message.d.ts.map +1 -1
- package/dist/components/warning-message.js +4 -4
- package/dist/components/warning-message.js.map +1 -1
- package/dist/components/welcome-message.d.ts.map +1 -1
- package/dist/components/welcome-message.js +4 -4
- package/dist/components/welcome-message.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -7
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.spec.js +4 -4
- package/dist/config/index.spec.js.map +1 -1
- package/dist/config/paths.spec.js +1 -1
- package/dist/config/paths.spec.js.map +1 -1
- package/dist/config/preferences.d.ts +0 -2
- package/dist/config/preferences.d.ts.map +1 -1
- package/dist/config/preferences.js +1 -11
- package/dist/config/preferences.js.map +1 -1
- package/dist/custom-commands/executor.d.ts.map +1 -1
- package/dist/custom-commands/executor.js.map +1 -1
- package/dist/custom-commands/loader.d.ts.map +1 -1
- package/dist/custom-commands/loader.js +1 -1
- package/dist/custom-commands/loader.js.map +1 -1
- package/dist/custom-commands/parser.d.ts.map +1 -1
- package/dist/custom-commands/parser.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts +7 -5
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +21 -22
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +22 -5
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +17 -1
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts +4 -2
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +35 -10
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/hooks/useDirectoryTrust.js +1 -1
- package/dist/hooks/useDirectoryTrust.js.map +1 -1
- package/dist/hooks/useInputState.js +2 -2
- package/dist/hooks/useInputState.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +1 -1
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +3 -3
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +3 -3
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useTheme.js.map +1 -1
- package/dist/hooks/useToolHandler.d.ts +1 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +4 -4
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/hooks/useUIState.d.ts +1 -1
- package/dist/hooks/useUIState.d.ts.map +1 -1
- package/dist/hooks/useUIState.js.map +1 -1
- package/dist/hooks/useVSCodeServer.js +2 -2
- package/dist/hooks/useVSCodeServer.js.map +1 -1
- package/dist/init/agents-template-generator.d.ts +1 -1
- package/dist/init/agents-template-generator.d.ts.map +1 -1
- package/dist/init/agents-template-generator.js.map +1 -1
- package/dist/init/existing-rules-extractor.js +1 -1
- package/dist/init/existing-rules-extractor.js.map +1 -1
- package/dist/init/file-scanner.js +2 -2
- package/dist/init/file-scanner.js.map +1 -1
- package/dist/init/framework-detector.js +1 -1
- package/dist/init/framework-detector.js.map +1 -1
- package/dist/init/project-analyzer.d.ts +1 -1
- package/dist/init/project-analyzer.d.ts.map +1 -1
- package/dist/init/project-analyzer.js +3 -3
- package/dist/init/project-analyzer.js.map +1 -1
- package/dist/lsp/lsp-client.d.ts +1 -1
- package/dist/lsp/lsp-client.d.ts.map +1 -1
- package/dist/lsp/lsp-client.js +1 -1
- package/dist/lsp/lsp-client.js.map +1 -1
- package/dist/lsp/lsp-client.spec.js +1 -2
- package/dist/lsp/lsp-client.spec.js.map +1 -1
- package/dist/lsp/lsp-manager.d.ts +1 -1
- package/dist/lsp/lsp-manager.d.ts.map +1 -1
- package/dist/lsp/lsp-manager.js.map +1 -1
- package/dist/lsp/lsp-manager.spec.js +1 -1
- package/dist/lsp/lsp-manager.spec.js.map +1 -1
- package/dist/lsp/protocol.spec.js +1 -1
- package/dist/lsp/protocol.spec.js.map +1 -1
- package/dist/lsp/server-discovery.spec.js +1 -1
- package/dist/lsp/server-discovery.spec.js.map +1 -1
- package/dist/markdown-parser/index.spec.js.map +1 -1
- package/dist/markdown-parser/table-parser.spec.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts +3 -2
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +264 -91
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/transport-factory.d.ts +1 -1
- package/dist/mcp/transport-factory.d.ts.map +1 -1
- package/dist/mcp/transport-factory.js +16 -3
- package/dist/mcp/transport-factory.js.map +1 -1
- package/dist/mcp/transport-factory.spec.js +30 -48
- package/dist/mcp/transport-factory.spec.js.map +1 -1
- package/dist/message-handler.d.ts +1 -1
- package/dist/message-handler.d.ts.map +1 -1
- package/dist/model-database/database-engine.d.ts.map +1 -1
- package/dist/model-database/database-engine.js.map +1 -1
- package/dist/model-database/database-engine.spec.js.map +1 -1
- package/dist/model-database/model-database.js +1 -1
- package/dist/model-database/model-database.js.map +1 -1
- package/dist/model-database/model-engine.d.ts.map +1 -1
- package/dist/model-database/model-engine.js.map +1 -1
- package/dist/model-database/model-engine.spec.js +1 -1
- package/dist/model-database/model-engine.spec.js.map +1 -1
- package/dist/model-database/model-fetcher.d.ts.map +1 -1
- package/dist/model-database/model-fetcher.js +2 -1
- package/dist/model-database/model-fetcher.js.map +1 -1
- package/dist/model-database/model-fetcher.spec.js +1 -1
- package/dist/model-database/model-fetcher.spec.js.map +1 -1
- package/dist/models/models-cache.d.ts +1 -1
- package/dist/models/models-cache.d.ts.map +1 -1
- package/dist/models/models-cache.js +1 -1
- package/dist/models/models-cache.js.map +1 -1
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +18 -10
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/prompt-history.js +2 -2
- package/dist/prompt-history.js.map +1 -1
- package/dist/services/checkpoint-manager.d.ts +68 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.js +345 -0
- package/dist/services/checkpoint-manager.js.map +1 -0
- package/dist/services/checkpoint-manager.spec.d.ts +2 -0
- package/dist/services/checkpoint-manager.spec.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.spec.js +353 -0
- package/dist/services/checkpoint-manager.spec.js.map +1 -0
- package/dist/services/file-snapshot.d.ts +32 -0
- package/dist/services/file-snapshot.d.ts.map +1 -0
- package/dist/services/file-snapshot.js +161 -0
- package/dist/services/file-snapshot.js.map +1 -0
- package/dist/services/file-snapshot.spec.d.ts +2 -0
- package/dist/services/file-snapshot.spec.d.ts.map +1 -0
- package/dist/services/file-snapshot.spec.js +285 -0
- package/dist/services/file-snapshot.spec.js.map +1 -0
- package/dist/test-utils/render-with-theme.d.ts +7 -0
- package/dist/test-utils/render-with-theme.d.ts.map +1 -0
- package/dist/test-utils/render-with-theme.js +38 -0
- package/dist/test-utils/render-with-theme.js.map +1 -0
- package/dist/tokenization/tokenizer-factory.js +2 -2
- package/dist/tokenization/tokenizer-factory.js.map +1 -1
- package/dist/tokenization/tokenizer-factory.spec.js +2 -2
- package/dist/tokenization/tokenizer-factory.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -1
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -1
- package/dist/tool-calling/json-parser.d.ts.map +1 -1
- package/dist/tool-calling/json-parser.js +2 -10
- package/dist/tool-calling/json-parser.js.map +1 -1
- package/dist/tool-calling/json-parser.spec.js +7 -7
- package/dist/tool-calling/json-parser.spec.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +1 -1
- package/dist/tool-calling/tool-parser.js.map +1 -1
- package/dist/tool-calling/tool-parser.spec.js +3 -3
- package/dist/tool-calling/tool-parser.spec.js.map +1 -1
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +7 -7
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +9 -9
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +3 -3
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/execute-function.spec.js +4 -4
- package/dist/tools/execute-function.spec.js.map +1 -1
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +3 -3
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +6 -6
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +8 -8
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
- package/dist/tools/lsp-get-diagnostics.js +5 -5
- package/dist/tools/lsp-get-diagnostics.js.map +1 -1
- package/dist/tools/needs-approval.spec.js +6 -6
- package/dist/tools/needs-approval.spec.js.map +1 -1
- package/dist/tools/read-file.js +6 -6
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +8 -8
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +6 -6
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +1 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +1 -1
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +1 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +4 -4
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/app.d.ts +6 -3
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/checkpoint.d.ts +43 -0
- package/dist/types/checkpoint.d.ts.map +1 -0
- package/dist/types/checkpoint.js +2 -0
- package/dist/types/checkpoint.js.map +1 -0
- package/dist/types/config.d.ts +0 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core-connection-status.spec.js.map +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/usage/calculator.spec.js +1 -1
- package/dist/usage/calculator.spec.js.map +1 -1
- package/dist/usage/storage.d.ts +1 -1
- package/dist/usage/storage.d.ts.map +1 -1
- package/dist/usage/storage.js +9 -3
- package/dist/usage/storage.js.map +1 -1
- package/dist/usage/storage.spec.js +3 -3
- package/dist/usage/storage.spec.js.map +1 -1
- package/dist/usage/tracker.d.ts.map +1 -1
- package/dist/usage/tracker.js +1 -1
- package/dist/usage/tracker.js.map +1 -1
- package/dist/usage/tracker.spec.js +4 -4
- package/dist/usage/tracker.spec.js.map +1 -1
- package/dist/utils/atomic-deletion.spec.js +1 -1
- package/dist/utils/atomic-deletion.spec.js.map +1 -1
- package/dist/utils/checkpoint-utils.d.ts +12 -0
- package/dist/utils/checkpoint-utils.d.ts.map +1 -0
- package/dist/utils/checkpoint-utils.js +85 -0
- package/dist/utils/checkpoint-utils.js.map +1 -0
- package/dist/utils/checkpoint-utils.spec.d.ts +2 -0
- package/dist/utils/checkpoint-utils.spec.d.ts.map +1 -0
- package/dist/utils/checkpoint-utils.spec.js +182 -0
- package/dist/utils/checkpoint-utils.spec.js.map +1 -0
- package/dist/utils/error-formatter.d.ts +35 -0
- package/dist/utils/error-formatter.d.ts.map +1 -1
- package/dist/utils/error-formatter.js +123 -0
- package/dist/utils/error-formatter.js.map +1 -1
- package/dist/utils/file-autocomplete.js +2 -2
- package/dist/utils/file-autocomplete.js.map +1 -1
- package/dist/utils/file-autocomplete.spec.js +1 -1
- package/dist/utils/file-autocomplete.spec.js.map +1 -1
- package/dist/utils/file-content-loader.js +1 -1
- package/dist/utils/file-content-loader.js.map +1 -1
- package/dist/utils/file-content-loader.spec.js +4 -4
- package/dist/utils/file-content-loader.spec.js.map +1 -1
- package/dist/utils/file-mention-handler.js.map +1 -1
- package/dist/utils/file-mention-handler.spec.js +4 -4
- package/dist/utils/file-mention-handler.spec.js.map +1 -1
- package/dist/utils/file-mention-parser.spec.js +2 -2
- package/dist/utils/file-mention-parser.spec.js.map +1 -1
- package/dist/utils/installation-detector.js +2 -2
- package/dist/utils/installation-detector.js.map +1 -1
- package/dist/utils/installation-detector.spec.js +10 -17
- package/dist/utils/installation-detector.spec.js.map +1 -1
- package/dist/utils/logging/config.d.ts +41 -0
- package/dist/utils/logging/config.d.ts.map +1 -0
- package/dist/utils/logging/config.js +188 -0
- package/dist/utils/logging/config.js.map +1 -0
- package/dist/utils/logging/config.spec.d.ts +2 -0
- package/dist/utils/logging/config.spec.d.ts.map +1 -0
- package/dist/utils/logging/config.spec.js +233 -0
- package/dist/utils/logging/config.spec.js.map +1 -0
- package/dist/utils/logging/console-facade.d.ts +93 -0
- package/dist/utils/logging/console-facade.d.ts.map +1 -0
- package/dist/utils/logging/console-facade.js +295 -0
- package/dist/utils/logging/console-facade.js.map +1 -0
- package/dist/utils/logging/console-facade.spec.d.ts +2 -0
- package/dist/utils/logging/console-facade.spec.d.ts.map +1 -0
- package/dist/utils/logging/console-facade.spec.js +143 -0
- package/dist/utils/logging/console-facade.spec.js.map +1 -0
- package/dist/utils/logging/correlation.d.ts +139 -0
- package/dist/utils/logging/correlation.d.ts.map +1 -0
- package/dist/utils/logging/correlation.js +410 -0
- package/dist/utils/logging/correlation.js.map +1 -0
- package/dist/utils/logging/correlation.spec.d.ts +2 -0
- package/dist/utils/logging/correlation.spec.d.ts.map +1 -0
- package/dist/utils/logging/correlation.spec.js +449 -0
- package/dist/utils/logging/correlation.spec.js.map +1 -0
- package/dist/utils/logging/formatters.d.ts +70 -0
- package/dist/utils/logging/formatters.d.ts.map +1 -0
- package/dist/utils/logging/formatters.js +186 -0
- package/dist/utils/logging/formatters.js.map +1 -0
- package/dist/utils/logging/formatters.spec.d.ts +2 -0
- package/dist/utils/logging/formatters.spec.d.ts.map +1 -0
- package/dist/utils/logging/formatters.spec.js +356 -0
- package/dist/utils/logging/formatters.spec.js.map +1 -0
- package/dist/utils/logging/health-monitor.d.ts +216 -0
- package/dist/utils/logging/health-monitor.d.ts.map +1 -0
- package/dist/utils/logging/health-monitor.js +760 -0
- package/dist/utils/logging/health-monitor.js.map +1 -0
- package/dist/utils/logging/health-monitor.spec.d.ts +2 -0
- package/dist/utils/logging/health-monitor.spec.d.ts.map +1 -0
- package/dist/utils/logging/health-monitor.spec.js +305 -0
- package/dist/utils/logging/health-monitor.spec.js.map +1 -0
- package/dist/utils/logging/index.d.ts +100 -0
- package/dist/utils/logging/index.d.ts.map +1 -0
- package/dist/utils/logging/index.js +186 -0
- package/dist/utils/logging/index.js.map +1 -0
- package/dist/utils/logging/index.spec.d.ts +2 -0
- package/dist/utils/logging/index.spec.d.ts.map +1 -0
- package/dist/utils/logging/index.spec.js +214 -0
- package/dist/utils/logging/index.spec.js.map +1 -0
- package/dist/utils/logging/integration.spec.d.ts +2 -0
- package/dist/utils/logging/integration.spec.d.ts.map +1 -0
- package/dist/utils/logging/integration.spec.js +312 -0
- package/dist/utils/logging/integration.spec.js.map +1 -0
- package/dist/utils/logging/log-method-factory.d.ts +43 -0
- package/dist/utils/logging/log-method-factory.d.ts.map +1 -0
- package/dist/utils/logging/log-method-factory.js +176 -0
- package/dist/utils/logging/log-method-factory.js.map +1 -0
- package/dist/utils/logging/log-method-factory.spec.d.ts +2 -0
- package/dist/utils/logging/log-method-factory.spec.d.ts.map +1 -0
- package/dist/utils/logging/log-method-factory.spec.js +428 -0
- package/dist/utils/logging/log-method-factory.spec.js.map +1 -0
- package/dist/utils/logging/log-query.d.ts +275 -0
- package/dist/utils/logging/log-query.d.ts.map +1 -0
- package/dist/utils/logging/log-query.js +621 -0
- package/dist/utils/logging/log-query.js.map +1 -0
- package/dist/utils/logging/log-query.spec.d.ts +2 -0
- package/dist/utils/logging/log-query.spec.d.ts.map +1 -0
- package/dist/utils/logging/log-query.spec.js +737 -0
- package/dist/utils/logging/log-query.spec.js.map +1 -0
- package/dist/utils/logging/logger-provider.d.ts +73 -0
- package/dist/utils/logging/logger-provider.d.ts.map +1 -0
- package/dist/utils/logging/logger-provider.js +298 -0
- package/dist/utils/logging/logger-provider.js.map +1 -0
- package/dist/utils/logging/logger-provider.spec.d.ts +2 -0
- package/dist/utils/logging/logger-provider.spec.d.ts.map +1 -0
- package/dist/utils/logging/logger-provider.spec.js +204 -0
- package/dist/utils/logging/logger-provider.spec.js.map +1 -0
- package/dist/utils/logging/performance.d.ts +147 -0
- package/dist/utils/logging/performance.d.ts.map +1 -0
- package/dist/utils/logging/performance.js +520 -0
- package/dist/utils/logging/performance.js.map +1 -0
- package/dist/utils/logging/performance.spec.d.ts +2 -0
- package/dist/utils/logging/performance.spec.d.ts.map +1 -0
- package/dist/utils/logging/performance.spec.js +139 -0
- package/dist/utils/logging/performance.spec.js.map +1 -0
- package/dist/utils/logging/pino-logger.d.ts +22 -0
- package/dist/utils/logging/pino-logger.d.ts.map +1 -0
- package/dist/utils/logging/pino-logger.js +372 -0
- package/dist/utils/logging/pino-logger.js.map +1 -0
- package/dist/utils/logging/pino-logger.spec.d.ts +2 -0
- package/dist/utils/logging/pino-logger.spec.d.ts.map +1 -0
- package/dist/utils/logging/pino-logger.spec.js +294 -0
- package/dist/utils/logging/pino-logger.spec.js.map +1 -0
- package/dist/utils/logging/redaction.d.ts +38 -0
- package/dist/utils/logging/redaction.d.ts.map +1 -0
- package/dist/utils/logging/redaction.js +210 -0
- package/dist/utils/logging/redaction.js.map +1 -0
- package/dist/utils/logging/redaction.spec.d.ts +2 -0
- package/dist/utils/logging/redaction.spec.d.ts.map +1 -0
- package/dist/utils/logging/redaction.spec.js +338 -0
- package/dist/utils/logging/redaction.spec.js.map +1 -0
- package/dist/utils/logging/request-tracker.d.ts +189 -0
- package/dist/utils/logging/request-tracker.d.ts.map +1 -0
- package/dist/utils/logging/request-tracker.js +569 -0
- package/dist/utils/logging/request-tracker.js.map +1 -0
- package/dist/utils/logging/request-tracker.spec.d.ts +2 -0
- package/dist/utils/logging/request-tracker.spec.d.ts.map +1 -0
- package/dist/utils/logging/request-tracker.spec.js +868 -0
- package/dist/utils/logging/request-tracker.spec.js.map +1 -0
- package/dist/utils/logging/transports.d.ts +55 -0
- package/dist/utils/logging/transports.d.ts.map +1 -0
- package/dist/utils/logging/transports.js +252 -0
- package/dist/utils/logging/transports.js.map +1 -0
- package/dist/utils/logging/transports.spec.d.ts +2 -0
- package/dist/utils/logging/transports.spec.d.ts.map +1 -0
- package/dist/utils/logging/transports.spec.js +390 -0
- package/dist/utils/logging/transports.spec.js.map +1 -0
- package/dist/utils/logging/types.d.ts +173 -0
- package/dist/utils/logging/types.d.ts.map +1 -0
- package/dist/utils/logging/types.js +5 -0
- package/dist/utils/logging/types.js.map +1 -0
- package/dist/utils/message-queue.d.ts +64 -4
- package/dist/utils/message-queue.d.ts.map +1 -1
- package/dist/utils/message-queue.js +282 -28
- package/dist/utils/message-queue.js.map +1 -1
- package/dist/utils/paste-utils.spec.js +1 -1
- package/dist/utils/paste-utils.spec.js.map +1 -1
- package/dist/utils/prompt-processor.js +2 -2
- package/dist/utils/prompt-processor.js.map +1 -1
- package/dist/utils/tool-cancellation.spec.js.map +1 -1
- package/dist/utils/tool-result-display.d.ts +2 -2
- package/dist/utils/tool-result-display.d.ts.map +1 -1
- package/dist/utils/tool-result-display.js +3 -3
- package/dist/utils/tool-result-display.js.map +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +1 -1
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/utils/update-checker.spec.js +2 -2
- package/dist/utils/update-checker.spec.js.map +1 -1
- package/dist/vscode/extension-installer.js +1 -1
- package/dist/vscode/extension-installer.js.map +1 -1
- package/dist/vscode/extension-installer.spec.js +1 -1
- package/dist/vscode/extension-installer.spec.js.map +1 -1
- package/dist/vscode/protocol.spec.js +1 -1
- package/dist/vscode/protocol.spec.js.map +1 -1
- package/dist/vscode/vscode-server.d.ts.map +1 -1
- package/dist/vscode/vscode-server.js +2 -2
- package/dist/vscode/vscode-server.js.map +1 -1
- package/dist/vscode/vscode-server.spec.js.map +1 -1
- package/dist/wizard/config-wizard.d.ts.map +1 -1
- package/dist/wizard/config-wizard.js +16 -12
- package/dist/wizard/config-wizard.js.map +1 -1
- package/dist/wizard/steps/location-step.js +4 -4
- package/dist/wizard/steps/location-step.js.map +1 -1
- package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizard/steps/mcp-step.js +4 -4
- package/dist/wizard/steps/mcp-step.js.map +1 -1
- package/dist/wizard/steps/provider-step.d.ts.map +1 -1
- package/dist/wizard/steps/provider-step.js +4 -4
- package/dist/wizard/steps/provider-step.js.map +1 -1
- package/dist/wizard/steps/summary-step.d.ts.map +1 -1
- package/dist/wizard/steps/summary-step.js +2 -2
- package/dist/wizard/steps/summary-step.js.map +1 -1
- package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
- package/dist/wizard/templates/provider-templates.js +64 -0
- package/dist/wizard/templates/provider-templates.js.map +1 -1
- package/dist/wizard/validation-array.spec.js +1 -1
- package/dist/wizard/validation-array.spec.js.map +1 -1
- package/dist/wizard/validation.spec.js +1 -1
- package/dist/wizard/validation.spec.js.map +1 -1
- package/package.json +23 -22
- package/dist/commands/debugging.d.ts +0 -3
- package/dist/commands/debugging.d.ts.map +0 -1
- package/dist/commands/debugging.js +0 -23
- package/dist/commands/debugging.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../source/utils/logging/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.spec.d.ts","sourceRoot":"","sources":["../../../source/utils/logging/config.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, rmSync } from 'fs';
|
|
2
|
+
import { tmpdir } from 'os';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import test from 'ava';
|
|
5
|
+
console.log(`\nlogging/config.spec.ts`);
|
|
6
|
+
// Import configuration functions
|
|
7
|
+
import { createConfig, createDevelopmentConfig, createProductionConfig, createTestConfig, getDefaultLogDirectory, getEnvironmentConfig, normalizeLogLevel, validateLogLevel, } from './config.js';
|
|
8
|
+
// Create a temporary test directory
|
|
9
|
+
const testDir = join(tmpdir(), `nanocoder-config-test-${Date.now()}`);
|
|
10
|
+
test.before(() => {
|
|
11
|
+
mkdirSync(testDir, { recursive: true });
|
|
12
|
+
});
|
|
13
|
+
test.after.always(() => {
|
|
14
|
+
// Clean up test directory
|
|
15
|
+
if (existsSync(testDir)) {
|
|
16
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
test('getDefaultLogDirectory returns valid directory path', t => {
|
|
20
|
+
const directory = getDefaultLogDirectory();
|
|
21
|
+
t.is(typeof directory, 'string', 'Should return string');
|
|
22
|
+
t.true(directory.length > 0, 'Should not be empty');
|
|
23
|
+
t.true(directory.includes('logs'), 'Should include logs in path');
|
|
24
|
+
});
|
|
25
|
+
test('createDevelopmentConfig creates valid development config', t => {
|
|
26
|
+
const config = createDevelopmentConfig();
|
|
27
|
+
t.is(typeof config, 'object', 'Should return object');
|
|
28
|
+
t.is(config.level, 'debug', 'Should use debug level in development');
|
|
29
|
+
t.true(config.pretty, 'Should enable pretty printing in development');
|
|
30
|
+
t.true(config.correlation, 'Should enable correlation in development');
|
|
31
|
+
t.false(config.serialize, 'Should not serialize in development');
|
|
32
|
+
t.true(Array.isArray(config.redact), 'Should have redaction array');
|
|
33
|
+
});
|
|
34
|
+
test('createProductionConfig creates valid production config', t => {
|
|
35
|
+
const config = createProductionConfig();
|
|
36
|
+
t.is(typeof config, 'object', 'Should return object');
|
|
37
|
+
t.is(config.level, 'silent', 'Should use silent level in production (silent-by-default for CLI)');
|
|
38
|
+
t.false(config.pretty, 'Should disable pretty printing in production');
|
|
39
|
+
t.true(config.correlation, 'Should enable correlation in production');
|
|
40
|
+
t.true(config.serialize, 'Should serialize in production');
|
|
41
|
+
t.true(Array.isArray(config.redact), 'Should have redaction array');
|
|
42
|
+
});
|
|
43
|
+
test('createTestConfig creates valid test config', t => {
|
|
44
|
+
const config = createTestConfig();
|
|
45
|
+
t.is(typeof config, 'object', 'Should return object');
|
|
46
|
+
t.is(config.level, 'debug', 'Should use debug level in tests');
|
|
47
|
+
t.false(config.pretty, 'Should disable pretty printing in tests');
|
|
48
|
+
t.false(config.correlation, 'Should disable correlation in tests');
|
|
49
|
+
t.false(config.serialize, 'Should not serialize in tests');
|
|
50
|
+
});
|
|
51
|
+
test('getEnvironmentConfig detects environment correctly', t => {
|
|
52
|
+
// Test development environment
|
|
53
|
+
const originalEnv = process.env.NODE_ENV;
|
|
54
|
+
process.env.NODE_ENV = 'development';
|
|
55
|
+
const devConfig = getEnvironmentConfig();
|
|
56
|
+
t.is(devConfig.level, 'debug', 'Should detect development');
|
|
57
|
+
t.true(devConfig.pretty, 'Should enable pretty in development');
|
|
58
|
+
// Test production environment
|
|
59
|
+
process.env.NODE_ENV = 'production';
|
|
60
|
+
const prodConfig = getEnvironmentConfig();
|
|
61
|
+
t.is(prodConfig.level, 'silent', 'Should detect production (silent-by-default)');
|
|
62
|
+
t.false(prodConfig.pretty, 'Should disable pretty in production');
|
|
63
|
+
// Test test environment
|
|
64
|
+
process.env.NODE_ENV = 'test';
|
|
65
|
+
const testConfig = getEnvironmentConfig();
|
|
66
|
+
t.is(testConfig.level, 'debug', 'Should detect test');
|
|
67
|
+
t.is(testConfig.level, 'debug', 'Should use debug in test');
|
|
68
|
+
// Test unknown environment (should default to production/silent for CLI tools)
|
|
69
|
+
process.env.NODE_ENV = 'unknown';
|
|
70
|
+
const unknownConfig = getEnvironmentConfig();
|
|
71
|
+
t.is(unknownConfig.level, 'silent', 'Should default to silent for unknown (production default)');
|
|
72
|
+
// Restore original environment
|
|
73
|
+
process.env.NODE_ENV = originalEnv;
|
|
74
|
+
});
|
|
75
|
+
test('validateLogLevel validates log levels correctly', t => {
|
|
76
|
+
// Valid levels
|
|
77
|
+
t.true(validateLogLevel('trace'), 'Should accept trace');
|
|
78
|
+
t.true(validateLogLevel('debug'), 'Should accept debug');
|
|
79
|
+
t.true(validateLogLevel('info'), 'Should accept info');
|
|
80
|
+
t.true(validateLogLevel('warn'), 'Should accept warn');
|
|
81
|
+
t.true(validateLogLevel('error'), 'Should accept error');
|
|
82
|
+
t.true(validateLogLevel('fatal'), 'Should accept fatal');
|
|
83
|
+
t.true(validateLogLevel('silent'), 'Should accept silent');
|
|
84
|
+
// Invalid levels
|
|
85
|
+
t.false(validateLogLevel('invalid'), 'Should reject invalid');
|
|
86
|
+
t.false(validateLogLevel(''), 'Should reject empty');
|
|
87
|
+
t.false(validateLogLevel('info '), 'Should reject with space');
|
|
88
|
+
t.false(validateLogLevel(' info'), 'Should reject with leading space');
|
|
89
|
+
});
|
|
90
|
+
test('normalizeLogLevel normalizes log levels', t => {
|
|
91
|
+
// Valid levels should pass through
|
|
92
|
+
t.is(normalizeLogLevel('trace'), 'trace', 'Should pass trace');
|
|
93
|
+
t.is(normalizeLogLevel('debug'), 'debug', 'Should pass debug');
|
|
94
|
+
t.is(normalizeLogLevel('info'), 'info', 'Should pass info');
|
|
95
|
+
t.is(normalizeLogLevel('warn'), 'warn', 'Should pass warn');
|
|
96
|
+
t.is(normalizeLogLevel('error'), 'error', 'Should pass error');
|
|
97
|
+
t.is(normalizeLogLevel('fatal'), 'fatal', 'Should pass fatal');
|
|
98
|
+
t.is(normalizeLogLevel('silent'), 'silent', 'Should pass silent');
|
|
99
|
+
// Uppercase should be normalized
|
|
100
|
+
t.is(normalizeLogLevel('TRACE'), 'trace', 'Should normalize TRACE');
|
|
101
|
+
t.is(normalizeLogLevel('DEBUG'), 'debug', 'Should normalize DEBUG');
|
|
102
|
+
t.is(normalizeLogLevel('INFO'), 'info', 'Should normalize INFO');
|
|
103
|
+
t.is(normalizeLogLevel('WARN'), 'warn', 'Should normalize WARN');
|
|
104
|
+
t.is(normalizeLogLevel('ERROR'), 'error', 'Should normalize ERROR');
|
|
105
|
+
t.is(normalizeLogLevel('FATAL'), 'fatal', 'Should normalize FATAL');
|
|
106
|
+
t.is(normalizeLogLevel('SILENT'), 'silent', 'Should normalize SILENT');
|
|
107
|
+
// Invalid should default to info
|
|
108
|
+
t.is(normalizeLogLevel('INFO'), 'info', 'Should default to info');
|
|
109
|
+
});
|
|
110
|
+
test('createConfig merges overrides correctly', t => {
|
|
111
|
+
// Note: createConfig() uses getEnvironmentConfig()
|
|
112
|
+
// Tests run in NODE_ENV='test', which has correlation: false and serialize: false
|
|
113
|
+
const overrides = {
|
|
114
|
+
level: 'error',
|
|
115
|
+
pretty: true,
|
|
116
|
+
redact: ['token', 'password'],
|
|
117
|
+
};
|
|
118
|
+
const merged = createConfig(overrides);
|
|
119
|
+
t.is(merged.level, 'error', 'Should override level');
|
|
120
|
+
t.is(merged.pretty, true, 'Should override pretty');
|
|
121
|
+
t.deepEqual(merged.redact, ['token', 'password'], 'Should override redact');
|
|
122
|
+
t.is(merged.correlation, false, 'Should preserve correlation from test config');
|
|
123
|
+
t.is(merged.serialize, false, 'Should preserve serialize from test config');
|
|
124
|
+
});
|
|
125
|
+
test('createConfig handles missing overrides', t => {
|
|
126
|
+
const baseConfig = {
|
|
127
|
+
level: 'info',
|
|
128
|
+
pretty: true,
|
|
129
|
+
redact: ['apiKey'],
|
|
130
|
+
correlation: false,
|
|
131
|
+
serialize: false,
|
|
132
|
+
};
|
|
133
|
+
const result = createConfig(baseConfig);
|
|
134
|
+
t.notDeepEqual(result, baseConfig, 'Should return environment config with no overrides');
|
|
135
|
+
});
|
|
136
|
+
test('createConfig handles overrides correctly', t => {
|
|
137
|
+
const overrides = {
|
|
138
|
+
level: 'debug',
|
|
139
|
+
pretty: false,
|
|
140
|
+
};
|
|
141
|
+
t.notThrows(() => {
|
|
142
|
+
const result = createConfig(overrides);
|
|
143
|
+
t.is(typeof result, 'object', 'Should return object');
|
|
144
|
+
}, 'Should handle overrides');
|
|
145
|
+
});
|
|
146
|
+
test('createConfig handles partial overrides', t => {
|
|
147
|
+
const partialOverride = {
|
|
148
|
+
level: 'warn',
|
|
149
|
+
};
|
|
150
|
+
const result = createConfig(partialOverride);
|
|
151
|
+
t.is(result.level, 'warn', 'Should override specified field');
|
|
152
|
+
// Note: Other fields will depend on the environment config, not preserved from a base
|
|
153
|
+
});
|
|
154
|
+
test('createConfig validates log level in overrides', t => {
|
|
155
|
+
const invalidOverride = {
|
|
156
|
+
level: 'debug',
|
|
157
|
+
};
|
|
158
|
+
t.notThrows(() => {
|
|
159
|
+
const result = createConfig(invalidOverride);
|
|
160
|
+
t.is(typeof result, 'object', 'Should handle valid level');
|
|
161
|
+
}, 'Should handle valid log level');
|
|
162
|
+
});
|
|
163
|
+
test('createConfig overrides redact arrays correctly', t => {
|
|
164
|
+
const overrideWithArray = {
|
|
165
|
+
redact: ['password', 'secret'],
|
|
166
|
+
};
|
|
167
|
+
const result = createConfig(overrideWithArray);
|
|
168
|
+
// Should use override array, not merge
|
|
169
|
+
t.deepEqual(result.redact, ['password', 'secret'], 'Should replace redact array');
|
|
170
|
+
});
|
|
171
|
+
test('configuration respects environment variables', t => {
|
|
172
|
+
const originalLogLevel = process.env.NANOCODER_LOG_LEVEL;
|
|
173
|
+
const originalNodeEnv = process.env.NODE_ENV;
|
|
174
|
+
// Set environment variables
|
|
175
|
+
process.env.NANOCODER_LOG_LEVEL = 'error';
|
|
176
|
+
process.env.NODE_ENV = 'production';
|
|
177
|
+
try {
|
|
178
|
+
const config = getEnvironmentConfig();
|
|
179
|
+
t.is(config.level, 'error', 'Should use LOG_LEVEL from environment');
|
|
180
|
+
// Production config should be applied
|
|
181
|
+
t.false(config.pretty, 'Should apply production config');
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
// Restore environment variables
|
|
185
|
+
if (originalLogLevel) {
|
|
186
|
+
process.env.LOG_LEVEL = originalLogLevel;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
delete process.env.LOG_LEVEL;
|
|
190
|
+
}
|
|
191
|
+
process.env.NODE_ENV = originalNodeEnv;
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
test('createDevelopmentConfig includes sensible defaults', t => {
|
|
195
|
+
const config = createDevelopmentConfig();
|
|
196
|
+
// Check default redaction patterns
|
|
197
|
+
t.true(config.redact.includes('apiKey'), 'Should redact API keys by default');
|
|
198
|
+
t.true(config.redact.includes('token'), 'Should redact tokens by default');
|
|
199
|
+
t.true(config.redact.includes('password'), 'Should redact passwords by default');
|
|
200
|
+
// Check correlation settings
|
|
201
|
+
t.true(config.correlation, 'Should enable correlation in development');
|
|
202
|
+
// Note: Current implementation doesn't include transport configuration
|
|
203
|
+
// t.truthy(config.transport, 'Should have transport configuration');
|
|
204
|
+
// t.is(
|
|
205
|
+
// (config.transport as any)?.target,
|
|
206
|
+
// 'pino-pretty',
|
|
207
|
+
// 'Should use pretty transport in development',
|
|
208
|
+
// );
|
|
209
|
+
});
|
|
210
|
+
test('createProductionConfig includes production optimizations', t => {
|
|
211
|
+
const config = createProductionConfig();
|
|
212
|
+
// Check production-specific settings
|
|
213
|
+
t.true(config.serialize, 'Should serialize in production');
|
|
214
|
+
t.is(config.level, 'error', 'Should default to error in production');
|
|
215
|
+
// Check redaction patterns for production
|
|
216
|
+
t.true(config.redact.includes('email'), 'Should redact emails in production');
|
|
217
|
+
t.true(config.redact.includes('userId'), 'Should redact user IDs in production');
|
|
218
|
+
// Note: Current implementation doesn't include transport configuration
|
|
219
|
+
// t.truthy(config.transport, 'Should have transport configuration');
|
|
220
|
+
// t.is(
|
|
221
|
+
// (config.transport as any)?.target,
|
|
222
|
+
// 'pino-roll',
|
|
223
|
+
// 'Should use roll transport in production',
|
|
224
|
+
// );
|
|
225
|
+
});
|
|
226
|
+
test('createTestConfig minimizes output', t => {
|
|
227
|
+
const config = createTestConfig();
|
|
228
|
+
t.is(config.level, 'debug', 'Should be debug in tests');
|
|
229
|
+
t.false(config.pretty, 'Should disable pretty in tests');
|
|
230
|
+
t.false(config.correlation, 'Should disable correlation in tests');
|
|
231
|
+
t.false(config.serialize, 'Should disable serialization in tests');
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=config.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../../source/utils/logging/config.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console API facade for backward compatibility
|
|
3
|
+
* Provides drop-in replacement for console methods that routes through structured logging
|
|
4
|
+
*
|
|
5
|
+
* This allows gradual migration from console.log to structured logging
|
|
6
|
+
* without breaking existing code patterns
|
|
7
|
+
*/
|
|
8
|
+
import type { ConsoleArguments } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Console replacement that routes to structured logging
|
|
11
|
+
* Maintains the same API as global console but adds structured logging benefits
|
|
12
|
+
*/
|
|
13
|
+
declare const StructuredConsole: {
|
|
14
|
+
/**
|
|
15
|
+
* Replacement for console.log - routes to logger.info
|
|
16
|
+
* Accepts any number of arguments and formats them appropriately
|
|
17
|
+
*/
|
|
18
|
+
log: (...args: ConsoleArguments) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Replacement for console.error - routes to logger.error with error analysis
|
|
21
|
+
*/
|
|
22
|
+
error: (...args: ConsoleArguments) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Replacement for console.warn - routes to logger.warn
|
|
25
|
+
*/
|
|
26
|
+
warn: (...args: ConsoleArguments) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Replacement for console.info - routes to logger.info
|
|
29
|
+
*/
|
|
30
|
+
info: (...args: ConsoleArguments) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Replacement for console.debug - routes to logger.debug
|
|
33
|
+
*/
|
|
34
|
+
debug: (...args: ConsoleArguments) => void;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Global console replacement hook
|
|
38
|
+
* Can be used to temporarily replace global console for testing or specific modules
|
|
39
|
+
*/
|
|
40
|
+
export declare class ConsoleInterceptor {
|
|
41
|
+
private originalConsole;
|
|
42
|
+
private isActive;
|
|
43
|
+
constructor();
|
|
44
|
+
/**
|
|
45
|
+
* Replace global console with structured logging version
|
|
46
|
+
*/
|
|
47
|
+
activate(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Restore original global console
|
|
50
|
+
*/
|
|
51
|
+
deactivate: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Check if interceptor is active
|
|
54
|
+
*/
|
|
55
|
+
isInterceptorActive(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Execute a function with console temporarily replaced
|
|
58
|
+
*/
|
|
59
|
+
withStructuredConsole<T>(fn: () => T): T;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Global console interceptor instance
|
|
63
|
+
*/
|
|
64
|
+
export declare const globalConsoleInterceptor: ConsoleInterceptor;
|
|
65
|
+
/**
|
|
66
|
+
* Decorator to automatically route console calls in a function to structured logging
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
export declare function useStructuredConsoleDecorator(_target: unknown, _propertyName: string, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
70
|
+
/**
|
|
71
|
+
* Convenience function to create a module-scoped console
|
|
72
|
+
* Useful for gradual migration of individual modules
|
|
73
|
+
*/
|
|
74
|
+
export declare function createModuleConsole(moduleName: string): {
|
|
75
|
+
log: (...args: ConsoleArguments) => void;
|
|
76
|
+
error: (...args: ConsoleArguments) => void;
|
|
77
|
+
warn: (...args: ConsoleArguments) => void;
|
|
78
|
+
info: (...args: ConsoleArguments) => void;
|
|
79
|
+
debug: (...args: ConsoleArguments) => void;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Migration helper to identify console usage patterns
|
|
83
|
+
* Returns statistics about console method usage in the current execution
|
|
84
|
+
*/
|
|
85
|
+
export declare class ConsoleUsageTracker {
|
|
86
|
+
private usage;
|
|
87
|
+
constructor();
|
|
88
|
+
getUsageStats(): Record<string, number>;
|
|
89
|
+
reportUsage(): void;
|
|
90
|
+
restore(): void;
|
|
91
|
+
}
|
|
92
|
+
export { StructuredConsole, useStructuredConsoleDecorator as useStructuredConsole, };
|
|
93
|
+
//# sourceMappingURL=console-facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-facade.d.ts","sourceRoot":"","sources":["../../../source/utils/logging/console-facade.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAC,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAuHjE;;;GAGG;AACH,QAAA,MAAM,iBAAiB;IACtB;;;OAGG;mBA7Gc,gBAAgB;IAgHjC;;OAEG;qBAlHc,gBAAgB;IAqHjC;;OAEG;oBAvHc,gBAAgB;IA0HjC;;OAEG;oBA5Hc,gBAAgB;IA+HjC;;OAEG;qBAjIc,gBAAgB;CAmIjC,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAkB;;IAMlC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAchB;;OAEG;IAEH,UAAU,QAAO,IAAI,CAiBnB;IAEF;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;CAQxC;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,oBAA2B,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,kBAAkB,GAC5B,kBAAkB,GAAG,IAAI,CAiB3B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM;mBAErC,gBAAgB;qBAWd,gBAAgB;oBAWjB,gBAAgB;oBAWhB,gBAAgB;qBAWf,gBAAgB;EAYlC;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,KAAK,CAAkC;;IAiB/C,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIvC,WAAW,IAAI,IAAI;IAWnB,OAAO,IAAI,IAAI;CAOf;AAGD,OAAO,EACN,iBAAiB,EACjB,6BAA6B,IAAI,oBAAoB,GACrD,CAAC"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console API facade for backward compatibility
|
|
3
|
+
* Provides drop-in replacement for console methods that routes through structured logging
|
|
4
|
+
*
|
|
5
|
+
* This allows gradual migration from console.log to structured logging
|
|
6
|
+
* without breaking existing code patterns
|
|
7
|
+
*/
|
|
8
|
+
import { createErrorInfo } from '../../utils/error-formatter.js';
|
|
9
|
+
import { generateCorrelationId, getLogger, withNewCorrelationContext, } from '../../utils/logging/index.js';
|
|
10
|
+
// Get logger instance directly to avoid circular dependencies
|
|
11
|
+
const logger = getLogger();
|
|
12
|
+
/**
|
|
13
|
+
* Create a console method with specific logging level and special handling
|
|
14
|
+
* This factory reduces code duplication across different console methods
|
|
15
|
+
*/
|
|
16
|
+
function createConsoleMethod(level, options) {
|
|
17
|
+
const { specialErrorHandling = false, isInfoMethod = false } = options || {};
|
|
18
|
+
return (...args) => {
|
|
19
|
+
const _correlationId = generateCorrelationId();
|
|
20
|
+
withNewCorrelationContext(context => {
|
|
21
|
+
if (args.length === 0) {
|
|
22
|
+
logger[level](`Empty console.${level} call`, {
|
|
23
|
+
correlationId: context.id,
|
|
24
|
+
source: 'console-facade',
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Special handling for Error objects in console.error
|
|
29
|
+
if (specialErrorHandling &&
|
|
30
|
+
args.length === 1 &&
|
|
31
|
+
args[0] instanceof Error) {
|
|
32
|
+
const errorInfo = createErrorInfo(args[0], undefined, _correlationId);
|
|
33
|
+
logger.error('Error logged via console.error', {
|
|
34
|
+
errorInfo,
|
|
35
|
+
correlationId: context.id,
|
|
36
|
+
source: 'console-facade',
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Handle single argument case
|
|
41
|
+
if (args.length === 1) {
|
|
42
|
+
const arg = args[0];
|
|
43
|
+
if (typeof arg === 'string') {
|
|
44
|
+
logger[level](arg, {
|
|
45
|
+
correlationId: context.id,
|
|
46
|
+
source: 'console-facade',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else if (typeof arg === 'object' && arg !== null) {
|
|
50
|
+
const message = `${level === 'error' ? 'Error' : 'Object'} logged via console.${level}`;
|
|
51
|
+
logger[level](message, {
|
|
52
|
+
object: arg,
|
|
53
|
+
correlationId: context.id,
|
|
54
|
+
source: 'console-facade',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logger[level](String(arg), {
|
|
59
|
+
correlationId: context.id,
|
|
60
|
+
source: 'console-facade',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Multiple arguments - join strings and log objects separately
|
|
66
|
+
const strings = args.filter(arg => typeof arg === 'string');
|
|
67
|
+
const objects = args.filter(arg => typeof arg === 'object' && arg !== null);
|
|
68
|
+
const primitives = args.filter(arg => typeof arg !== 'string' && typeof arg !== 'object');
|
|
69
|
+
let message = strings.join(' ');
|
|
70
|
+
if (primitives.length > 0) {
|
|
71
|
+
message += ' ' + primitives.map(String).join(' ');
|
|
72
|
+
}
|
|
73
|
+
const logData = {
|
|
74
|
+
correlationId: context.id,
|
|
75
|
+
source: 'console-facade',
|
|
76
|
+
argumentCount: args.length,
|
|
77
|
+
stringArgs: strings.length,
|
|
78
|
+
objectArgs: objects.length,
|
|
79
|
+
primitiveArgs: primitives.length,
|
|
80
|
+
};
|
|
81
|
+
if (objects.length > 0) {
|
|
82
|
+
logData.objects = objects;
|
|
83
|
+
}
|
|
84
|
+
// Check for error-like objects that aren't Error instances (only for error level)
|
|
85
|
+
if (level === 'error') {
|
|
86
|
+
const errorLikeObjects = objects.filter(obj => obj &&
|
|
87
|
+
typeof obj === 'object' &&
|
|
88
|
+
('message' in obj || 'error' in obj || 'err' in obj));
|
|
89
|
+
if (errorLikeObjects.length > 0) {
|
|
90
|
+
logData.errorLikeObjects = errorLikeObjects;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Use appropriate logger level (info for both log and info methods)
|
|
94
|
+
const loggerLevel = isInfoMethod ? 'info' : level;
|
|
95
|
+
logger[loggerLevel](message || `console.${level} called`, logData);
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Console replacement that routes to structured logging
|
|
101
|
+
* Maintains the same API as global console but adds structured logging benefits
|
|
102
|
+
*/
|
|
103
|
+
const StructuredConsole = {
|
|
104
|
+
/**
|
|
105
|
+
* Replacement for console.log - routes to logger.info
|
|
106
|
+
* Accepts any number of arguments and formats them appropriately
|
|
107
|
+
*/
|
|
108
|
+
log: createConsoleMethod('info', { isInfoMethod: true }),
|
|
109
|
+
/**
|
|
110
|
+
* Replacement for console.error - routes to logger.error with error analysis
|
|
111
|
+
*/
|
|
112
|
+
error: createConsoleMethod('error', { specialErrorHandling: true }),
|
|
113
|
+
/**
|
|
114
|
+
* Replacement for console.warn - routes to logger.warn
|
|
115
|
+
*/
|
|
116
|
+
warn: createConsoleMethod('warn'),
|
|
117
|
+
/**
|
|
118
|
+
* Replacement for console.info - routes to logger.info
|
|
119
|
+
*/
|
|
120
|
+
info: createConsoleMethod('info', { isInfoMethod: true }),
|
|
121
|
+
/**
|
|
122
|
+
* Replacement for console.debug - routes to logger.debug
|
|
123
|
+
*/
|
|
124
|
+
debug: createConsoleMethod('debug'),
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Global console replacement hook
|
|
128
|
+
* Can be used to temporarily replace global console for testing or specific modules
|
|
129
|
+
*/
|
|
130
|
+
export class ConsoleInterceptor {
|
|
131
|
+
originalConsole;
|
|
132
|
+
isActive = false;
|
|
133
|
+
constructor() {
|
|
134
|
+
this.originalConsole = { ...console };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Replace global console with structured logging version
|
|
138
|
+
*/
|
|
139
|
+
activate() {
|
|
140
|
+
if (this.isActive) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
console.log = StructuredConsole.log;
|
|
144
|
+
console.error = StructuredConsole.error;
|
|
145
|
+
console.warn = StructuredConsole.warn;
|
|
146
|
+
console.info = StructuredConsole.info;
|
|
147
|
+
console.debug = StructuredConsole.debug;
|
|
148
|
+
this.isActive = true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Restore original global console
|
|
152
|
+
*/
|
|
153
|
+
deactivate = () => {
|
|
154
|
+
if (!this.isActive) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
158
|
+
console.log = this.originalConsole.log;
|
|
159
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
160
|
+
console.error = this.originalConsole.error;
|
|
161
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
162
|
+
console.warn = this.originalConsole.warn;
|
|
163
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
164
|
+
console.info = this.originalConsole.info;
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
166
|
+
console.debug = this.originalConsole.debug;
|
|
167
|
+
this.isActive = false;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Check if interceptor is active
|
|
171
|
+
*/
|
|
172
|
+
isInterceptorActive() {
|
|
173
|
+
return this.isActive;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Execute a function with console temporarily replaced
|
|
177
|
+
*/
|
|
178
|
+
withStructuredConsole(fn) {
|
|
179
|
+
this.activate();
|
|
180
|
+
try {
|
|
181
|
+
return fn();
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
this.deactivate();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Global console interceptor instance
|
|
190
|
+
*/
|
|
191
|
+
export const globalConsoleInterceptor = new ConsoleInterceptor();
|
|
192
|
+
/**
|
|
193
|
+
* Decorator to automatically route console calls in a function to structured logging
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
export function useStructuredConsoleDecorator(_target, _propertyName, descriptor) {
|
|
197
|
+
const originalMethod = descriptor.value;
|
|
198
|
+
if (typeof originalMethod === 'function') {
|
|
199
|
+
descriptor.value = function (...args) {
|
|
200
|
+
return globalConsoleInterceptor.withStructuredConsole(() => {
|
|
201
|
+
return Reflect.apply(originalMethod, this, args);
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
return descriptor;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Convenience function to create a module-scoped console
|
|
209
|
+
* Useful for gradual migration of individual modules
|
|
210
|
+
*/
|
|
211
|
+
export function createModuleConsole(moduleName) {
|
|
212
|
+
return {
|
|
213
|
+
log: (...args) => {
|
|
214
|
+
logger.info(`[${moduleName}] ${args.filter(a => typeof a === 'string').join(' ')}`, {
|
|
215
|
+
moduleName,
|
|
216
|
+
allArgs: args,
|
|
217
|
+
correlationId: generateCorrelationId(),
|
|
218
|
+
source: 'module-console',
|
|
219
|
+
});
|
|
220
|
+
},
|
|
221
|
+
error: (...args) => {
|
|
222
|
+
logger.error(`[${moduleName}] ${args.filter(a => typeof a === 'string').join(' ')}`, {
|
|
223
|
+
moduleName,
|
|
224
|
+
allArgs: args,
|
|
225
|
+
correlationId: generateCorrelationId(),
|
|
226
|
+
source: 'module-console',
|
|
227
|
+
});
|
|
228
|
+
},
|
|
229
|
+
warn: (...args) => {
|
|
230
|
+
logger.warn(`[${moduleName}] ${args.filter(a => typeof a === 'string').join(' ')}`, {
|
|
231
|
+
moduleName,
|
|
232
|
+
allArgs: args,
|
|
233
|
+
correlationId: generateCorrelationId(),
|
|
234
|
+
source: 'module-console',
|
|
235
|
+
});
|
|
236
|
+
},
|
|
237
|
+
info: (...args) => {
|
|
238
|
+
logger.info(`[${moduleName}] ${args.filter(a => typeof a === 'string').join(' ')}`, {
|
|
239
|
+
moduleName,
|
|
240
|
+
allArgs: args,
|
|
241
|
+
correlationId: generateCorrelationId(),
|
|
242
|
+
source: 'module-console',
|
|
243
|
+
});
|
|
244
|
+
},
|
|
245
|
+
debug: (...args) => {
|
|
246
|
+
logger.debug(`[${moduleName}] ${args.filter(a => typeof a === 'string').join(' ')}`, {
|
|
247
|
+
moduleName,
|
|
248
|
+
allArgs: args,
|
|
249
|
+
correlationId: generateCorrelationId(),
|
|
250
|
+
source: 'module-console',
|
|
251
|
+
});
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Migration helper to identify console usage patterns
|
|
257
|
+
* Returns statistics about console method usage in the current execution
|
|
258
|
+
*/
|
|
259
|
+
export class ConsoleUsageTracker {
|
|
260
|
+
usage = new Map();
|
|
261
|
+
constructor() {
|
|
262
|
+
// Track console method calls by wrapping them
|
|
263
|
+
const methods = ['log', 'error', 'warn', 'info', 'debug'];
|
|
264
|
+
methods.forEach(method => {
|
|
265
|
+
const original = console[method];
|
|
266
|
+
this.usage.set(method, 0);
|
|
267
|
+
console[method] = (...args) => {
|
|
268
|
+
this.usage.set(method, (this.usage.get(method) || 0) + 1);
|
|
269
|
+
return original.apply(console, args);
|
|
270
|
+
};
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
getUsageStats() {
|
|
274
|
+
return Object.fromEntries(this.usage);
|
|
275
|
+
}
|
|
276
|
+
reportUsage() {
|
|
277
|
+
const stats = this.getUsageStats();
|
|
278
|
+
const total = Object.values(stats).reduce((sum, count) => sum + count, 0);
|
|
279
|
+
logger.info('Console usage statistics', {
|
|
280
|
+
total,
|
|
281
|
+
methodBreakdown: stats,
|
|
282
|
+
source: 'console-usage-tracker',
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
restore() {
|
|
286
|
+
// This would need to restore the original console methods
|
|
287
|
+
// Implementation depends on how the original methods are stored
|
|
288
|
+
logger.info('Console usage tracker deactivated', {
|
|
289
|
+
source: 'console-usage-tracker',
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Export for testing purposes only
|
|
294
|
+
export { StructuredConsole, useStructuredConsoleDecorator as useStructuredConsole, };
|
|
295
|
+
//# sourceMappingURL=console-facade.js.map
|