@gguf/coder 0.3.1 → 0.3.2
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/package.json +2 -2
- package/pnpm-workspace.yaml +15 -0
- package/color_picker.html +0 -36
- package/scripts/extract-changelog.js +0 -73
- package/scripts/fetch-models.js +0 -143
- package/scripts/test.sh +0 -40
- package/scripts/update-homebrew-formula.sh +0 -125
- package/scripts/update-nix-version.sh +0 -157
- package/source/ai-sdk-client/AISDKClient.spec.ts +0 -117
- package/source/ai-sdk-client/AISDKClient.ts +0 -155
- package/source/ai-sdk-client/chat/chat-handler.spec.ts +0 -121
- package/source/ai-sdk-client/chat/chat-handler.ts +0 -276
- package/source/ai-sdk-client/chat/streaming-handler.spec.ts +0 -173
- package/source/ai-sdk-client/chat/streaming-handler.ts +0 -110
- package/source/ai-sdk-client/chat/tool-processor.spec.ts +0 -92
- package/source/ai-sdk-client/chat/tool-processor.ts +0 -70
- package/source/ai-sdk-client/converters/message-converter.spec.ts +0 -220
- package/source/ai-sdk-client/converters/message-converter.ts +0 -113
- package/source/ai-sdk-client/converters/tool-converter.spec.ts +0 -90
- package/source/ai-sdk-client/converters/tool-converter.ts +0 -46
- package/source/ai-sdk-client/error-handling/error-extractor.spec.ts +0 -55
- package/source/ai-sdk-client/error-handling/error-extractor.ts +0 -15
- package/source/ai-sdk-client/error-handling/error-parser.spec.ts +0 -169
- package/source/ai-sdk-client/error-handling/error-parser.ts +0 -161
- package/source/ai-sdk-client/index.ts +0 -7
- package/source/ai-sdk-client/providers/provider-factory.spec.ts +0 -71
- package/source/ai-sdk-client/providers/provider-factory.ts +0 -41
- package/source/ai-sdk-client/types.ts +0 -9
- package/source/ai-sdk-client-empty-message.spec.ts +0 -141
- package/source/ai-sdk-client-error-handling.spec.ts +0 -186
- package/source/ai-sdk-client-maxretries.spec.ts +0 -114
- package/source/ai-sdk-client-preparestep.spec.ts +0 -279
- package/source/app/App.spec.tsx +0 -32
- package/source/app/App.tsx +0 -480
- package/source/app/components/AppContainer.spec.tsx +0 -96
- package/source/app/components/AppContainer.tsx +0 -56
- package/source/app/components/ChatInterface.spec.tsx +0 -163
- package/source/app/components/ChatInterface.tsx +0 -144
- package/source/app/components/ModalSelectors.spec.tsx +0 -141
- package/source/app/components/ModalSelectors.tsx +0 -135
- package/source/app/helpers.spec.ts +0 -97
- package/source/app/helpers.ts +0 -63
- package/source/app/index.ts +0 -4
- package/source/app/types.ts +0 -39
- package/source/app/utils/appUtils.ts +0 -294
- package/source/app/utils/conversationState.ts +0 -310
- package/source/app.spec.tsx +0 -244
- package/source/cli.spec.ts +0 -73
- package/source/cli.tsx +0 -51
- package/source/client-factory.spec.ts +0 -48
- package/source/client-factory.ts +0 -178
- package/source/command-parser.spec.ts +0 -127
- package/source/command-parser.ts +0 -36
- package/source/commands/checkpoint.spec.tsx +0 -277
- package/source/commands/checkpoint.tsx +0 -366
- package/source/commands/clear.tsx +0 -22
- package/source/commands/custom-commands.tsx +0 -121
- package/source/commands/exit.ts +0 -21
- package/source/commands/export.spec.tsx +0 -131
- package/source/commands/export.tsx +0 -79
- package/source/commands/help.tsx +0 -120
- package/source/commands/index.ts +0 -17
- package/source/commands/init.tsx +0 -339
- package/source/commands/lsp-command.spec.tsx +0 -281
- package/source/commands/lsp.tsx +0 -120
- package/source/commands/mcp-command.spec.tsx +0 -313
- package/source/commands/mcp.tsx +0 -162
- package/source/commands/model-database.spec.tsx +0 -758
- package/source/commands/model-database.tsx +0 -418
- package/source/commands/model.ts +0 -12
- package/source/commands/provider.ts +0 -12
- package/source/commands/setup-config.tsx +0 -16
- package/source/commands/simple-commands.spec.tsx +0 -175
- package/source/commands/status.ts +0 -12
- package/source/commands/theme.ts +0 -12
- package/source/commands/update.spec.tsx +0 -261
- package/source/commands/update.tsx +0 -201
- package/source/commands/usage.spec.tsx +0 -495
- package/source/commands/usage.tsx +0 -100
- package/source/commands.spec.ts +0 -436
- package/source/commands.ts +0 -83
- package/source/components/assistant-message.spec.tsx +0 -796
- package/source/components/assistant-message.tsx +0 -34
- package/source/components/bash-execution-indicator.tsx +0 -21
- package/source/components/cancelling-indicator.tsx +0 -16
- package/source/components/chat-queue.spec.tsx +0 -83
- package/source/components/chat-queue.tsx +0 -36
- package/source/components/checkpoint-display.spec.tsx +0 -219
- package/source/components/checkpoint-display.tsx +0 -126
- package/source/components/checkpoint-selector.spec.tsx +0 -173
- package/source/components/checkpoint-selector.tsx +0 -173
- package/source/components/development-mode-indicator.spec.tsx +0 -268
- package/source/components/development-mode-indicator.tsx +0 -38
- package/source/components/message-box.spec.tsx +0 -427
- package/source/components/message-box.tsx +0 -87
- package/source/components/model-selector.tsx +0 -132
- package/source/components/provider-selector.tsx +0 -75
- package/source/components/random-spinner.tsx +0 -19
- package/source/components/security-disclaimer.tsx +0 -73
- package/source/components/status-connection-display.spec.tsx +0 -133
- package/source/components/status.tsx +0 -267
- package/source/components/theme-selector.tsx +0 -126
- package/source/components/tool-confirmation.tsx +0 -190
- package/source/components/tool-execution-indicator.tsx +0 -33
- package/source/components/tool-message.tsx +0 -85
- package/source/components/ui/titled-box.spec.tsx +0 -207
- package/source/components/ui/titled-box.tsx +0 -57
- package/source/components/usage/progress-bar.spec.tsx +0 -398
- package/source/components/usage/progress-bar.tsx +0 -30
- package/source/components/usage/usage-display.spec.tsx +0 -780
- package/source/components/usage/usage-display.tsx +0 -291
- package/source/components/user-input.spec.tsx +0 -327
- package/source/components/user-input.tsx +0 -533
- package/source/components/user-message.spec.tsx +0 -230
- package/source/components/user-message.tsx +0 -84
- package/source/components/welcome-message.tsx +0 -76
- package/source/config/env-substitution.ts +0 -65
- package/source/config/index.spec.ts +0 -171
- package/source/config/index.ts +0 -154
- package/source/config/paths.spec.ts +0 -241
- package/source/config/paths.ts +0 -55
- package/source/config/preferences.ts +0 -51
- package/source/config/themes.ts +0 -315
- package/source/constants.ts +0 -130
- package/source/context/mode-context.spec.ts +0 -79
- package/source/context/mode-context.ts +0 -24
- package/source/custom-commands/executor.spec.ts +0 -142
- package/source/custom-commands/executor.ts +0 -64
- package/source/custom-commands/loader.spec.ts +0 -314
- package/source/custom-commands/loader.ts +0 -153
- package/source/custom-commands/parser.ts +0 -196
- package/source/hooks/chat-handler/conversation/conversation-loop.spec.ts +0 -39
- package/source/hooks/chat-handler/conversation/conversation-loop.tsx +0 -511
- package/source/hooks/chat-handler/conversation/tool-executor.spec.ts +0 -50
- package/source/hooks/chat-handler/conversation/tool-executor.tsx +0 -109
- package/source/hooks/chat-handler/index.ts +0 -12
- package/source/hooks/chat-handler/state/streaming-state.spec.ts +0 -26
- package/source/hooks/chat-handler/state/streaming-state.ts +0 -19
- package/source/hooks/chat-handler/types.ts +0 -38
- package/source/hooks/chat-handler/useChatHandler.spec.tsx +0 -321
- package/source/hooks/chat-handler/useChatHandler.tsx +0 -194
- package/source/hooks/chat-handler/utils/context-checker.spec.ts +0 -60
- package/source/hooks/chat-handler/utils/context-checker.tsx +0 -73
- package/source/hooks/chat-handler/utils/message-helpers.spec.ts +0 -42
- package/source/hooks/chat-handler/utils/message-helpers.tsx +0 -36
- package/source/hooks/chat-handler/utils/tool-filters.spec.ts +0 -109
- package/source/hooks/chat-handler/utils/tool-filters.ts +0 -64
- package/source/hooks/useAppHandlers.tsx +0 -291
- package/source/hooks/useAppInitialization.tsx +0 -422
- package/source/hooks/useAppState.tsx +0 -311
- package/source/hooks/useDirectoryTrust.tsx +0 -98
- package/source/hooks/useInputState.ts +0 -414
- package/source/hooks/useModeHandlers.tsx +0 -302
- package/source/hooks/useNonInteractiveMode.ts +0 -140
- package/source/hooks/useTerminalWidth.tsx +0 -81
- package/source/hooks/useTheme.ts +0 -18
- package/source/hooks/useToolHandler.tsx +0 -349
- package/source/hooks/useUIState.ts +0 -61
- package/source/init/agents-template-generator.ts +0 -421
- package/source/init/existing-rules-extractor.ts +0 -319
- package/source/init/file-scanner.spec.ts +0 -227
- package/source/init/file-scanner.ts +0 -238
- package/source/init/framework-detector.ts +0 -382
- package/source/init/language-detector.ts +0 -269
- package/source/init/project-analyzer.spec.ts +0 -231
- package/source/init/project-analyzer.ts +0 -458
- package/source/lsp/index.ts +0 -31
- package/source/lsp/lsp-client.spec.ts +0 -508
- package/source/lsp/lsp-client.ts +0 -487
- package/source/lsp/lsp-manager.spec.ts +0 -477
- package/source/lsp/lsp-manager.ts +0 -419
- package/source/lsp/protocol.spec.ts +0 -502
- package/source/lsp/protocol.ts +0 -360
- package/source/lsp/server-discovery.spec.ts +0 -654
- package/source/lsp/server-discovery.ts +0 -515
- package/source/markdown-parser/html-entities.spec.ts +0 -88
- package/source/markdown-parser/html-entities.ts +0 -45
- package/source/markdown-parser/index.spec.ts +0 -281
- package/source/markdown-parser/index.ts +0 -126
- package/source/markdown-parser/table-parser.spec.ts +0 -133
- package/source/markdown-parser/table-parser.ts +0 -114
- package/source/markdown-parser/utils.spec.ts +0 -70
- package/source/markdown-parser/utils.ts +0 -13
- package/source/mcp/mcp-client.spec.ts +0 -81
- package/source/mcp/mcp-client.ts +0 -625
- package/source/mcp/transport-factory.spec.ts +0 -406
- package/source/mcp/transport-factory.ts +0 -312
- package/source/message-handler.ts +0 -67
- package/source/model-database/database-engine.spec.ts +0 -494
- package/source/model-database/database-engine.ts +0 -50
- package/source/model-database/model-database.spec.ts +0 -363
- package/source/model-database/model-database.ts +0 -91
- package/source/model-database/model-engine.spec.ts +0 -447
- package/source/model-database/model-engine.ts +0 -65
- package/source/model-database/model-fetcher.spec.ts +0 -583
- package/source/model-database/model-fetcher.ts +0 -330
- package/source/models/index.ts +0 -1
- package/source/models/models-cache.spec.ts +0 -214
- package/source/models/models-cache.ts +0 -78
- package/source/models/models-dev-client.spec.ts +0 -379
- package/source/models/models-dev-client.ts +0 -329
- package/source/models/models-types.ts +0 -68
- package/source/prompt-history.ts +0 -155
- package/source/security/command-injection.spec.ts +0 -240
- package/source/services/checkpoint-manager.spec.ts +0 -523
- package/source/services/checkpoint-manager.ts +0 -466
- package/source/services/file-snapshot.spec.ts +0 -569
- package/source/services/file-snapshot.ts +0 -220
- package/source/test-utils/render-with-theme.tsx +0 -48
- package/source/tokenization/index.ts +0 -1
- package/source/tokenization/tokenizer-factory.spec.ts +0 -170
- package/source/tokenization/tokenizer-factory.ts +0 -125
- package/source/tokenization/tokenizers/anthropic-tokenizer.spec.ts +0 -200
- package/source/tokenization/tokenizers/anthropic-tokenizer.ts +0 -43
- package/source/tokenization/tokenizers/fallback-tokenizer.spec.ts +0 -236
- package/source/tokenization/tokenizers/fallback-tokenizer.ts +0 -26
- package/source/tokenization/tokenizers/llama-tokenizer.spec.ts +0 -224
- package/source/tokenization/tokenizers/llama-tokenizer.ts +0 -41
- package/source/tokenization/tokenizers/openai-tokenizer.spec.ts +0 -184
- package/source/tokenization/tokenizers/openai-tokenizer.ts +0 -57
- package/source/tool-calling/index.ts +0 -5
- package/source/tool-calling/json-parser.spec.ts +0 -639
- package/source/tool-calling/json-parser.ts +0 -247
- package/source/tool-calling/tool-parser.spec.ts +0 -395
- package/source/tool-calling/tool-parser.ts +0 -120
- package/source/tool-calling/xml-parser.spec.ts +0 -662
- package/source/tool-calling/xml-parser.ts +0 -289
- package/source/tools/execute-bash.spec.tsx +0 -353
- package/source/tools/execute-bash.tsx +0 -219
- package/source/tools/execute-function.spec.ts +0 -130
- package/source/tools/fetch-url.spec.tsx +0 -342
- package/source/tools/fetch-url.tsx +0 -172
- package/source/tools/find-files.spec.tsx +0 -924
- package/source/tools/find-files.tsx +0 -293
- package/source/tools/index.ts +0 -102
- package/source/tools/lsp-get-diagnostics.tsx +0 -192
- package/source/tools/needs-approval.spec.ts +0 -282
- package/source/tools/read-file.spec.tsx +0 -801
- package/source/tools/read-file.tsx +0 -387
- package/source/tools/search-file-contents.spec.tsx +0 -1273
- package/source/tools/search-file-contents.tsx +0 -293
- package/source/tools/string-replace.spec.tsx +0 -730
- package/source/tools/string-replace.tsx +0 -548
- package/source/tools/tool-manager.ts +0 -210
- package/source/tools/tool-registry.spec.ts +0 -415
- package/source/tools/tool-registry.ts +0 -228
- package/source/tools/web-search.tsx +0 -223
- package/source/tools/write-file.spec.tsx +0 -559
- package/source/tools/write-file.tsx +0 -228
- package/source/types/app.ts +0 -37
- package/source/types/checkpoint.ts +0 -48
- package/source/types/commands.ts +0 -46
- package/source/types/components.ts +0 -27
- package/source/types/config.ts +0 -103
- package/source/types/core-connection-status.spec.ts +0 -67
- package/source/types/core.ts +0 -181
- package/source/types/hooks.ts +0 -50
- package/source/types/index.ts +0 -12
- package/source/types/markdown-parser.ts +0 -11
- package/source/types/mcp.ts +0 -52
- package/source/types/system.ts +0 -16
- package/source/types/tokenization.ts +0 -41
- package/source/types/ui.ts +0 -40
- package/source/types/usage.ts +0 -58
- package/source/types/utils.ts +0 -16
- package/source/usage/calculator.spec.ts +0 -385
- package/source/usage/calculator.ts +0 -104
- package/source/usage/storage.spec.ts +0 -703
- package/source/usage/storage.ts +0 -238
- package/source/usage/tracker.spec.ts +0 -456
- package/source/usage/tracker.ts +0 -102
- package/source/utils/atomic-deletion.spec.ts +0 -194
- package/source/utils/atomic-deletion.ts +0 -127
- package/source/utils/bounded-map.spec.ts +0 -300
- package/source/utils/bounded-map.ts +0 -193
- package/source/utils/checkpoint-utils.spec.ts +0 -222
- package/source/utils/checkpoint-utils.ts +0 -92
- package/source/utils/error-formatter.spec.ts +0 -169
- package/source/utils/error-formatter.ts +0 -194
- package/source/utils/file-autocomplete.spec.ts +0 -173
- package/source/utils/file-autocomplete.ts +0 -196
- package/source/utils/file-cache.spec.ts +0 -309
- package/source/utils/file-cache.ts +0 -195
- package/source/utils/file-content-loader.spec.ts +0 -180
- package/source/utils/file-content-loader.ts +0 -179
- package/source/utils/file-mention-handler.spec.ts +0 -261
- package/source/utils/file-mention-handler.ts +0 -84
- package/source/utils/file-mention-parser.spec.ts +0 -182
- package/source/utils/file-mention-parser.ts +0 -170
- package/source/utils/fuzzy-matching.spec.ts +0 -149
- package/source/utils/fuzzy-matching.ts +0 -146
- package/source/utils/indentation-normalizer.spec.ts +0 -216
- package/source/utils/indentation-normalizer.ts +0 -76
- package/source/utils/installation-detector.spec.ts +0 -178
- package/source/utils/installation-detector.ts +0 -153
- package/source/utils/logging/config.spec.ts +0 -311
- package/source/utils/logging/config.ts +0 -210
- package/source/utils/logging/console-facade.spec.ts +0 -184
- package/source/utils/logging/console-facade.ts +0 -384
- package/source/utils/logging/correlation.spec.ts +0 -679
- package/source/utils/logging/correlation.ts +0 -474
- package/source/utils/logging/formatters.spec.ts +0 -464
- package/source/utils/logging/formatters.ts +0 -207
- package/source/utils/logging/health-monitor/alerts/alert-manager.spec.ts +0 -93
- package/source/utils/logging/health-monitor/alerts/alert-manager.ts +0 -79
- package/source/utils/logging/health-monitor/checks/configuration-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/configuration-check.ts +0 -43
- package/source/utils/logging/health-monitor/checks/logging-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/logging-check.ts +0 -58
- package/source/utils/logging/health-monitor/checks/memory-check.spec.ts +0 -100
- package/source/utils/logging/health-monitor/checks/memory-check.ts +0 -78
- package/source/utils/logging/health-monitor/checks/performance-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/performance-check.ts +0 -56
- package/source/utils/logging/health-monitor/checks/request-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/request-check.ts +0 -76
- package/source/utils/logging/health-monitor/core/health-check-runner.spec.ts +0 -70
- package/source/utils/logging/health-monitor/core/health-check-runner.ts +0 -138
- package/source/utils/logging/health-monitor/core/health-monitor.spec.ts +0 -58
- package/source/utils/logging/health-monitor/core/health-monitor.ts +0 -344
- package/source/utils/logging/health-monitor/core/scoring.spec.ts +0 -65
- package/source/utils/logging/health-monitor/core/scoring.ts +0 -91
- package/source/utils/logging/health-monitor/index.ts +0 -15
- package/source/utils/logging/health-monitor/instances.ts +0 -48
- package/source/utils/logging/health-monitor/middleware/http-middleware.spec.ts +0 -141
- package/source/utils/logging/health-monitor/middleware/http-middleware.ts +0 -75
- package/source/utils/logging/health-monitor/types.ts +0 -126
- package/source/utils/logging/index.spec.ts +0 -284
- package/source/utils/logging/index.ts +0 -236
- package/source/utils/logging/integration.spec.ts +0 -441
- package/source/utils/logging/log-method-factory.spec.ts +0 -573
- package/source/utils/logging/log-method-factory.ts +0 -233
- package/source/utils/logging/log-query/aggregation/aggregator.spec.ts +0 -277
- package/source/utils/logging/log-query/aggregation/aggregator.ts +0 -159
- package/source/utils/logging/log-query/aggregation/facet-generator.spec.ts +0 -159
- package/source/utils/logging/log-query/aggregation/facet-generator.ts +0 -47
- package/source/utils/logging/log-query/index.ts +0 -23
- package/source/utils/logging/log-query/query/filter-predicates.spec.ts +0 -247
- package/source/utils/logging/log-query/query/filter-predicates.ts +0 -154
- package/source/utils/logging/log-query/query/query-builder.spec.ts +0 -182
- package/source/utils/logging/log-query/query/query-builder.ts +0 -151
- package/source/utils/logging/log-query/query/query-engine.spec.ts +0 -214
- package/source/utils/logging/log-query/query/query-engine.ts +0 -45
- package/source/utils/logging/log-query/storage/circular-buffer.spec.ts +0 -143
- package/source/utils/logging/log-query/storage/circular-buffer.ts +0 -75
- package/source/utils/logging/log-query/storage/index-manager.spec.ts +0 -150
- package/source/utils/logging/log-query/storage/index-manager.ts +0 -71
- package/source/utils/logging/log-query/storage/log-storage.spec.ts +0 -257
- package/source/utils/logging/log-query/storage/log-storage.ts +0 -80
- package/source/utils/logging/log-query/types.ts +0 -163
- package/source/utils/logging/log-query/utils/helpers.spec.ts +0 -263
- package/source/utils/logging/log-query/utils/helpers.ts +0 -72
- package/source/utils/logging/log-query/utils/sorting.spec.ts +0 -182
- package/source/utils/logging/log-query/utils/sorting.ts +0 -61
- package/source/utils/logging/logger-provider.spec.ts +0 -262
- package/source/utils/logging/logger-provider.ts +0 -362
- package/source/utils/logging/performance.spec.ts +0 -209
- package/source/utils/logging/performance.ts +0 -757
- package/source/utils/logging/pino-logger.spec.ts +0 -425
- package/source/utils/logging/pino-logger.ts +0 -514
- package/source/utils/logging/redaction.spec.ts +0 -490
- package/source/utils/logging/redaction.ts +0 -267
- package/source/utils/logging/request-tracker.spec.ts +0 -1198
- package/source/utils/logging/request-tracker.ts +0 -803
- package/source/utils/logging/transports.spec.ts +0 -505
- package/source/utils/logging/transports.ts +0 -305
- package/source/utils/logging/types.ts +0 -216
- package/source/utils/message-builder.spec.ts +0 -179
- package/source/utils/message-builder.ts +0 -101
- package/source/utils/message-queue.tsx +0 -486
- package/source/utils/paste-detection.spec.ts +0 -69
- package/source/utils/paste-detection.ts +0 -124
- package/source/utils/paste-roundtrip.spec.ts +0 -442
- package/source/utils/paste-utils.spec.ts +0 -128
- package/source/utils/paste-utils.ts +0 -52
- package/source/utils/programming-language-helper.spec.ts +0 -74
- package/source/utils/programming-language-helper.ts +0 -32
- package/source/utils/prompt-assembly.spec.ts +0 -221
- package/source/utils/prompt-processor.ts +0 -173
- package/source/utils/tool-args-parser.spec.ts +0 -136
- package/source/utils/tool-args-parser.ts +0 -54
- package/source/utils/tool-cancellation.spec.ts +0 -230
- package/source/utils/tool-cancellation.ts +0 -28
- package/source/utils/tool-result-display.spec.tsx +0 -469
- package/source/utils/tool-result-display.tsx +0 -90
- package/source/utils/update-checker.spec.ts +0 -383
- package/source/utils/update-checker.ts +0 -183
- package/source/wizard/config-wizard.spec.tsx +0 -103
- package/source/wizard/config-wizard.tsx +0 -382
- package/source/wizard/steps/location-step.spec.tsx +0 -186
- package/source/wizard/steps/location-step.tsx +0 -147
- package/source/wizard/steps/mcp-step.spec.tsx +0 -607
- package/source/wizard/steps/mcp-step.tsx +0 -632
- package/source/wizard/steps/provider-step.spec.tsx +0 -342
- package/source/wizard/steps/provider-step.tsx +0 -957
- package/source/wizard/steps/summary-step.spec.tsx +0 -749
- package/source/wizard/steps/summary-step.tsx +0 -228
- package/source/wizard/templates/mcp-templates.spec.ts +0 -613
- package/source/wizard/templates/mcp-templates.ts +0 -570
- package/source/wizard/templates/provider-templates.spec.ts +0 -152
- package/source/wizard/templates/provider-templates.ts +0 -485
- package/source/wizard/utils/fetch-cloud-models.spec.ts +0 -428
- package/source/wizard/utils/fetch-cloud-models.ts +0 -223
- package/source/wizard/utils/fetch-local-models.spec.ts +0 -297
- package/source/wizard/utils/fetch-local-models.ts +0 -192
- package/source/wizard/validation-array.spec.ts +0 -264
- package/source/wizard/validation.spec.ts +0 -373
- package/source/wizard/validation.ts +0 -232
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for sorting utilities
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import test from 'ava';
|
|
6
|
-
import {getLevelPriority, getSortValue, sortLogEntries} from './sorting.js';
|
|
7
|
-
import type {LogEntry, LogQuery} from '../types.js';
|
|
8
|
-
|
|
9
|
-
// Helper to create test log entry
|
|
10
|
-
function createLogEntry(overrides: Partial<LogEntry>): LogEntry {
|
|
11
|
-
return {
|
|
12
|
-
timestamp: new Date().toISOString(),
|
|
13
|
-
level: 'info',
|
|
14
|
-
message: 'Test message',
|
|
15
|
-
...overrides,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
test('getLevelPriority: returns correct priorities', t => {
|
|
20
|
-
t.is(getLevelPriority('fatal'), 0);
|
|
21
|
-
t.is(getLevelPriority('error'), 1);
|
|
22
|
-
t.is(getLevelPriority('warn'), 2);
|
|
23
|
-
t.is(getLevelPriority('info'), 3);
|
|
24
|
-
t.is(getLevelPriority('http'), 4);
|
|
25
|
-
t.is(getLevelPriority('debug'), 5);
|
|
26
|
-
t.is(getLevelPriority('trace'), 6);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('getLevelPriority: returns default for unknown level', t => {
|
|
30
|
-
t.is(getLevelPriority('unknown'), 6);
|
|
31
|
-
t.is(getLevelPriority('custom'), 6);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('getSortValue: timestamp returns milliseconds', t => {
|
|
35
|
-
const timestamp = '2025-01-01T12:00:00Z';
|
|
36
|
-
const entry = createLogEntry({timestamp});
|
|
37
|
-
|
|
38
|
-
const value = getSortValue(entry, 'timestamp');
|
|
39
|
-
|
|
40
|
-
t.is(typeof value, 'number');
|
|
41
|
-
t.is(value, new Date(timestamp).getTime());
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('getSortValue: level returns priority number', t => {
|
|
45
|
-
const entry = createLogEntry({level: 'error'});
|
|
46
|
-
|
|
47
|
-
const value = getSortValue(entry, 'level');
|
|
48
|
-
|
|
49
|
-
t.is(value, 1); // error priority
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('getSortValue: duration returns performance duration', t => {
|
|
53
|
-
const entry = createLogEntry({
|
|
54
|
-
performance: {duration: 1500},
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
const value = getSortValue(entry, 'duration');
|
|
58
|
-
|
|
59
|
-
t.is(value, 1500);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('getSortValue: duration returns 0 when missing', t => {
|
|
63
|
-
const entry = createLogEntry({});
|
|
64
|
-
|
|
65
|
-
const value = getSortValue(entry, 'duration');
|
|
66
|
-
|
|
67
|
-
t.is(value, 0);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
test('getSortValue: memory returns heap used', t => {
|
|
71
|
-
const entry = createLogEntry({
|
|
72
|
-
performance: {memory: {heapUsed: 50000000}},
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const value = getSortValue(entry, 'memory');
|
|
76
|
-
|
|
77
|
-
t.is(value, 50000000);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('getSortValue: memory returns 0 when missing', t => {
|
|
81
|
-
const entry = createLogEntry({});
|
|
82
|
-
|
|
83
|
-
const value = getSortValue(entry, 'memory');
|
|
84
|
-
|
|
85
|
-
t.is(value, 0);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
test('getSortValue: unknown sortBy returns 0', t => {
|
|
89
|
-
const entry = createLogEntry({});
|
|
90
|
-
|
|
91
|
-
const value = getSortValue(entry, 'unknown');
|
|
92
|
-
|
|
93
|
-
t.is(value, 0);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test('sortLogEntries: no sortBy returns original order', t => {
|
|
97
|
-
const entries = [
|
|
98
|
-
createLogEntry({message: '1'}),
|
|
99
|
-
createLogEntry({message: '2'}),
|
|
100
|
-
createLogEntry({message: '3'}),
|
|
101
|
-
];
|
|
102
|
-
const query: LogQuery = {};
|
|
103
|
-
|
|
104
|
-
const sorted = sortLogEntries([...entries], query);
|
|
105
|
-
|
|
106
|
-
t.deepEqual(sorted, entries);
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
test('sortLogEntries: timestamp ascending', t => {
|
|
110
|
-
const entries = [
|
|
111
|
-
createLogEntry({timestamp: '2025-01-03T00:00:00Z'}),
|
|
112
|
-
createLogEntry({timestamp: '2025-01-01T00:00:00Z'}),
|
|
113
|
-
createLogEntry({timestamp: '2025-01-02T00:00:00Z'}),
|
|
114
|
-
];
|
|
115
|
-
const query: LogQuery = {sortBy: 'timestamp', sortOrder: 'asc'};
|
|
116
|
-
|
|
117
|
-
const sorted = sortLogEntries([...entries], query);
|
|
118
|
-
|
|
119
|
-
t.is(sorted[0]?.timestamp, '2025-01-01T00:00:00Z');
|
|
120
|
-
t.is(sorted[1]?.timestamp, '2025-01-02T00:00:00Z');
|
|
121
|
-
t.is(sorted[2]?.timestamp, '2025-01-03T00:00:00Z');
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
test('sortLogEntries: timestamp descending', t => {
|
|
125
|
-
const entries = [
|
|
126
|
-
createLogEntry({timestamp: '2025-01-01T00:00:00Z'}),
|
|
127
|
-
createLogEntry({timestamp: '2025-01-03T00:00:00Z'}),
|
|
128
|
-
createLogEntry({timestamp: '2025-01-02T00:00:00Z'}),
|
|
129
|
-
];
|
|
130
|
-
const query: LogQuery = {sortBy: 'timestamp', sortOrder: 'desc'};
|
|
131
|
-
|
|
132
|
-
const sorted = sortLogEntries([...entries], query);
|
|
133
|
-
|
|
134
|
-
t.is(sorted[0]?.timestamp, '2025-01-03T00:00:00Z');
|
|
135
|
-
t.is(sorted[1]?.timestamp, '2025-01-02T00:00:00Z');
|
|
136
|
-
t.is(sorted[2]?.timestamp, '2025-01-01T00:00:00Z');
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
test('sortLogEntries: level ascending', t => {
|
|
140
|
-
const entries = [
|
|
141
|
-
createLogEntry({level: 'info'}),
|
|
142
|
-
createLogEntry({level: 'error'}),
|
|
143
|
-
createLogEntry({level: 'warn'}),
|
|
144
|
-
];
|
|
145
|
-
const query: LogQuery = {sortBy: 'level', sortOrder: 'asc'};
|
|
146
|
-
|
|
147
|
-
const sorted = sortLogEntries([...entries], query);
|
|
148
|
-
|
|
149
|
-
t.is(sorted[0]?.level, 'error'); // priority 1
|
|
150
|
-
t.is(sorted[1]?.level, 'warn'); // priority 2
|
|
151
|
-
t.is(sorted[2]?.level, 'info'); // priority 3
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
test('sortLogEntries: duration descending', t => {
|
|
155
|
-
const entries = [
|
|
156
|
-
createLogEntry({performance: {duration: 100}}),
|
|
157
|
-
createLogEntry({performance: {duration: 500}}),
|
|
158
|
-
createLogEntry({performance: {duration: 200}}),
|
|
159
|
-
];
|
|
160
|
-
const query: LogQuery = {sortBy: 'duration', sortOrder: 'desc'};
|
|
161
|
-
|
|
162
|
-
const sorted = sortLogEntries([...entries], query);
|
|
163
|
-
|
|
164
|
-
t.is(sorted[0]?.performance?.duration, 500);
|
|
165
|
-
t.is(sorted[1]?.performance?.duration, 200);
|
|
166
|
-
t.is(sorted[2]?.performance?.duration, 100);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
test('sortLogEntries: memory ascending', t => {
|
|
170
|
-
const entries = [
|
|
171
|
-
createLogEntry({performance: {memory: {heapUsed: 3000000}}}),
|
|
172
|
-
createLogEntry({performance: {memory: {heapUsed: 1000000}}}),
|
|
173
|
-
createLogEntry({performance: {memory: {heapUsed: 2000000}}}),
|
|
174
|
-
];
|
|
175
|
-
const query: LogQuery = {sortBy: 'memory', sortOrder: 'asc'};
|
|
176
|
-
|
|
177
|
-
const sorted = sortLogEntries([...entries], query);
|
|
178
|
-
|
|
179
|
-
t.is(sorted[0]?.performance?.memory?.heapUsed, 1000000);
|
|
180
|
-
t.is(sorted[1]?.performance?.memory?.heapUsed, 2000000);
|
|
181
|
-
t.is(sorted[2]?.performance?.memory?.heapUsed, 3000000);
|
|
182
|
-
});
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sorting utilities for log entries
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type {LogEntry, LogQuery} from '../types.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Get numeric value for sorting a log entry
|
|
9
|
-
*/
|
|
10
|
-
// biome-ignore lint/suspicious/noExplicitAny: Dynamic sort value type
|
|
11
|
-
export function getSortValue(entry: LogEntry, sortBy: string): any {
|
|
12
|
-
switch (sortBy) {
|
|
13
|
-
case 'timestamp':
|
|
14
|
-
return new Date(entry.timestamp).getTime();
|
|
15
|
-
case 'level':
|
|
16
|
-
return getLevelPriority(entry.level);
|
|
17
|
-
case 'duration':
|
|
18
|
-
return entry.performance?.duration || 0;
|
|
19
|
-
case 'memory':
|
|
20
|
-
return entry.performance?.memory?.heapUsed || 0;
|
|
21
|
-
default:
|
|
22
|
-
return 0;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Get numeric priority for log level (for sorting)
|
|
28
|
-
*/
|
|
29
|
-
export function getLevelPriority(level: string): number {
|
|
30
|
-
const priorities: Record<string, number> = {
|
|
31
|
-
fatal: 0,
|
|
32
|
-
error: 1,
|
|
33
|
-
warn: 2,
|
|
34
|
-
info: 3,
|
|
35
|
-
http: 4,
|
|
36
|
-
debug: 5,
|
|
37
|
-
trace: 6,
|
|
38
|
-
};
|
|
39
|
-
return priorities[level] ?? 6;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Sort log entries based on query parameters
|
|
44
|
-
*/
|
|
45
|
-
export function sortLogEntries(
|
|
46
|
-
entries: LogEntry[],
|
|
47
|
-
query: LogQuery,
|
|
48
|
-
): LogEntry[] {
|
|
49
|
-
if (!query.sortBy) {
|
|
50
|
-
return entries;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return entries.sort((a, b) => {
|
|
54
|
-
// biome-ignore lint/style/noNonNullAssertion: sortBy guaranteed to exist in this block
|
|
55
|
-
const aValue = getSortValue(a, query.sortBy!);
|
|
56
|
-
// biome-ignore lint/style/noNonNullAssertion: sortBy guaranteed to exist in this block
|
|
57
|
-
const bValue = getSortValue(b, query.sortBy!);
|
|
58
|
-
const comparison = aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
|
|
59
|
-
return query.sortOrder === 'desc' ? -comparison : comparison;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import test from 'ava';
|
|
2
|
-
|
|
3
|
-
// Implementation imports
|
|
4
|
-
import {LoggerProvider, loggerProvider} from './logger-provider.js';
|
|
5
|
-
import type {LoggerConfig} from './types.js';
|
|
6
|
-
|
|
7
|
-
test.beforeEach(() => {
|
|
8
|
-
// Reset the singleton instance before each test
|
|
9
|
-
const provider = LoggerProvider.getInstance();
|
|
10
|
-
provider.reset();
|
|
11
|
-
// Reset environment variables
|
|
12
|
-
delete process.env.NODE_ENV;
|
|
13
|
-
delete process.env.CODER_LOG_LEVEL;
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('LoggerProvider is a singleton', t => {
|
|
17
|
-
const provider1 = LoggerProvider.getInstance();
|
|
18
|
-
const provider2 = LoggerProvider.getInstance();
|
|
19
|
-
|
|
20
|
-
t.is(provider1, provider2, 'Should return the same instance');
|
|
21
|
-
t.true(provider1 instanceof LoggerProvider);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test('loggerProvider exports singleton instance', t => {
|
|
25
|
-
t.truthy(loggerProvider);
|
|
26
|
-
t.true(loggerProvider instanceof LoggerProvider);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('initializeLogger creates logger with default config', t => {
|
|
30
|
-
const provider = LoggerProvider.getInstance();
|
|
31
|
-
|
|
32
|
-
const logger = provider.initializeLogger();
|
|
33
|
-
|
|
34
|
-
t.truthy(logger, 'Should create logger instance');
|
|
35
|
-
t.truthy(typeof logger.info === 'function', 'Should have info method');
|
|
36
|
-
t.truthy(typeof logger.error === 'function', 'Should have error method');
|
|
37
|
-
t.truthy(typeof logger.warn === 'function', 'Should have warn method');
|
|
38
|
-
t.truthy(typeof logger.debug === 'function', 'Should have debug method');
|
|
39
|
-
t.truthy(typeof logger.fatal === 'function', 'Should have fatal method');
|
|
40
|
-
t.truthy(typeof logger.trace === 'function', 'Should have trace method');
|
|
41
|
-
t.truthy(typeof logger.http === 'function', 'Should have http method');
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('initializeLogger uses provided config', t => {
|
|
45
|
-
const provider = LoggerProvider.getInstance();
|
|
46
|
-
const config: Partial<LoggerConfig> = {
|
|
47
|
-
level: 'error',
|
|
48
|
-
pretty: true,
|
|
49
|
-
correlation: false,
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const logger = provider.initializeLogger(config);
|
|
53
|
-
const actualConfig = provider.getLoggerConfig();
|
|
54
|
-
|
|
55
|
-
if (actualConfig) {
|
|
56
|
-
t.is(actualConfig.level, 'error');
|
|
57
|
-
t.is(actualConfig.pretty, true);
|
|
58
|
-
t.is(actualConfig.correlation, false);
|
|
59
|
-
} else {
|
|
60
|
-
t.fail('Logger config should not be null');
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test('initializeLogger returns same logger on subsequent calls', t => {
|
|
65
|
-
const provider = LoggerProvider.getInstance();
|
|
66
|
-
|
|
67
|
-
const logger1 = provider.initializeLogger();
|
|
68
|
-
const logger2 = provider.initializeLogger();
|
|
69
|
-
|
|
70
|
-
t.is(logger1, logger2, 'Should return the same logger instance');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test('getLogger auto-initializes if not initialized', t => {
|
|
74
|
-
const provider = LoggerProvider.getInstance();
|
|
75
|
-
|
|
76
|
-
const logger = provider.getLogger();
|
|
77
|
-
|
|
78
|
-
t.truthy(logger, 'Should auto-initialize and return logger');
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
test('getLogger returns existing logger if initialized', t => {
|
|
82
|
-
const provider = LoggerProvider.getInstance();
|
|
83
|
-
|
|
84
|
-
const logger1 = provider.initializeLogger({level: 'warn'});
|
|
85
|
-
const logger2 = provider.getLogger();
|
|
86
|
-
|
|
87
|
-
t.is(logger1, logger2, 'Should return the same initialized logger');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
test('getLoggerConfig returns current configuration', t => {
|
|
91
|
-
const provider = LoggerProvider.getInstance();
|
|
92
|
-
|
|
93
|
-
// Should be null before initialization
|
|
94
|
-
t.is(provider.getLoggerConfig(), null);
|
|
95
|
-
|
|
96
|
-
const config: Partial<LoggerConfig> = {level: 'debug'};
|
|
97
|
-
provider.initializeLogger(config);
|
|
98
|
-
|
|
99
|
-
const actualConfig = provider.getLoggerConfig();
|
|
100
|
-
if (actualConfig) {
|
|
101
|
-
t.is(actualConfig.level, 'debug');
|
|
102
|
-
} else {
|
|
103
|
-
t.fail('Logger config should not be null');
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
test('createChildLogger creates child with bindings', t => {
|
|
108
|
-
const provider = LoggerProvider.getInstance();
|
|
109
|
-
|
|
110
|
-
provider.initializeLogger();
|
|
111
|
-
|
|
112
|
-
const bindings = {module: 'test', version: '1.0'};
|
|
113
|
-
const childLogger = provider.createChildLogger(bindings);
|
|
114
|
-
|
|
115
|
-
t.truthy(childLogger, 'Should create child logger');
|
|
116
|
-
t.truthy(
|
|
117
|
-
typeof childLogger.info === 'function',
|
|
118
|
-
'Child should have info method',
|
|
119
|
-
);
|
|
120
|
-
t.not(
|
|
121
|
-
childLogger === provider.getLogger(),
|
|
122
|
-
'Child should be different instance',
|
|
123
|
-
);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('isLevelEnabled checks log level', t => {
|
|
127
|
-
const provider = LoggerProvider.getInstance();
|
|
128
|
-
|
|
129
|
-
provider.initializeLogger({level: 'warn'});
|
|
130
|
-
|
|
131
|
-
t.true(provider.isLevelEnabled('warn'), 'Should enable warn level');
|
|
132
|
-
t.true(provider.isLevelEnabled('error'), 'Should enable error level');
|
|
133
|
-
t.true(provider.isLevelEnabled('info'), 'Should enable info level');
|
|
134
|
-
t.true(provider.isLevelEnabled('fatal'), 'Should enable fatal level');
|
|
135
|
-
t.true(provider.isLevelEnabled('debug'), 'Should enable debug level');
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
test('reset clears all state', t => {
|
|
139
|
-
const provider = LoggerProvider.getInstance();
|
|
140
|
-
|
|
141
|
-
// Initialize and use provider
|
|
142
|
-
provider.initializeLogger({level: 'debug'});
|
|
143
|
-
t.truthy(provider.getLogger(), 'Should have logger after initialization');
|
|
144
|
-
t.truthy(
|
|
145
|
-
provider.getLoggerConfig(),
|
|
146
|
-
'Should have config after initialization',
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
// Reset
|
|
150
|
-
provider.reset();
|
|
151
|
-
|
|
152
|
-
t.is(provider.getLoggerConfig(), null, 'Config should be null after reset');
|
|
153
|
-
|
|
154
|
-
// Should be able to initialize again
|
|
155
|
-
const newLogger = provider.initializeLogger({level: 'error'});
|
|
156
|
-
t.truthy(newLogger, 'Should create new logger after reset');
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
test('flush and end work correctly', async t => {
|
|
160
|
-
const provider = LoggerProvider.getInstance();
|
|
161
|
-
|
|
162
|
-
provider.initializeLogger();
|
|
163
|
-
|
|
164
|
-
await t.notThrowsAsync(async () => {
|
|
165
|
-
await provider.flush();
|
|
166
|
-
}, 'Flush should complete without errors');
|
|
167
|
-
|
|
168
|
-
await t.notThrowsAsync(async () => {
|
|
169
|
-
await provider.end();
|
|
170
|
-
}, 'End should complete without errors');
|
|
171
|
-
|
|
172
|
-
// After end, logger should be null
|
|
173
|
-
t.is(provider.getLoggerConfig(), null);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
test('createDefaultConfig handles environments correctly', t => {
|
|
177
|
-
const provider = LoggerProvider.getInstance();
|
|
178
|
-
|
|
179
|
-
// Test development environment
|
|
180
|
-
process.env.NODE_ENV = 'development';
|
|
181
|
-
provider.reset();
|
|
182
|
-
const devLogger = provider.initializeLogger();
|
|
183
|
-
const devConfig = provider.getLoggerConfig();
|
|
184
|
-
if (devConfig) {
|
|
185
|
-
t.is(devConfig.level, 'debug');
|
|
186
|
-
t.true(devConfig.pretty);
|
|
187
|
-
} else {
|
|
188
|
-
t.fail('Development config should not be null');
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// Test production environment
|
|
192
|
-
process.env.NODE_ENV = 'production';
|
|
193
|
-
provider.reset();
|
|
194
|
-
const prodLogger = provider.initializeLogger();
|
|
195
|
-
const prodConfig = provider.getLoggerConfig();
|
|
196
|
-
if (prodConfig) {
|
|
197
|
-
t.is(prodConfig.level, 'silent');
|
|
198
|
-
t.false(prodConfig.pretty);
|
|
199
|
-
} else {
|
|
200
|
-
t.fail('Production config should not be null');
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Test environment
|
|
204
|
-
process.env.NODE_ENV = 'test';
|
|
205
|
-
provider.reset();
|
|
206
|
-
const testLogger = provider.initializeLogger();
|
|
207
|
-
const testConfig = provider.getLoggerConfig();
|
|
208
|
-
if (testConfig) {
|
|
209
|
-
t.is(testConfig.level, 'silent');
|
|
210
|
-
} else {
|
|
211
|
-
t.fail('Test config should not be null');
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
test('createDefaultConfig respects LOG_LEVEL environment variable', t => {
|
|
216
|
-
const provider = LoggerProvider.getInstance();
|
|
217
|
-
|
|
218
|
-
process.env.CODER_LOG_LEVEL = 'warn';
|
|
219
|
-
process.env.NODE_ENV = 'production';
|
|
220
|
-
|
|
221
|
-
provider.initializeLogger();
|
|
222
|
-
const config = provider.getLoggerConfig();
|
|
223
|
-
|
|
224
|
-
if (config) {
|
|
225
|
-
t.is(config.level, 'warn');
|
|
226
|
-
} else {
|
|
227
|
-
t.fail('Config should not be null');
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
test('multiple providers share singleton state', t => {
|
|
232
|
-
const provider1 = LoggerProvider.getInstance();
|
|
233
|
-
const provider2 = LoggerProvider.getInstance();
|
|
234
|
-
|
|
235
|
-
provider1.initializeLogger({level: 'error'});
|
|
236
|
-
|
|
237
|
-
// Both should return the same config
|
|
238
|
-
const config1 = provider1.getLoggerConfig();
|
|
239
|
-
const config2 = provider2.getLoggerConfig();
|
|
240
|
-
|
|
241
|
-
if (config1 && config2) {
|
|
242
|
-
t.is(config1.level, 'error');
|
|
243
|
-
t.is(config2.level, 'error');
|
|
244
|
-
|
|
245
|
-
// Reset should affect both
|
|
246
|
-
provider1.reset();
|
|
247
|
-
t.is(provider1.getLoggerConfig(), null);
|
|
248
|
-
t.is(provider2.getLoggerConfig(), null);
|
|
249
|
-
} else {
|
|
250
|
-
t.fail('Configs should not be null');
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
test('provider handles empty initializeLogger calls', t => {
|
|
255
|
-
const provider = LoggerProvider.getInstance();
|
|
256
|
-
|
|
257
|
-
// Should not throw when called with no arguments
|
|
258
|
-
t.notThrows(() => {
|
|
259
|
-
const logger = provider.initializeLogger();
|
|
260
|
-
t.truthy(logger);
|
|
261
|
-
});
|
|
262
|
-
});
|