From f70682863a54d3b85c0e2c643c580b07aaec93ec Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 09:45:11 -0400 Subject: [PATCH 01/10] Delete local packages --- packages/README.md | 12 -- packages/barebone-logger-testing/README.md | 177 ---------------- packages/barebone-logger-testing/package.json | 39 ---- packages/barebone-logger-testing/src/index.ts | 5 - .../src/mocks/createMockLogger.ts | 14 -- .../barebone-logger-testing/tsconfig.json | 12 -- packages/barebone-logger/README.md | 191 ------------------ packages/barebone-logger/jest.config.js | 34 ---- packages/barebone-logger/package.json | 42 ---- packages/barebone-logger/src/LogManager.ts | 32 --- packages/barebone-logger/src/Logger.ts | 17 -- .../barebone-logger/src/LoggingContext.ts | 8 - packages/barebone-logger/src/NoOpLogger.ts | 24 --- .../src/__tests__/LogManager.test.ts | 61 ------ .../src/__tests__/NoOpLogger.test.ts | 23 --- .../src/__tests__/pingLog.test.ts | 76 ------- packages/barebone-logger/src/index.ts | 5 - packages/barebone-logger/src/pingLog.ts | 25 --- packages/barebone-logger/tsconfig.json | 12 -- 19 files changed, 809 deletions(-) delete mode 100644 packages/barebone-logger-testing/README.md delete mode 100644 packages/barebone-logger-testing/package.json delete mode 100644 packages/barebone-logger-testing/src/index.ts delete mode 100644 packages/barebone-logger-testing/src/mocks/createMockLogger.ts delete mode 100644 packages/barebone-logger-testing/tsconfig.json delete mode 100644 packages/barebone-logger/README.md delete mode 100644 packages/barebone-logger/jest.config.js delete mode 100644 packages/barebone-logger/package.json delete mode 100644 packages/barebone-logger/src/LogManager.ts delete mode 100644 packages/barebone-logger/src/Logger.ts delete mode 100644 packages/barebone-logger/src/LoggingContext.ts delete mode 100644 packages/barebone-logger/src/NoOpLogger.ts delete mode 100644 packages/barebone-logger/src/__tests__/LogManager.test.ts delete mode 100644 packages/barebone-logger/src/__tests__/NoOpLogger.test.ts delete mode 100644 packages/barebone-logger/src/__tests__/pingLog.test.ts delete mode 100644 packages/barebone-logger/src/index.ts delete mode 100644 packages/barebone-logger/src/pingLog.ts delete mode 100644 packages/barebone-logger/tsconfig.json diff --git a/packages/README.md b/packages/README.md index ea8f0d26a..ea6802b87 100644 --- a/packages/README.md +++ b/packages/README.md @@ -30,18 +30,6 @@ VS Code extension — thin wrapper around the core library. **[📖 Extension README](./rangelink-vscode-extension/README.md)** | **[🔧 Development Guide](./rangelink-vscode-extension/DEVELOPMENT.md)** -### [`barebone-logger/`](./barebone-logger) - -Minimal logging interface — zero dependencies, framework-agnostic. Enables dependency injection for logging in any TypeScript project. - -**[📖 README](./barebone-logger/README.md)** - -### [`barebone-logger-testing/`](./barebone-logger-testing) - -Testing companion for barebone-logger — provides mock logger factory for Jest test suites. - -**[📖 README](./barebone-logger-testing/README.md)** - --- ## 📚 Understanding the Architecture diff --git a/packages/barebone-logger-testing/README.md b/packages/barebone-logger-testing/README.md deleted file mode 100644 index c608b148c..000000000 --- a/packages/barebone-logger-testing/README.md +++ /dev/null @@ -1,177 +0,0 @@ -# barebone-logger-testing - -> Testing utilities for barebone-logger — mock logger factory for Jest - -Testing companion package for [**barebone-logger**](../barebone-logger/README.md). Provides a zero-setup mock logger that tracks all logging calls for easy assertion in test suites. - -## Overview - -**barebone-logger-testing** eliminates test boilerplate when testing code that uses `barebone-logger`. The `createMockLogger()` factory returns a fully type-safe Jest mock that implements the `Logger` interface, allowing you to assert on log calls without implementing mock infrastructure yourself. - -## Key Features - -- **Zero-setup mock logger** — Works out of the box with Jest -- **Type-safe factory** — Returns `jest.Mocked` with full type safety -- **Eliminates test boilerplate** — No need to implement mocks manually -- **Tracks all calls** — Assert on debug, info, warn, error calls -- **Conventional pattern** — Follows testing companion conventions (like `@nestjs/testing`) - -## Installation - -```bash -# Coming soon to npm -npm install --save-dev barebone-logger-testing - -# Current: pnpm workspace -{ - "devDependencies": { - "barebone-logger-testing": "workspace:*" - } -} -``` - -## Quick Start - -### Basic Usage - -```typescript -import { createMockLogger } from 'barebone-logger-testing'; -import type { Logger } from 'barebone-logger'; - -describe('MyService', () => { - let mockLogger: Logger; - - beforeEach(() => { - mockLogger = createMockLogger(); - }); - - it('should log when processing data', () => { - const service = new MyService(mockLogger); - service.processData({ id: 123 }); - - // Assert logger was called - expect(mockLogger.info).toHaveBeenCalledWith({ fn: 'processData', id: 123 }, 'Processing data'); - }); -}); -``` - -### With Global Logger (setLogger/getLogger) - -```typescript -import { createMockLogger } from 'barebone-logger-testing'; -import { setLogger } from 'barebone-logger'; -import { myFunction } from './myFunction'; - -describe('myFunction', () => { - let mockLogger: jest.Mocked; - - beforeEach(() => { - mockLogger = createMockLogger(); - setLogger(mockLogger); - }); - - it('should log errors when operation fails', () => { - myFunction({ invalid: 'data' }); - - expect(mockLogger.error).toHaveBeenCalledTimes(1); - expect(mockLogger.error).toHaveBeenCalledWith( - expect.objectContaining({ fn: 'myFunction' }), - expect.stringContaining('Failed'), - ); - }); -}); -``` - -## API Reference - -### `createMockLogger(): jest.Mocked` - -Creates a mock logger with all methods stubbed as Jest mock functions. - -**Returns:** `jest.Mocked` with mocked methods: - -- `debug: jest.Mock` -- `info: jest.Mock` -- `warn: jest.Mock` -- `error: jest.Mock` - -All methods are initialized with `jest.fn()` and can be used with standard Jest assertions: - -- `toHaveBeenCalled()` -- `toHaveBeenCalledWith(...)` -- `toHaveBeenCalledTimes(n)` -- `.mock.calls` access - -## Common Patterns - -### Asserting Log Context - -```typescript -it('should include userId in log context', () => { - const mockLogger = createMockLogger(); - const service = new UserService(mockLogger); - - service.deleteUser(123); - - expect(mockLogger.warn).toHaveBeenCalledWith( - expect.objectContaining({ userId: 123 }), - expect.any(String), - ); -}); -``` - -### Checking Log Messages - -```typescript -it('should log specific warning message', () => { - const mockLogger = createMockLogger(); - const validator = new Validator(mockLogger); - - validator.validate({ incomplete: 'data' }); - - expect(mockLogger.warn).toHaveBeenCalledWith( - expect.any(Object), - 'Validation incomplete - missing required fields', - ); -}); -``` - -### Verifying No Logs - -```typescript -it('should not log when operation succeeds', () => { - const mockLogger = createMockLogger(); - const service = new QuietService(mockLogger); - - service.performOperation(); - - expect(mockLogger.error).not.toHaveBeenCalled(); - expect(mockLogger.warn).not.toHaveBeenCalled(); -}); -``` - -### Inspecting Multiple Calls - -```typescript -it('should log progress at each step', () => { - const mockLogger = createMockLogger(); - const processor = new BatchProcessor(mockLogger); - - processor.processBatch([1, 2, 3]); - - // Check all info calls - const infoCalls = (mockLogger.info as jest.Mock).mock.calls; - expect(infoCalls).toHaveLength(3); - expect(infoCalls[0][1]).toContain('Processing item 1'); - expect(infoCalls[1][1]).toContain('Processing item 2'); - expect(infoCalls[2][1]).toContain('Processing item 3'); -}); -``` - -## Related Packages - -This package is a testing companion for [**barebone-logger**](../barebone-logger/README.md), a minimal, zero-dependency logging interface for TypeScript projects. - -## License - -MIT diff --git a/packages/barebone-logger-testing/package.json b/packages/barebone-logger-testing/package.json deleted file mode 100644 index 169d04359..000000000 --- a/packages/barebone-logger-testing/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "barebone-logger-testing", - "version": "0.1.0", - "description": "Testing utilities and mocks for barebone-logger", - "keywords": [ - "barebone-logger", - "testing", - "mock", - "logger", - "jest", - "typescript" - ], - "homepage": "https://github.com/couimet/rangelink/tree/main/packages/barebone-logger-testing#readme", - "bugs": { - "url": "https://github.com/couimet/rangelink/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/couimet/rangelink", - "directory": "packages/barebone-logger-testing" - }, - "license": "MIT", - "author": "RangeLink Contributors", - "main": "./out/index.js", - "types": "./out/index.d.ts", - "scripts": { - "clean": "rm -rf out coverage *.tsbuildinfo", - "clean:all": "pnpm clean && rm -rf node_modules .eslintcache *.log", - "compile": "tsc --build" - }, - "dependencies": { - "barebone-logger": "workspace:*" - }, - "devDependencies": { - "@types/jest": "^29.5.0", - "@types/node": "^18.0.0", - "typescript": "^5.3.3" - } -} diff --git a/packages/barebone-logger-testing/src/index.ts b/packages/barebone-logger-testing/src/index.ts deleted file mode 100644 index 45eab5fa6..000000000 --- a/packages/barebone-logger-testing/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -// Mocks -export { createMockLogger } from './mocks/createMockLogger'; - -// Re-export types from dependencies for convenience -export type { Logger } from 'barebone-logger'; diff --git a/packages/barebone-logger-testing/src/mocks/createMockLogger.ts b/packages/barebone-logger-testing/src/mocks/createMockLogger.ts deleted file mode 100644 index 70203cda0..000000000 --- a/packages/barebone-logger-testing/src/mocks/createMockLogger.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { Logger } from 'barebone-logger'; - -/** - * Creates a mock Logger for testing - * All methods are jest.fn() mocks that can be asserted on - * - * @returns Mock Logger with jest.fn() for all methods - */ -export const createMockLogger = (): Logger => ({ - error: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - debug: jest.fn(), -}); diff --git a/packages/barebone-logger-testing/tsconfig.json b/packages/barebone-logger-testing/tsconfig.json deleted file mode 100644 index 6e794b3d5..000000000 --- a/packages/barebone-logger-testing/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "./src", - "outDir": "./out", - "declaration": true, - "declarationMap": true - }, - "include": ["src/**/*.ts"], - "exclude": ["node_modules", "out"], - "references": [{ "path": "../barebone-logger" }] -} diff --git a/packages/barebone-logger/README.md b/packages/barebone-logger/README.md deleted file mode 100644 index 4fb795b54..000000000 --- a/packages/barebone-logger/README.md +++ /dev/null @@ -1,191 +0,0 @@ -# barebone-logger - -> Minimal logging interface for TypeScript — zero dependencies, framework-agnostic - -## Overview - -**barebone-logger** provides a simple, type-safe logging interface that can be implemented by any logging backend. With zero runtime dependencies and a minimal API surface (just 4 methods), it's perfect for libraries and applications that need logging without coupling to specific logging frameworks. - -The package follows the dependency injection pattern, allowing you to swap logging implementations at runtime while keeping your code clean and testable. - -## Key Features - -- **Zero dependencies** — No runtime dependencies, minimal footprint -- **Framework-agnostic** — Works anywhere: VSCode extensions, Neovim plugins, IntelliJ extensions, web apps, Node.js services -- **Minimal interface** — Just 4 methods: `debug()`, `info()`, `warn()`, `error()` -- **Dependency injection** — Swap logger implementations at runtime -- **TypeScript-first** — Full type safety with structured log contexts -- **100% test coverage** — Reliable and well-tested - -## Installation - -```bash -# Coming soon to npm -npm install barebone-logger - -# Current: pnpm workspace -{ - "dependencies": { - "barebone-logger": "workspace:*" - } -} -``` - -## Quick Start - -### The Logger Interface - -```typescript -import type { Logger, LogContext } from 'barebone-logger'; - -interface Logger { - debug(context: LogContext, message: string): void; - info(context: LogContext, message: string): void; - warn(context: LogContext, message: string): void; - error(context: LogContext, message: string): void; -} - -type LogContext = Record; -``` - -### Implementing a Logger - -```typescript -import type { Logger, LogContext } from 'barebone-logger'; - -export class ConsoleLogger implements Logger { - debug(context: LogContext, message: string): void { - console.debug('[DEBUG]', message, context); - } - - info(context: LogContext, message: string): void { - console.info('[INFO]', message, context); - } - - warn(context: LogContext, message: string): void { - console.warn('[WARN]', message, context); - } - - error(context: LogContext, message: string): void { - console.error('[ERROR]', message, context); - } -} -``` - -### Using the Logger - -```typescript -import { setLogger, getLogger } from 'barebone-logger'; -import { ConsoleLogger } from './ConsoleLogger'; - -// Set your logger implementation once at startup -setLogger(new ConsoleLogger()); - -// Use it anywhere in your codebase -const logger = getLogger(); -logger.info({ userId: 123, action: 'login' }, 'User logged in successfully'); -``` - -### Library/Package Usage Pattern - -```typescript -import { getLogger } from 'barebone-logger'; - -export const processData = (data: unknown) => { - const logger = getLogger(); - - logger.debug({ fn: 'processData', data }, 'Processing data'); - - try { - // ... your logic - logger.info({ fn: 'processData' }, 'Data processed successfully'); - } catch (error) { - logger.error({ fn: 'processData', error }, 'Failed to process data'); - throw error; - } -}; -``` - -## API Reference - -### Logger Interface - -#### `debug(context, message)` - -Log debug-level information (verbose, diagnostic details). - -#### `info(context, message)` - -Log informational messages (normal operation events). - -#### `warn(context, message)` - -Log warning messages (potential issues, deprecated usage). - -#### `error(context, message)` - -Log error messages (failures, exceptions). - -**Parameters:** - -- `context: LogContext` — Structured data providing context (e.g., `{ userId, action, error }`) -- `message: string` — Human-readable log message - -### Global Logger Management - -#### `setLogger(logger: Logger): void` - -Set the global logger implementation. Call once at application startup. - -```typescript -import { setLogger } from 'barebone-logger'; -import { MyLogger } from './MyLogger'; - -setLogger(new MyLogger()); -``` - -#### `getLogger(): Logger` - -Get the current logger instance. Returns `NoOpLogger` if no logger has been set. - -```typescript -import { getLogger } from 'barebone-logger'; - -const logger = getLogger(); -logger.info({}, 'Application started'); -``` - -#### `pingLog(): void` - -Exercise all logger levels (DEBUG, INFO, WARN, ERROR) to verify logger is configured correctly. Useful for smoke testing logger initialization. - -```typescript -import { pingLog } from 'barebone-logger'; - -// After setLogger(), verify it works -pingLog(); -// Logs: -// DEBUG: Logger initialized -// INFO: Logger operational -// WARN: Logger warning test -// ERROR: Logger error test -``` - -### NoOpLogger - -Built-in no-op implementation that silently discards all logs. Used as default when no logger is set. - -```typescript -import { NoOpLogger } from 'barebone-logger'; - -const logger = new NoOpLogger(); -logger.info({}, 'This will be silently discarded'); -``` - -## Testing - -For testing code that uses `barebone-logger`, see the companion package [**barebone-logger-testing**](../barebone-logger-testing/README.md), which provides a zero-setup mock logger factory for Jest. - -## License - -MIT diff --git a/packages/barebone-logger/jest.config.js b/packages/barebone-logger/jest.config.js deleted file mode 100644 index 2ce44dca4..000000000 --- a/packages/barebone-logger/jest.config.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - - // Mock cleanup - automatic between tests - clearMocks: true, // Clear mock.calls, mock.instances, mock.contexts, mock.results - resetMocks: true, // Reset mock implementations to empty functions - restoreMocks: true, // Restore original implementations for jest.spyOn - - // Test execution settings - errorOnDeprecated: true, // Throw on deprecated API usage - testTimeout: 5000, // 5s timeout (explicit) - maxWorkers: '50%', // Use 50% of CPU cores - - roots: ['/src'], - testMatch: ['**/__tests__/**/*.test.ts'], - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.test.ts', - '!src/__tests__/**', - '!src/index.ts', - '!src/**/index.ts', - ], - coverageThreshold: { - global: { - branches: 95, - functions: 100, - lines: 95, - statements: 95, - }, - }, - coverageDirectory: 'coverage', - verbose: true, -}; diff --git a/packages/barebone-logger/package.json b/packages/barebone-logger/package.json deleted file mode 100644 index 90de18dd4..000000000 --- a/packages/barebone-logger/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "barebone-logger", - "version": "0.1.0", - "description": "Just the bones. Minimal logging interface with zero dependencies - bring your own implementation.", - "keywords": [ - "logger", - "logging", - "interface", - "agnostic", - "minimal", - "barebone", - "typescript", - "dependency-injection" - ], - "homepage": "https://github.com/couimet/rangelink/tree/main/packages/barebone-logger#readme", - "bugs": { - "url": "https://github.com/couimet/rangelink/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/couimet/rangelink", - "directory": "packages/barebone-logger" - }, - "license": "MIT", - "author": "RangeLink Contributors", - "main": "./out/index.js", - "types": "./out/index.d.ts", - "scripts": { - "clean": "rm -rf out coverage *.tsbuildinfo", - "clean:all": "pnpm clean && rm -rf node_modules .eslintcache *.log", - "compile": "tsc --build", - "test": "jest --coverage", - "watch": "tsc -p . --watch" - }, - "devDependencies": { - "@types/jest": "^29.5.0", - "@types/node": "^18.0.0", - "jest": "^29.5.0", - "ts-jest": "^29.1.0", - "typescript": "^5.3.3" - } -} diff --git a/packages/barebone-logger/src/LogManager.ts b/packages/barebone-logger/src/LogManager.ts deleted file mode 100644 index 2fbff4348..000000000 --- a/packages/barebone-logger/src/LogManager.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Logger } from './Logger'; -import { NoOpLogger } from './NoOpLogger'; - -/** - * Global logger management for the core library. - * By default, uses NoOpLogger (discards all messages). - * Applications can call setLogger() to provide a real logger implementation. - */ -let logger: Logger = new NoOpLogger(); - -/** - * Set the global logger instance. - * This should be called once at application startup. - * - * Automatically confirms the logger is working by emitting a debug message. - * - * @param newLogger The logger implementation to use - */ -export function setLogger(newLogger: Logger): void { - logger = newLogger; - // Confirm communication channel works immediately - logger.debug({ fn: 'setLogger' }, 'Logger initialized'); -} - -/** - * Get the current global logger instance. - * - * @returns The current logger (NoOpLogger by default) - */ -export function getLogger(): Logger { - return logger; -} diff --git a/packages/barebone-logger/src/Logger.ts b/packages/barebone-logger/src/Logger.ts deleted file mode 100644 index 6ab75a268..000000000 --- a/packages/barebone-logger/src/Logger.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { LoggingContext } from './LoggingContext'; - -/** - * Logger interface that allows for logging with context; it has been inspired by - * the pattern used in github.com/Octav-Labs/sonarwatch-portfolio and enforces - * the use of context for logging. - * - * As opposed to concrete implementations, this file only defines an interface - * that the core modules can use to log messages. The actual logging implementation - * is provided by the consuming application (e.g., VSCode extension). - */ -export interface Logger { - debug(ctx: LoggingContext, message: string): void; - info(ctx: LoggingContext, message: string): void; - warn(ctx: LoggingContext, message: string): void; - error(ctx: LoggingContext, message: string): void; -} diff --git a/packages/barebone-logger/src/LoggingContext.ts b/packages/barebone-logger/src/LoggingContext.ts deleted file mode 100644 index c3b16474e..000000000 --- a/packages/barebone-logger/src/LoggingContext.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * A logging context is a record of key-value pairs that can be used to add additional context to a log message. - * The only required key is `fn`, which is the name of the function that is logging the message. - */ -export interface LoggingContext { - fn: string; - [key: string]: unknown; -} diff --git a/packages/barebone-logger/src/NoOpLogger.ts b/packages/barebone-logger/src/NoOpLogger.ts deleted file mode 100644 index e3d272da4..000000000 --- a/packages/barebone-logger/src/NoOpLogger.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Logger } from './Logger'; -import { LoggingContext } from './LoggingContext'; - -/** - * No-operation logger implementation that discards all log messages. - * This is the default logger used by core until a real logger is provided. - */ -export class NoOpLogger implements Logger { - debug(_ctx: LoggingContext, _message: string): void { - // No operation - } - - info(_ctx: LoggingContext, _message: string): void { - // No operation - } - - warn(_ctx: LoggingContext, _message: string): void { - // No operation - } - - error(_ctx: LoggingContext, _message: string): void { - // No operation - } -} diff --git a/packages/barebone-logger/src/__tests__/LogManager.test.ts b/packages/barebone-logger/src/__tests__/LogManager.test.ts deleted file mode 100644 index 487b63ac1..000000000 --- a/packages/barebone-logger/src/__tests__/LogManager.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Logger } from '../Logger'; -import { getLogger, setLogger } from '../LogManager'; -import { NoOpLogger } from '../NoOpLogger'; - -describe('LogManager', () => { - it('should return NoOpLogger by default', () => { - const logger = getLogger(); - expect(logger).toBeInstanceOf(NoOpLogger); - }); - - it('should allow setting a custom logger', () => { - const mockLogger: Logger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - - setLogger(mockLogger); - const logger = getLogger(); - expect(logger).toBe(mockLogger); - - // Reset to default - setLogger(new NoOpLogger()); - }); - - it('should use the custom logger for logging', () => { - const mockLogger: Logger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - - setLogger(mockLogger); - const logger = getLogger(); - - logger.info({ fn: 'test' }, 'test message'); - expect(mockLogger.info).toHaveBeenCalledWith({ fn: 'test' }, 'test message'); - - // Reset to default - setLogger(new NoOpLogger()); - }); - - it('should call debug() immediately when logger is set to confirm initialization', () => { - const mockLogger: Logger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - - setLogger(mockLogger); - - // Verify debug was called immediately with initialization message - expect(mockLogger.debug).toHaveBeenCalledWith({ fn: 'setLogger' }, 'Logger initialized'); - - // Reset to default - setLogger(new NoOpLogger()); - }); -}); diff --git a/packages/barebone-logger/src/__tests__/NoOpLogger.test.ts b/packages/barebone-logger/src/__tests__/NoOpLogger.test.ts deleted file mode 100644 index 3ea458e6c..000000000 --- a/packages/barebone-logger/src/__tests__/NoOpLogger.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NoOpLogger } from '../NoOpLogger'; - -describe('NoOpLogger', () => { - it('should not throw when calling debug', () => { - const logger = new NoOpLogger(); - expect(() => logger.debug({ fn: 'test' }, 'message')).not.toThrow(); - }); - - it('should not throw when calling info', () => { - const logger = new NoOpLogger(); - expect(() => logger.info({ fn: 'test' }, 'message')).not.toThrow(); - }); - - it('should not throw when calling warn', () => { - const logger = new NoOpLogger(); - expect(() => logger.warn({ fn: 'test' }, 'message')).not.toThrow(); - }); - - it('should not throw when calling error', () => { - const logger = new NoOpLogger(); - expect(() => logger.error({ fn: 'test' }, 'message')).not.toThrow(); - }); -}); diff --git a/packages/barebone-logger/src/__tests__/pingLog.test.ts b/packages/barebone-logger/src/__tests__/pingLog.test.ts deleted file mode 100644 index 6e622d856..000000000 --- a/packages/barebone-logger/src/__tests__/pingLog.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { Logger } from '../Logger'; -import { setLogger } from '../LogManager'; -import { NoOpLogger } from '../NoOpLogger'; -import { pingLog } from '../pingLog'; - -describe('pingLog', () => { - let mockLogger: Logger; - - beforeEach(() => { - // Create fresh mock logger for each test - mockLogger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - }); - - afterEach(() => { - // Reset to default logger after each test - setLogger(new NoOpLogger()); - }); - - it('should exercise all logger levels (DEBUG, INFO, WARN, ERROR)', () => { - setLogger(mockLogger); - pingLog(); - - // Verify all 4 levels were called with correct messages - expect(mockLogger.debug).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for DEBUG'); - expect(mockLogger.info).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for INFO'); - expect(mockLogger.warn).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for WARN'); - expect(mockLogger.error).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for ERROR'); - }); - - it('should call each logger level exactly once', () => { - setLogger(mockLogger); - pingLog(); - - expect(mockLogger.debug).toHaveBeenCalledTimes(2); // Once from setLogger, once from pingLog - expect(mockLogger.info).toHaveBeenCalledTimes(1); - expect(mockLogger.warn).toHaveBeenCalledTimes(1); - expect(mockLogger.error).toHaveBeenCalledTimes(1); - }); - - it('should use the current logger from LogManager', () => { - const firstLogger = { ...mockLogger }; // Use mockLogger for first - const secondLogger: Logger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - - // Set first logger and call pingLog - setLogger(firstLogger); - pingLog(); - - // Verify first logger was used - expect(firstLogger.debug).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for DEBUG'); - - // Change to second logger and call pingLog again - setLogger(secondLogger); - pingLog(); - - // Verify second logger was used (not first) - expect(secondLogger.debug).toHaveBeenCalledWith({ fn: 'pingLog' }, 'Ping for DEBUG'); - // First logger should not have been called again - expect(firstLogger.debug).toHaveBeenCalledTimes(2); // Only initial call from setLogger + pingLog - }); - - it('should work with NoOpLogger without errors', () => { - // This tests that pingLog doesn't throw when using NoOpLogger - setLogger(new NoOpLogger()); - expect(() => pingLog()).not.toThrow(); - }); -}); diff --git a/packages/barebone-logger/src/index.ts b/packages/barebone-logger/src/index.ts deleted file mode 100644 index f96e3ad8b..000000000 --- a/packages/barebone-logger/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './Logger'; -export * from './LoggingContext'; -export * from './NoOpLogger'; -export * from './LogManager'; -export * from './pingLog'; diff --git a/packages/barebone-logger/src/pingLog.ts b/packages/barebone-logger/src/pingLog.ts deleted file mode 100644 index aed8223d0..000000000 --- a/packages/barebone-logger/src/pingLog.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { getLogger } from './LogManager'; - -/** - * Exercise all logger levels to verify the communication channel is working. - * - * This is primarily used by extension tests to confirm that the core library's - * logger is properly bound to the extension's output channel. When called, it - * emits test messages at all four log levels (DEBUG, INFO, WARN, ERROR). - * - * The extension can observe its outputChannel to verify all messages are received, - * confirming the core → outputChannel binding is functioning correctly. - * - * **Design Note:** This is a standalone function (not a Logger method) to keep - * the Logger interface clean and avoid feature coupling. It simply exercises - * the existing Logger interface without adding new methods. - */ -export const pingLog = (): void => { - const logger = getLogger(); - const context = { fn: 'pingLog' }; - - logger.debug(context, 'Ping for DEBUG'); - logger.info(context, 'Ping for INFO'); - logger.warn(context, 'Ping for WARN'); - logger.error(context, 'Ping for ERROR'); -}; diff --git a/packages/barebone-logger/tsconfig.json b/packages/barebone-logger/tsconfig.json deleted file mode 100644 index 3a7a1e7ca..000000000 --- a/packages/barebone-logger/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "./src", - "outDir": "./out", - "declaration": true, - "declarationMap": true, - "composite": true - }, - "include": ["src/**/*.ts"], - "exclude": ["node_modules", "out", "src/**/*.test.ts"] -} From 4098aa171e17230b8fd7e301a88695e7a80f49bd Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 09:46:46 -0400 Subject: [PATCH 02/10] Point to new packages instead of local ones --- packages/rangelink-core-ts/package.json | 4 +- packages/rangelink-core-ts/tsconfig.json | 3 +- .../rangelink-vscode-extension/package.json | 6 +- .../rangelink-vscode-extension/tsconfig.json | 2 +- pnpm-lock.yaml | 72 +++++++------------ 5 files changed, 33 insertions(+), 54 deletions(-) diff --git a/packages/rangelink-core-ts/package.json b/packages/rangelink-core-ts/package.json index 2af3acf67..f2a43d1f4 100644 --- a/packages/rangelink-core-ts/package.json +++ b/packages/rangelink-core-ts/package.json @@ -31,12 +31,12 @@ "watch": "tsc -p . --watch" }, "dependencies": { - "barebone-logger": "workspace:*" + "@couimet/logger-contract": "1.0.1-alpha.0" }, "devDependencies": { "@types/jest": "^29.5.0", "@types/node": "^18.0.0", - "barebone-logger-testing": "workspace:*", + "@couimet/logger-contract-testing": "1.0.1-alpha.0", "jest": "^29.5.0", "ts-jest": "^29.1.0", "typescript": "^5.3.3" diff --git a/packages/rangelink-core-ts/tsconfig.json b/packages/rangelink-core-ts/tsconfig.json index 0c01436f1..3a7a1e7ca 100644 --- a/packages/rangelink-core-ts/tsconfig.json +++ b/packages/rangelink-core-ts/tsconfig.json @@ -8,6 +8,5 @@ "composite": true }, "include": ["src/**/*.ts"], - "exclude": ["node_modules", "out", "src/**/*.test.ts"], - "references": [{ "path": "../barebone-logger" }] + "exclude": ["node_modules", "out", "src/**/*.test.ts"] } diff --git a/packages/rangelink-vscode-extension/package.json b/packages/rangelink-vscode-extension/package.json index ef637dbb0..95bdf7b84 100644 --- a/packages/rangelink-vscode-extension/package.json +++ b/packages/rangelink-vscode-extension/package.json @@ -35,7 +35,7 @@ "clean": "rm -rf out dist coverage *.tsbuildinfo *.vsix", "clean:all": "pnpm clean && rm -rf node_modules .eslintcache *.log .vscode-test", "compile": "pnpm compile:deps && pnpm generate-version:all && node esbuild.config.js", - "compile:deps": "cd ../barebone-logger && pnpm clean && pnpm compile && cd ../barebone-logger-testing && pnpm clean && pnpm compile && cd ../rangelink-core-ts && pnpm clean && pnpm compile", + "compile:deps": "cd ../rangelink-core-ts && pnpm clean && pnpm compile", "generate-version": "node scripts/generate-version.js --copy-to out", "generate-version:all": "node scripts/generate-version.js --copy-to out,dist", "generate:publish-instructions": "./scripts/generate-publishing-instructions.sh", @@ -961,7 +961,7 @@ "onStartupFinished" ], "dependencies": { - "barebone-logger": "workspace:*", + "@couimet/logger-contract": "1.0.1-alpha.0", "nanoid": "^5.1.6", "rangelink-core-ts": "workspace:*" }, @@ -973,7 +973,7 @@ "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "^3.6.2", - "barebone-logger-testing": "workspace:*", + "@couimet/logger-contract-testing": "1.0.1-alpha.0", "esbuild": "^0.25.12", "jest": "^29.7.0", "ts-jest": "^29.1.0", diff --git a/packages/rangelink-vscode-extension/tsconfig.json b/packages/rangelink-vscode-extension/tsconfig.json index d169bd079..484807f15 100644 --- a/packages/rangelink-vscode-extension/tsconfig.json +++ b/packages/rangelink-vscode-extension/tsconfig.json @@ -6,5 +6,5 @@ }, "include": ["src"], "exclude": ["node_modules", "out"], - "references": [{ "path": "../barebone-logger" }, { "path": "../rangelink-core-ts" }] + "references": [{ "path": "../rangelink-core-ts" }] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ceb3c95d..cc88963c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,55 +48,21 @@ importers: specifier: ^5.3.3 version: 5.9.3 - packages/barebone-logger: - devDependencies: - '@types/jest': - specifier: ^29.5.0 - version: 29.5.14 - '@types/node': - specifier: ^18.0.0 - version: 18.19.130 - jest: - specifier: ^29.5.0 - version: 29.7.0(@types/node@18.19.130) - ts-jest: - specifier: ^29.1.0 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@18.19.130))(typescript@5.9.3) - typescript: - specifier: ^5.3.3 - version: 5.9.3 - - packages/barebone-logger-testing: - dependencies: - barebone-logger: - specifier: workspace:* - version: link:../barebone-logger - devDependencies: - '@types/jest': - specifier: ^29.5.0 - version: 29.5.14 - '@types/node': - specifier: ^18.0.0 - version: 18.19.130 - typescript: - specifier: ^5.3.3 - version: 5.9.3 - packages/rangelink-core-ts: dependencies: - barebone-logger: - specifier: workspace:* - version: link:../barebone-logger + '@couimet/logger-contract': + specifier: 1.0.1-alpha.0 + version: 1.0.1-alpha.0 devDependencies: + '@couimet/logger-contract-testing': + specifier: 1.0.1-alpha.0 + version: 1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0) '@types/jest': specifier: ^29.5.0 version: 29.5.14 '@types/node': specifier: ^18.0.0 version: 18.19.130 - barebone-logger-testing: - specifier: workspace:* - version: link:../barebone-logger-testing jest: specifier: ^29.5.0 version: 29.7.0(@types/node@18.19.130) @@ -109,9 +75,9 @@ importers: packages/rangelink-vscode-extension: dependencies: - barebone-logger: - specifier: workspace:* - version: link:../barebone-logger + '@couimet/logger-contract': + specifier: 1.0.1-alpha.0 + version: 1.0.1-alpha.0 nanoid: specifier: ^5.1.6 version: 5.1.6 @@ -119,6 +85,9 @@ importers: specifier: workspace:* version: link:../rangelink-core-ts devDependencies: + '@couimet/logger-contract-testing': + specifier: 1.0.1-alpha.0 + version: 1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0) '@types/jest': specifier: ^29.5.0 version: 29.5.14 @@ -140,9 +109,6 @@ importers: '@vscode/vsce': specifier: ^3.6.2 version: 3.6.2 - barebone-logger-testing: - specifier: workspace:* - version: link:../barebone-logger-testing esbuild: specifier: ^0.25.12 version: 0.25.12 @@ -377,6 +343,14 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@couimet/logger-contract-testing@1.0.1-alpha.0': + resolution: {integrity: sha512-vFCzvK7H69LykhmTUq0fD9JmBddnhVDnjARNzfCk5TIIgGvgXwbQxVXnoW0b0ZeTS4ykT3qFhtCCKLOUOgDuaQ==} + peerDependencies: + '@couimet/logger-contract': 1.0.1-alpha.0 + + '@couimet/logger-contract@1.0.1-alpha.0': + resolution: {integrity: sha512-RMPI2P/8tFeBvpQIHt2vzoOj5xT6SX1ihMs2JCXmR397VmarQs+EywgKAx1yTw4S+tWt2mjl+6IdijOQ2Mn44A==} + '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} @@ -3944,6 +3918,12 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@couimet/logger-contract-testing@1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0)': + dependencies: + '@couimet/logger-contract': 1.0.1-alpha.0 + + '@couimet/logger-contract@1.0.1-alpha.0': {} + '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 From 7bc8c6705ad8ff74f6b6a066e8d1eab74dba73c4 Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 09:47:55 -0400 Subject: [PATCH 03/10] New CI validation + script to enforce no pre-release package can make its way to `main` --- .../check-no-prerelease-deps/action.yml | 9 + .github/workflows/ci.yml | 3 + scripts/check-no-prerelease-deps.sh | 84 ++++++ tests/shell/check-no-prerelease-deps.bats | 271 ++++++++++++++++++ 4 files changed, 367 insertions(+) create mode 100644 .github/actions/check-no-prerelease-deps/action.yml create mode 100755 scripts/check-no-prerelease-deps.sh create mode 100644 tests/shell/check-no-prerelease-deps.bats diff --git a/.github/actions/check-no-prerelease-deps/action.yml b/.github/actions/check-no-prerelease-deps/action.yml new file mode 100644 index 000000000..0208c1386 --- /dev/null +++ b/.github/actions/check-no-prerelease-deps/action.yml @@ -0,0 +1,9 @@ +name: 'Check no prerelease deps' +description: 'Fail if any package.json declares a prerelease npm dep (alpha/beta/rc/pre).' + +runs: + using: 'composite' + steps: + - name: Run prerelease-deps check + shell: bash + run: bash scripts/check-no-prerelease-deps.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50a5a6c7e..ae00ff91a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,9 @@ jobs: - name: Check formatting and linting uses: ./.github/actions/check-formatting + - name: Check no prerelease deps + uses: ./.github/actions/check-no-prerelease-deps + - name: Run tests with coverage id: run-tests uses: ./.github/actions/run-tests diff --git a/scripts/check-no-prerelease-deps.sh b/scripts/check-no-prerelease-deps.sh new file mode 100755 index 000000000..c8da13117 --- /dev/null +++ b/scripts/check-no-prerelease-deps.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +set -euo pipefail + +readonly EXIT_OK=0 +readonly EXIT_FOUND_PRERELEASE=1 +readonly EXIT_MISSING_JQ=2 + +readonly PRERELEASE_TOKENS=("-alpha" "-beta" "-rc" "-pre") + +_require_jq() { + if ! command -v jq >/dev/null 2>&1; then + echo "error: jq is required" >&2 + exit "$EXIT_MISSING_JQ" + fi +} + +_discover_package_files() { + find . -type f -name 'package.json' \ + | grep -v '/node_modules/' \ + | grep -v '/out/' \ + | grep -v '/dist/' \ + | grep -v '/\.vscode-test/' \ + | grep -v '/coverage/' \ + || true +} + +_jq_filter() { + cat <<'JQ' +(.dependencies // {}) + (.devDependencies // {}) + (.peerDependencies // {}) + (.optionalDependencies // {}) +| to_entries[] +| select( + (.value | type == "string") + and ( + (.value | contains("-alpha")) + or (.value | contains("-beta")) + or (.value | contains("-rc")) + or (.value | contains("-pre")) + ) + ) +| "\(.key)\t\(.value)" +JQ +} + +_scan_file() { + local file="$1" + local found_in_file=0 + + while IFS=$'\t' read -r dep_name dep_version; do + [[ -z "$dep_name" ]] && continue + echo "error: prerelease dep '${dep_name}@${dep_version}' in ${file}" >&2 + found_in_file=1 + done < <(jq -r "$(_jq_filter)" "$file") + + return "$found_in_file" +} + +main() { + _require_jq + + local files=() + if [[ $# -gt 0 ]]; then + files=("$@") + else + while IFS= read -r path; do + [[ -n "$path" ]] && files+=("$path") + done < <(_discover_package_files) + fi + + local any_found=0 + local file + for file in "${files[@]:-}"; do + [[ -z "$file" ]] && continue + if ! _scan_file "$file"; then + any_found=1 + fi + done + + if [[ "$any_found" -eq 1 ]]; then + exit "$EXIT_FOUND_PRERELEASE" + fi + exit "$EXIT_OK" +} + +main "$@" diff --git a/tests/shell/check-no-prerelease-deps.bats b/tests/shell/check-no-prerelease-deps.bats new file mode 100644 index 000000000..e7c27c177 --- /dev/null +++ b/tests/shell/check-no-prerelease-deps.bats @@ -0,0 +1,271 @@ +#!/usr/bin/env bats + +load test_helper + +REAL_SCRIPT="$PROJECT_ROOT/scripts/check-no-prerelease-deps.sh" + +setup_fixture() { + FIXTURE_ROOT="$TEST_TEMP_DIR" + cp "$REAL_SCRIPT" "$FIXTURE_ROOT/check-no-prerelease-deps.sh" + chmod +x "$FIXTURE_ROOT/check-no-prerelease-deps.sh" +} + +write_pkg() { + local path="$1" + mkdir -p "$(dirname "$path")" + cat > "$path" +} + +# ── Empty directory ──────────────────────────────────────────────────────────── + +@test "empty directory passes" { + setup_fixture + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── Clean dependency ─────────────────────────────────────────────────────────── + +@test "clean dependencies pass" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "clean", + "dependencies": { "foo": "^1.2.3" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── Alpha version ────────────────────────────────────────────────────────────── + +@test "alpha version fails with file path and dep name" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "bad", + "dependencies": { "foo": "1.0.1-alpha.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "foo" ]] + [[ "$output" =~ "package.json" ]] +} + +# ── Beta version ─────────────────────────────────────────────────────────────── + +@test "beta version fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "bad", + "dependencies": { "foo": "2.0.0-beta.1" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "2.0.0-beta.1" ]] +} + +# ── RC version ───────────────────────────────────────────────────────────────── + +@test "rc version fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "bad", + "dependencies": { "foo": "3.4.5-rc.2" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "3.4.5-rc.2" ]] +} + +# ── Generic -pre suffix ──────────────────────────────────────────────────────── + +@test "pre suffix fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "bad", + "dependencies": { "foo": "1.2.3-pre.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "1.2.3-pre.0" ]] +} + +# ── workspace:* protocol ─────────────────────────────────────────────────────── + +@test "workspace protocol passes" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "ws", + "dependencies": { "foo": "workspace:*" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── file: protocol ───────────────────────────────────────────────────────────── + +@test "file protocol passes" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "local", + "dependencies": { "foo": "file:./local" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── devDependencies ──────────────────────────────────────────────────────────── + +@test "alpha in devDependencies fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "mixed", + "dependencies": { "foo": "^1.2.3" }, + "devDependencies": { "tooling": "0.1.0-alpha.5" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "tooling" ]] +} + +# ── peerDependencies ─────────────────────────────────────────────────────────── + +@test "alpha in peerDependencies fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "peer", + "peerDependencies": { "react": "19.0.0-alpha.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "react" ]] +} + +# ── optionalDependencies ─────────────────────────────────────────────────────── + +@test "alpha in optionalDependencies fails" { + setup_fixture + write_pkg "$FIXTURE_ROOT/package.json" <<'EOF' +{ + "name": "opt", + "optionalDependencies": { "fsevents": "2.0.0-alpha.1" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "fsevents" ]] +} + +# ── node_modules is excluded from auto-discovery ─────────────────────────────── + +@test "package.json under node_modules is ignored" { + setup_fixture + write_pkg "$FIXTURE_ROOT/node_modules/some-pkg/package.json" <<'EOF' +{ + "name": "vendored", + "dependencies": { "foo": "1.0.0-alpha.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── out/ and dist/ are excluded from auto-discovery ──────────────────────────── + +@test "package.json under out and dist is ignored" { + setup_fixture + write_pkg "$FIXTURE_ROOT/out/some-pkg/package.json" <<'EOF' +{ + "name": "built-out", + "dependencies": { "foo": "1.0.0-alpha.0" } +} +EOF + write_pkg "$FIXTURE_ROOT/dist/some-pkg/package.json" <<'EOF' +{ + "name": "built-dist", + "dependencies": { "bar": "1.0.0-beta.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── .vscode-test and coverage are excluded from auto-discovery ───────────────── + +@test "package.json under .vscode-test and coverage is ignored" { + setup_fixture + write_pkg "$FIXTURE_ROOT/.vscode-test/vscode-darwin/Visual Studio Code.app/Contents/Resources/app/package.json" <<'EOF' +{ + "name": "vscode-cache", + "dependencies": { "foo": "0.1.0-alpha.5" } +} +EOF + write_pkg "$FIXTURE_ROOT/coverage/some-pkg/package.json" <<'EOF' +{ + "name": "cov", + "dependencies": { "bar": "1.0.0-beta.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 0 ]] +} + +# ── Multiple offenders reported in one run ───────────────────────────────────── + +@test "multiple offenders are all reported" { + setup_fixture + write_pkg "$FIXTURE_ROOT/packages/a/package.json" <<'EOF' +{ + "name": "a", + "dependencies": { "alpha-dep": "1.0.0-alpha.0" } +} +EOF + write_pkg "$FIXTURE_ROOT/packages/b/package.json" <<'EOF' +{ + "name": "b", + "dependencies": { "beta-dep": "2.0.0-beta.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh'" + [[ "$status" -eq 1 ]] + [[ "$output" =~ "alpha-dep" ]] + [[ "$output" =~ "beta-dep" ]] +} + +# ── Explicit file-path argument restricts the scan ───────────────────────────── + +@test "explicit file argument scans only that file" { + setup_fixture + write_pkg "$FIXTURE_ROOT/packages/a/package.json" <<'EOF' +{ + "name": "a", + "dependencies": { "clean-dep": "^1.2.3" } +} +EOF + write_pkg "$FIXTURE_ROOT/packages/b/package.json" <<'EOF' +{ + "name": "b", + "dependencies": { "alpha-dep": "1.0.0-alpha.0" } +} +EOF + run bash -c "cd '${FIXTURE_ROOT}' && '${FIXTURE_ROOT}/check-no-prerelease-deps.sh' '${FIXTURE_ROOT}/packages/a/package.json'" + [[ "$status" -eq 0 ]] + [[ ! "$output" =~ "alpha-dep" ]] +} From bb313c12fbc64a18b110b2a36d57f58c42a0d087 Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 09:49:32 -0400 Subject: [PATCH 04/10] Ran `pnpm fix` --- packages/rangelink-core-ts/package.json | 2 +- packages/rangelink-vscode-extension/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rangelink-core-ts/package.json b/packages/rangelink-core-ts/package.json index f2a43d1f4..70d986593 100644 --- a/packages/rangelink-core-ts/package.json +++ b/packages/rangelink-core-ts/package.json @@ -34,9 +34,9 @@ "@couimet/logger-contract": "1.0.1-alpha.0" }, "devDependencies": { + "@couimet/logger-contract-testing": "1.0.1-alpha.0", "@types/jest": "^29.5.0", "@types/node": "^18.0.0", - "@couimet/logger-contract-testing": "1.0.1-alpha.0", "jest": "^29.5.0", "ts-jest": "^29.1.0", "typescript": "^5.3.3" diff --git a/packages/rangelink-vscode-extension/package.json b/packages/rangelink-vscode-extension/package.json index 95bdf7b84..f7b2fd16f 100644 --- a/packages/rangelink-vscode-extension/package.json +++ b/packages/rangelink-vscode-extension/package.json @@ -966,6 +966,7 @@ "rangelink-core-ts": "workspace:*" }, "devDependencies": { + "@couimet/logger-contract-testing": "1.0.1-alpha.0", "@types/jest": "^29.5.0", "@types/mocha": "^10.0.10", "@types/node": "^20.0.0", @@ -973,7 +974,6 @@ "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "^3.6.2", - "@couimet/logger-contract-testing": "1.0.1-alpha.0", "esbuild": "^0.25.12", "jest": "^29.7.0", "ts-jest": "^29.1.0", From 4151dfab5e37c89a218300ced966f9ed932f8ce4 Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 09:57:56 -0400 Subject: [PATCH 05/10] Update `import`s to now point to `@couimet/logger-contract*` --- .../src/__tests__/detection/findLinksInText.test.ts | 4 ++-- .../src/__tests__/formatting/finalizeLinkGeneration.test.ts | 2 +- .../src/__tests__/formatting/formatLink.test.ts | 2 +- packages/rangelink-core-ts/src/detection/detectQuotedLinks.ts | 2 +- .../rangelink-core-ts/src/detection/detectUnquotedLinks.ts | 2 +- packages/rangelink-core-ts/src/detection/findLinksInText.ts | 2 +- .../src/formatting/finalizeLinkGeneration.ts | 2 +- packages/rangelink-vscode-extension/src/VSCodeLogger.ts | 2 +- .../src/__integration-tests__/helpers/logBasedUiAssertions.ts | 2 +- .../src/__integration-tests__/suite/linkGeneration.test.ts | 2 +- .../src/__tests__/clipboard/ClipboardService.test.ts | 2 +- .../src/__tests__/commands/AddBookmarkCommand.test.ts | 2 +- .../src/__tests__/commands/BindToDestinationCommand.test.ts | 2 +- .../src/__tests__/commands/BindToTerminalCommand.test.ts | 2 +- .../src/__tests__/commands/BindToTextEditorCommand.test.ts | 2 +- .../src/__tests__/commands/GoToRangeLinkCommand.test.ts | 2 +- .../src/__tests__/commands/JumpToDestinationCommand.test.ts | 2 +- .../src/__tests__/commands/ListBookmarksCommand.test.ts | 2 +- .../src/__tests__/commands/ManageBookmarksCommand.test.ts | 2 +- .../src/__tests__/commands/ShowVersionCommand.test.ts | 2 +- .../__tests__/commands/createBindAIAssistantCommand.test.ts | 2 +- .../commands/createBindToCustomAiByIdCommand.test.ts | 2 +- .../src/__tests__/contextKeys/ContextKeyService.test.ts | 2 +- .../ComposablePasteDestination.integration.test.ts | 2 +- .../__tests__/destinations/ComposablePasteDestination.test.ts | 2 +- .../destinations/DestinationAvailabilityService.test.ts | 2 +- .../src/__tests__/destinations/DestinationPicker.test.ts | 2 +- .../src/__tests__/destinations/DestinationRegistry.test.ts | 2 +- .../__tests__/destinations/PasteDestinationManager.test.ts | 4 ++-- .../capabilities/AIAssistantFocusCapability.test.ts | 4 ++-- .../capabilities/ContentEligibilityChecker.test.ts | 2 +- .../destinations/capabilities/EditorFocusCapability.test.ts | 2 +- .../capabilities/EligibilityCheckerFactory.test.ts | 2 +- .../destinations/capabilities/FocusCapabilityFactory.test.ts | 2 +- .../capabilities/LazyResolvedFocusCapability.test.ts | 2 +- .../destinations/capabilities/ResolvedFocusCapability.test.ts | 2 +- .../destinations/capabilities/TerminalFocusCapability.test.ts | 2 +- .../insertFactories/aiAssistantInsertFactory.test.ts | 2 +- .../capabilities/insertFactories/directInsertFactory.test.ts | 2 +- .../capabilities/insertFactories/editorInsertFactory.test.ts | 2 +- .../insertFactories/manualPasteInsertFactory.test.ts | 2 +- .../insertFactories/terminalInsertFactory.test.ts | 2 +- .../destinations/capabilities/resolveFocusTier.test.ts | 2 +- .../src/__tests__/destinations/destinationBuilders.test.ts | 2 +- .../src/__tests__/destinations/utils/showFilePicker.test.ts | 2 +- .../__tests__/destinations/utils/showTerminalPicker.test.ts | 2 +- .../src/__tests__/extension.test.ts | 2 +- .../__tests__/helpers/createMockComposablePasteDestination.ts | 2 +- .../src/__tests__/helpers/createMockVscodeAdapter.ts | 4 ++-- .../src/__tests__/helpers/createMockWiringServices.ts | 2 +- .../src/__tests__/helpers/destinationTestHelpers.ts | 2 +- .../src/__tests__/helpers/spyOnIsGeminiCodeAssistAvailable.ts | 2 +- .../__tests__/helpers/spyOnIsGitHubCopilotChatAvailable.ts | 2 +- .../src/__tests__/ide/vscode/VscodeAdapter.test.ts | 4 ++-- .../src/__tests__/navigation/FilePathDocumentProvider.test.ts | 4 ++-- .../__tests__/navigation/FilePathNavigationHandler.test.ts | 4 ++-- .../src/__tests__/navigation/FilePathTerminalProvider.test.ts | 4 ++-- .../__tests__/navigation/RangeLinkDocumentProvider.test.ts | 4 ++-- .../__tests__/navigation/RangeLinkNavigationHandler.test.ts | 4 ++-- .../__tests__/navigation/RangeLinkTerminalProvider.test.ts | 4 ++-- .../src/__tests__/notification/ReleaseNotifier.test.ts | 2 +- .../src/__tests__/services/FilePathPaster.test.ts | 2 +- .../src/__tests__/services/LinkGenerator.test.ts | 2 +- .../src/__tests__/services/SendRouter.test.ts | 2 +- .../src/__tests__/services/TerminalPasteService.test.ts | 2 +- .../src/__tests__/services/TerminalSelectionService.test.ts | 2 +- .../src/__tests__/services/TextSelectionPaster.test.ts | 2 +- .../src/__tests__/services/handleDirtyBufferWarning.test.ts | 2 +- .../src/__tests__/statusBar/RangeLinkStatusBar.test.ts | 2 +- .../src/__tests__/toInputSelection.test.ts | 4 ++-- .../utils/generateLinkFromSelections.integration.test.ts | 2 +- .../src/__tests__/utils/generateLinkFromSelections.test.ts | 4 ++-- .../src/bookmarks/BookmarkService.ts | 2 +- .../src/bookmarks/BookmarksStore.ts | 2 +- .../src/bookmarks/__tests__/BookmarkService.test.ts | 2 +- .../src/bookmarks/__tests__/BookmarksStore.test.ts | 2 +- .../src/clipboard/ClipboardService.ts | 2 +- .../src/commands/AddBookmarkCommand.ts | 2 +- .../src/commands/BindToDestinationCommand.ts | 2 +- .../src/commands/BindToTerminalCommand.ts | 2 +- .../src/commands/BindToTextEditorCommand.ts | 2 +- .../src/commands/GoToRangeLinkCommand.ts | 2 +- .../src/commands/JumpToDestinationCommand.ts | 2 +- .../src/commands/ListBookmarksCommand.ts | 2 +- .../src/commands/ManageBookmarksCommand.ts | 2 +- .../src/commands/ShowVersionCommand.ts | 2 +- .../src/commands/createBindAIAssistantCommand.ts | 2 +- .../src/commands/createBindToCustomAiByIdCommand.ts | 2 +- .../rangelink-vscode-extension/src/config/ConfigReader.ts | 2 +- .../rangelink-vscode-extension/src/config/DelimiterCache.ts | 2 +- .../src/config/__tests__/ConfigReader.test.ts | 4 ++-- .../src/config/__tests__/DelimiterCache.test.ts | 2 +- .../src/config/__tests__/getDelimitersForExtension.test.ts | 4 ++-- .../src/config/__tests__/loadDelimiterConfig.test.ts | 4 ++-- .../src/config/__tests__/parseCustomAiAssistants.test.ts | 2 +- .../src/config/getDelimitersForExtension.ts | 2 +- .../src/config/loadDelimiterConfig.ts | 2 +- packages/rangelink-vscode-extension/src/config/logging.ts | 2 +- .../src/config/parseCustomAiAssistants.ts | 2 +- .../src/contextKeys/ContextKeyService.ts | 2 +- .../rangelink-vscode-extension/src/createWiringServices.ts | 2 +- .../src/destinations/BoundSession.ts | 2 +- .../src/destinations/ComposablePasteDestination.ts | 2 +- .../src/destinations/DestinationAvailabilityService.ts | 2 +- .../src/destinations/DestinationPicker.ts | 2 +- .../src/destinations/DestinationRegistry.ts | 2 +- .../src/destinations/PasteDestinationManager.ts | 2 +- .../src/destinations/__tests__/BoundSession.test.ts | 2 +- .../src/destinations/__tests__/createMultiColumnGuard.test.ts | 2 +- .../src/destinations/__tests__/createTabCloseGuard.test.ts | 2 +- .../destinations/capabilities/AIAssistantFocusCapability.ts | 2 +- .../destinations/capabilities/ContentEligibilityChecker.ts | 2 +- .../src/destinations/capabilities/EditorFocusCapability.ts | 2 +- .../src/destinations/capabilities/EligibilityChecker.ts | 2 +- .../destinations/capabilities/EligibilityCheckerFactory.ts | 2 +- .../src/destinations/capabilities/FocusCapability.ts | 2 +- .../src/destinations/capabilities/FocusCapabilityFactory.ts | 2 +- .../destinations/capabilities/LazyResolvedFocusCapability.ts | 2 +- .../src/destinations/capabilities/ResolvedFocusCapability.ts | 2 +- .../src/destinations/capabilities/TerminalFocusCapability.ts | 2 +- .../capabilities/insertFactories/aiAssistantInsertFactory.ts | 2 +- .../capabilities/insertFactories/directInsertFactory.ts | 2 +- .../capabilities/insertFactories/editorInsertFactory.ts | 2 +- .../capabilities/insertFactories/manualPasteInsertFactory.ts | 2 +- .../capabilities/insertFactories/terminalInsertFactory.ts | 2 +- .../src/destinations/capabilities/resolveFocusTier.ts | 2 +- .../src/destinations/createMultiColumnGuard.ts | 2 +- .../src/destinations/createTabCloseGuard.ts | 2 +- .../src/destinations/utils/showFilePicker.ts | 2 +- .../src/destinations/utils/showTerminalPicker.ts | 2 +- packages/rangelink-vscode-extension/src/extension.ts | 2 +- packages/rangelink-vscode-extension/src/i18n/LocaleManager.ts | 2 +- .../src/ide/vscode/VscodeAdapter.ts | 2 +- .../src/navigation/FilePathDocumentProvider.ts | 2 +- .../src/navigation/FilePathNavigationHandler.ts | 2 +- .../src/navigation/FilePathTerminalProvider.ts | 2 +- .../src/navigation/RangeLinkDocumentProvider.ts | 2 +- .../src/navigation/RangeLinkNavigationHandler.ts | 2 +- .../src/navigation/RangeLinkTerminalProvider.ts | 2 +- .../src/notification/ReleaseNotifier.ts | 2 +- .../rangelink-vscode-extension/src/services/FilePathPaster.ts | 2 +- .../rangelink-vscode-extension/src/services/LinkGenerator.ts | 2 +- .../src/services/SelectionValidator.ts | 2 +- .../rangelink-vscode-extension/src/services/SendRouter.ts | 2 +- .../src/services/TerminalPasteService.ts | 2 +- .../src/services/TerminalSelectionService.ts | 2 +- .../src/services/TextSelectionPaster.ts | 2 +- .../src/services/__tests__/SelectionValidator.test.ts | 2 +- .../src/services/handleDirtyBufferWarning.ts | 2 +- .../src/statusBar/RangeLinkStatusBar.ts | 2 +- .../__tests__/aiAssistants/isClaudeCodeAvailable.test.ts | 2 +- .../utils/__tests__/aiAssistants/isCursorIDEDetected.test.ts | 2 +- .../aiAssistants/isGeminiCodeAssistAvailable.test.ts | 2 +- .../aiAssistants/isGitHubCopilotChatAvailable.test.ts | 2 +- .../src/utils/__tests__/formatMessage.test.ts | 2 +- .../src/utils/aiAssistants/isClaudeCodeAvailable.ts | 2 +- .../src/utils/aiAssistants/isCursorIDEDetected.ts | 2 +- .../src/utils/aiAssistants/isGeminiCodeAssistAvailable.ts | 2 +- .../src/utils/aiAssistants/isGitHubCopilotChatAvailable.ts | 2 +- .../rangelink-vscode-extension/src/utils/formatMessage.ts | 2 +- .../src/utils/generateLinkFromSelections.ts | 2 +- .../src/utils/registerWithLogging.ts | 2 +- .../rangelink-vscode-extension/src/utils/toInputSelection.ts | 2 +- 163 files changed, 179 insertions(+), 179 deletions(-) diff --git a/packages/rangelink-core-ts/src/__tests__/detection/findLinksInText.test.ts b/packages/rangelink-core-ts/src/__tests__/detection/findLinksInText.test.ts index 79a111c9a..c37ee52f2 100644 --- a/packages/rangelink-core-ts/src/__tests__/detection/findLinksInText.test.ts +++ b/packages/rangelink-core-ts/src/__tests__/detection/findLinksInText.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from '../../constants'; import { findLinksInText } from '../../detection/findLinksInText'; diff --git a/packages/rangelink-core-ts/src/__tests__/formatting/finalizeLinkGeneration.test.ts b/packages/rangelink-core-ts/src/__tests__/formatting/finalizeLinkGeneration.test.ts index 6b65f77cb..cab316616 100644 --- a/packages/rangelink-core-ts/src/__tests__/formatting/finalizeLinkGeneration.test.ts +++ b/packages/rangelink-core-ts/src/__tests__/formatting/finalizeLinkGeneration.test.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { finalizeLinkGeneration, diff --git a/packages/rangelink-core-ts/src/__tests__/formatting/formatLink.test.ts b/packages/rangelink-core-ts/src/__tests__/formatting/formatLink.test.ts index 46f066b5d..03f6eb0cc 100644 --- a/packages/rangelink-core-ts/src/__tests__/formatting/formatLink.test.ts +++ b/packages/rangelink-core-ts/src/__tests__/formatting/formatLink.test.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { formatLink } from '../../formatting/formatLink'; import { DelimiterConfig } from '../../types/DelimiterConfig'; diff --git a/packages/rangelink-core-ts/src/detection/detectQuotedLinks.ts b/packages/rangelink-core-ts/src/detection/detectQuotedLinks.ts index fd5d11177..ce58e33a4 100644 --- a/packages/rangelink-core-ts/src/detection/detectQuotedLinks.ts +++ b/packages/rangelink-core-ts/src/detection/detectQuotedLinks.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { parseLink } from '../parsing/parseLink'; import type { DelimiterConfig } from '../types/DelimiterConfig'; diff --git a/packages/rangelink-core-ts/src/detection/detectUnquotedLinks.ts b/packages/rangelink-core-ts/src/detection/detectUnquotedLinks.ts index 449d5a86f..1053cdd70 100644 --- a/packages/rangelink-core-ts/src/detection/detectUnquotedLinks.ts +++ b/packages/rangelink-core-ts/src/detection/detectUnquotedLinks.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { parseLink } from '../parsing/parseLink'; import type { DelimiterConfig } from '../types/DelimiterConfig'; diff --git a/packages/rangelink-core-ts/src/detection/findLinksInText.ts b/packages/rangelink-core-ts/src/detection/findLinksInText.ts index 70c53b2c3..4648520f9 100644 --- a/packages/rangelink-core-ts/src/detection/findLinksInText.ts +++ b/packages/rangelink-core-ts/src/detection/findLinksInText.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfig } from '../types/DelimiterConfig'; import type { DetectedLink } from '../types/DetectedLink'; diff --git a/packages/rangelink-core-ts/src/formatting/finalizeLinkGeneration.ts b/packages/rangelink-core-ts/src/formatting/finalizeLinkGeneration.ts index 99d192dd5..735cf1a80 100644 --- a/packages/rangelink-core-ts/src/formatting/finalizeLinkGeneration.ts +++ b/packages/rangelink-core-ts/src/formatting/finalizeLinkGeneration.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { ComputedSelection } from '../types/ComputedSelection'; import { CoreResult } from '../types/CoreResult'; diff --git a/packages/rangelink-vscode-extension/src/VSCodeLogger.ts b/packages/rangelink-vscode-extension/src/VSCodeLogger.ts index 71e01dfbe..159e8a14a 100644 --- a/packages/rangelink-vscode-extension/src/VSCodeLogger.ts +++ b/packages/rangelink-vscode-extension/src/VSCodeLogger.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; /** * Minimal interface for log output — satisfied by both vscode.OutputChannel and LogCapture. diff --git a/packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts b/packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts index b2223bfa6..d913b709a 100644 --- a/packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts +++ b/packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts @@ -1,6 +1,6 @@ import assert from 'node:assert'; -import type { LoggingContext } from 'barebone-logger'; +import type { LoggingContext } from '@couimet/logger-contract'; // --------------------------------------------------------------------------- // Utility diff --git a/packages/rangelink-vscode-extension/src/__integration-tests__/suite/linkGeneration.test.ts b/packages/rangelink-vscode-extension/src/__integration-tests__/suite/linkGeneration.test.ts index d66330444..433948f1a 100644 --- a/packages/rangelink-vscode-extension/src/__integration-tests__/suite/linkGeneration.test.ts +++ b/packages/rangelink-vscode-extension/src/__integration-tests__/suite/linkGeneration.test.ts @@ -1,6 +1,6 @@ import assert from 'node:assert'; -import { NoOpLogger } from 'barebone-logger'; +import { NoOpLogger } from '@couimet/logger-contract'; import { DEFAULT_DELIMITERS, findLinksInText } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/clipboard/ClipboardService.test.ts b/packages/rangelink-vscode-extension/src/__tests__/clipboard/ClipboardService.test.ts index e9a28a288..fb9bdc093 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/clipboard/ClipboardService.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/clipboard/ClipboardService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ClipboardService } from '../../clipboard/ClipboardService'; import { createMockConfigReader, createMockVscodeAdapter } from '../helpers'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/AddBookmarkCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/AddBookmarkCommand.test.ts index 2c38ea5ca..af1728484 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/AddBookmarkCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/AddBookmarkCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import { AddBookmarkCommand } from '../../commands/AddBookmarkCommand'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToDestinationCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToDestinationCommand.test.ts index 4a211e28e..f3305faca 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToDestinationCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToDestinationCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { BindToDestinationCommand } from '../../commands'; import type { BindSuccessInfo } from '../../destinations'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTerminalCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTerminalCommand.test.ts index 950d06021..26cc40754 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTerminalCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTerminalCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { BindToTerminalCommand } from '../../commands/BindToTerminalCommand'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTextEditorCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTextEditorCommand.test.ts index a30924ccc..9c767c0a8 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTextEditorCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/BindToTextEditorCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { BindToTextEditorCommand } from '../../commands'; import type { BoundSession } from '../../destinations'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/GoToRangeLinkCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/GoToRangeLinkCommand.test.ts index 3a96916f3..bfd51882a 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/GoToRangeLinkCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/GoToRangeLinkCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { LinkType, RangeLinkError, diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/JumpToDestinationCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/JumpToDestinationCommand.test.ts index 3f87b6633..37ef89164 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/JumpToDestinationCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/JumpToDestinationCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { JumpToDestinationCommand } from '../../commands'; import type { FocusSuccessInfo, PasteDestinationManager } from '../../destinations'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/ListBookmarksCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/ListBookmarksCommand.test.ts index 9ba319042..f7bd9632d 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/ListBookmarksCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/ListBookmarksCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import type { Bookmark } from '../../bookmarks'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/ManageBookmarksCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/ManageBookmarksCommand.test.ts index 5dfb348fb..fabbabb4b 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/ManageBookmarksCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/ManageBookmarksCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import type { Bookmark } from '../../bookmarks'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/ShowVersionCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/ShowVersionCommand.test.ts index 6689dd96d..4adfd81e3 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/ShowVersionCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/ShowVersionCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ShowVersionCommand } from '../../commands/ShowVersionCommand'; import type { VersionInfo } from '../../types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/createBindAIAssistantCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/createBindAIAssistantCommand.test.ts index f0e97b799..4f483702a 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/createBindAIAssistantCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/createBindAIAssistantCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createBindAIAssistantCommand } from '../../commands/createBindAIAssistantCommand'; import { AI_ASSISTANT_KINDS, type AIAssistantDestinationKind } from '../../types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/commands/createBindToCustomAiByIdCommand.test.ts b/packages/rangelink-vscode-extension/src/__tests__/commands/createBindToCustomAiByIdCommand.test.ts index 553199028..31c0babec 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/commands/createBindToCustomAiByIdCommand.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/commands/createBindToCustomAiByIdCommand.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createBindToCustomAiByIdCommand } from '../../commands/createBindToCustomAiByIdCommand'; import type { BindSuccessInfo } from '../../destinations'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/contextKeys/ContextKeyService.test.ts b/packages/rangelink-vscode-extension/src/__tests__/contextKeys/ContextKeyService.test.ts index e342c0582..4bc64eaca 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/contextKeys/ContextKeyService.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/contextKeys/ContextKeyService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ContextKeyService } from '../../contextKeys/ContextKeyService'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts index 169cbc6ad..a1d8fe41b 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.test.ts index e253513df..88415078e 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { FocusErrorReason } from '../../destinations/capabilities/FocusCapability'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationAvailabilityService.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationAvailabilityService.test.ts index d31686334..9e470dcc1 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationAvailabilityService.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationAvailabilityService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DestinationAvailabilityService } from '../../destinations'; import type { AIAssistantDestinationKind } from '../../types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationPicker.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationPicker.test.ts index ca5078b07..2e0cf0e39 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationPicker.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationPicker.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DestinationPicker, diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationRegistry.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationRegistry.test.ts index b7151c124..cbd5f4df0 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationRegistry.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/DestinationRegistry.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { type DestinationBuilder, diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/PasteDestinationManager.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/PasteDestinationManager.test.ts index c91e5202f..0592ba4b6 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/PasteDestinationManager.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/PasteDestinationManager.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/AIAssistantFocusCapability.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/AIAssistantFocusCapability.test.ts index af57b2fe2..d8a20a525 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/AIAssistantFocusCapability.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/AIAssistantFocusCapability.test.ts @@ -1,5 +1,5 @@ -import type { LoggingContext } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { LoggingContext } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { AIAssistantFocusCapability } from '../../../destinations/capabilities/AIAssistantFocusCapability'; import type { ColdRefocusConfig } from '../../../destinations/capabilities/ColdRefocusConfig'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ContentEligibilityChecker.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ContentEligibilityChecker.test.ts index c35b37ad9..9b1491bda 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ContentEligibilityChecker.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ContentEligibilityChecker.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; jest.mock('../../../utils/isEligibleForPaste'); diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EditorFocusCapability.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EditorFocusCapability.test.ts index bf495d2a8..ccb2fb016 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EditorFocusCapability.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EditorFocusCapability.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { EditorFocusCapability } from '../../../destinations/capabilities/EditorFocusCapability'; import type { FocusedDestination } from '../../../destinations/capabilities/FocusCapability'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EligibilityCheckerFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EligibilityCheckerFactory.test.ts index d5a1701f6..208448c12 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EligibilityCheckerFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/EligibilityCheckerFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ContentEligibilityChecker } from '../../../destinations/capabilities/ContentEligibilityChecker'; import { EligibilityCheckerFactory } from '../../../destinations/capabilities/EligibilityCheckerFactory'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/FocusCapabilityFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/FocusCapabilityFactory.test.ts index 94e02b49d..32deec3c3 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/FocusCapabilityFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/FocusCapabilityFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { CustomAiAssistantConfig } from '../../../config/parseCustomAiAssistants'; import { AIAssistantFocusCapability } from '../../../destinations/capabilities/AIAssistantFocusCapability'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/LazyResolvedFocusCapability.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/LazyResolvedFocusCapability.test.ts index 4a5d1e109..fa86f2219 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/LazyResolvedFocusCapability.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/LazyResolvedFocusCapability.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { InsertFactory } from '../../../destinations/capabilities/insertFactories'; import { LazyResolvedFocusCapability } from '../../../destinations/capabilities/LazyResolvedFocusCapability'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ResolvedFocusCapability.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ResolvedFocusCapability.test.ts index bc575580a..c6721aae8 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ResolvedFocusCapability.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/ResolvedFocusCapability.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { InsertFactory } from '../../../destinations/capabilities/insertFactories'; import { ResolvedFocusCapability } from '../../../destinations/capabilities/ResolvedFocusCapability'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/TerminalFocusCapability.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/TerminalFocusCapability.test.ts index be218198b..80e6f5268 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/TerminalFocusCapability.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/TerminalFocusCapability.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts index f283cad8e..168b95924 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { AIAssistantInsertFactory } from '../../../../destinations/capabilities/insertFactories/aiAssistantInsertFactory'; import { createMockVscodeAdapter } from '../../../helpers'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/directInsertFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/directInsertFactory.test.ts index 59b8bc09d..a5d7107ab 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/directInsertFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/directInsertFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DirectInsertFactory } from '../../../../destinations/capabilities/insertFactories/directInsertFactory'; import type { InsertCommandEntry } from '../../../../destinations/capabilities/insertFactories/directInsertFactory'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/editorInsertFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/editorInsertFactory.test.ts index a2909f251..f7d875351 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/editorInsertFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/editorInsertFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { EditorInsertFactory } from '../../../../destinations/capabilities/insertFactories/editorInsertFactory'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/manualPasteInsertFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/manualPasteInsertFactory.test.ts index ad0890b84..277d8b564 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/manualPasteInsertFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/manualPasteInsertFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ManualPasteInsertFactory } from '../../../../destinations/capabilities/insertFactories/manualPasteInsertFactory'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/terminalInsertFactory.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/terminalInsertFactory.test.ts index d9dd2d6df..c1d9a7a35 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/terminalInsertFactory.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/terminalInsertFactory.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { RangeLinkError, RangeLinkErrorCodes, Result } from 'rangelink-core-ts'; import { TerminalInsertFactory } from '../../../../destinations/capabilities/insertFactories/terminalInsertFactory'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/resolveFocusTier.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/resolveFocusTier.test.ts index 7e2552291..57f555926 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/resolveFocusTier.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/resolveFocusTier.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { InsertFactory } from '../../../destinations/capabilities/insertFactories'; import { resolveFocusTier } from '../../../destinations/capabilities/resolveFocusTier'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/destinationBuilders.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/destinationBuilders.test.ts index 9b8b89e1f..a6065dff7 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/destinationBuilders.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/destinationBuilders.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type * as vscode from 'vscode'; import type { CustomAiAssistantConfig } from '../../config/parseCustomAiAssistants'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showFilePicker.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showFilePicker.test.ts index a704d1e4e..6339e3a93 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showFilePicker.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showFilePicker.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import type { FilePickerHandlers } from '../../../destinations/types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showTerminalPicker.test.ts b/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showTerminalPicker.test.ts index 298d91042..2be092b94 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showTerminalPicker.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/destinations/utils/showTerminalPicker.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { TerminalPickerHandlers } from '../../../destinations/types'; import { showTerminalPicker } from '../../../destinations/utils'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts index fbb21bd1e..53cd333f1 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts @@ -1,4 +1,4 @@ -import { pingLog, setLogger } from 'barebone-logger'; +import { pingLog, setLogger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import * as extension from '../extension'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockComposablePasteDestination.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockComposablePasteDestination.ts index 22ad868e9..187fdf5e4 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockComposablePasteDestination.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockComposablePasteDestination.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockVscodeAdapter.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockVscodeAdapter.ts index 029345e57..d8e24dd53 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockVscodeAdapter.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockVscodeAdapter.ts @@ -5,8 +5,8 @@ * Use createMockVscodeAdapter() for all test files except VscodeAdapter.test.ts. */ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockWiringServices.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockWiringServices.ts index 728bbfbbc..b588e3d0d 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockWiringServices.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/createMockWiringServices.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { WiringServices } from '../../createWiringServices'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/destinationTestHelpers.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/destinationTestHelpers.ts index 0ac25695d..fa527ba0f 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/destinationTestHelpers.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/destinationTestHelpers.ts @@ -5,7 +5,7 @@ * contract and behavior. Reduces duplication across destination test files. */ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { PasteDestination } from '../../destinations'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGeminiCodeAssistAvailable.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGeminiCodeAssistAvailable.ts index 4645458ec..2abfe861a 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGeminiCodeAssistAvailable.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGeminiCodeAssistAvailable.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; import * as isGeminiCodeAssistAvailableModule from '../../utils/aiAssistants/isGeminiCodeAssistAvailable'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGitHubCopilotChatAvailable.ts b/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGitHubCopilotChatAvailable.ts index 1b53921dc..052c5c975 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGitHubCopilotChatAvailable.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/helpers/spyOnIsGitHubCopilotChatAvailable.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; import * as isGitHubCopilotChatAvailableModule from '../../utils/aiAssistants/isGitHubCopilotChatAvailable'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts b/packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts index 42415ef00..0ab8b7ec8 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type * as vscode from 'vscode'; import { projectTestStatusFields, VscodeAdapter } from '../../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathDocumentProvider.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathDocumentProvider.test.ts index 09dfc4233..cfe7edee0 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathDocumentProvider.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathDocumentProvider.test.ts @@ -1,7 +1,7 @@ import os from 'node:os'; -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathNavigationHandler.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathNavigationHandler.test.ts index 15b982baf..a08f0ba2e 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathNavigationHandler.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathNavigationHandler.test.ts @@ -1,7 +1,7 @@ import os from 'node:os'; -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS, buildFilePathPattern, extractFilePath } from 'rangelink-core-ts'; import { FilePathNavigationHandler } from '../../navigation/FilePathNavigationHandler'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathTerminalProvider.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathTerminalProvider.test.ts index 4d64cac1a..44ed2e9d2 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathTerminalProvider.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/FilePathTerminalProvider.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkDocumentProvider.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkDocumentProvider.test.ts index 644769e6c..f00d39891 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkDocumentProvider.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkDocumentProvider.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { ParsedLink } from 'rangelink-core-ts'; import { DEFAULT_DELIMITERS, LinkType, SelectionType } from 'rangelink-core-ts'; import * as rangelinkCore from 'rangelink-core-ts'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkNavigationHandler.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkNavigationHandler.test.ts index 18cf2b08b..7c7f0d377 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkNavigationHandler.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkNavigationHandler.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS, LinkType, SelectionType } from 'rangelink-core-ts'; import type { ParsedLink } from 'rangelink-core-ts'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkTerminalProvider.test.ts b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkTerminalProvider.test.ts index a25213117..fc9b19597 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkTerminalProvider.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/navigation/RangeLinkTerminalProvider.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type { ParsedLink } from 'rangelink-core-ts'; import { DEFAULT_DELIMITERS, LinkType, SelectionType } from 'rangelink-core-ts'; // Namespace import enables jest.spyOn for findLinksInText without jest.mock() hoisting. diff --git a/packages/rangelink-vscode-extension/src/__tests__/notification/ReleaseNotifier.test.ts b/packages/rangelink-vscode-extension/src/__tests__/notification/ReleaseNotifier.test.ts index 1a102ddf3..7135f7a3b 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/notification/ReleaseNotifier.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/notification/ReleaseNotifier.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { ReleaseNotifier } from '../../notification/ReleaseNotifier'; import type { VersionInfo } from '../../types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/FilePathPaster.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/FilePathPaster.test.ts index f5ffab0dc..a3b7c1146 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/FilePathPaster.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/FilePathPaster.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { FilePathPaster, getReferencePath } from '../../services/FilePathPaster'; import * as handleDirtyBufferWarningModule from '../../services/handleDirtyBufferWarning'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/LinkGenerator.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/LinkGenerator.test.ts index 05343c701..afb3c9ea6 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/LinkGenerator.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/LinkGenerator.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { type DelimiterConfig, type DelimiterConfigGetter, Result } from 'rangelink-core-ts'; import * as handleDirtyBufferWarningModule from '../../services/handleDirtyBufferWarning'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/SendRouter.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/SendRouter.test.ts index cf6865f72..6bee97e6f 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/SendRouter.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/SendRouter.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { RangeLinkError, RangeLinkErrorCodes, Result } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/TerminalPasteService.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/TerminalPasteService.test.ts index f93bcde00..75cdaca7d 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/TerminalPasteService.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/TerminalPasteService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { RangeLinkExtensionError } from '../../errors/RangeLinkExtensionError'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/TerminalSelectionService.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/TerminalSelectionService.test.ts index d3c98426f..9513d4249 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/TerminalSelectionService.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/TerminalSelectionService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { Result } from 'rangelink-core-ts'; import { RangeLinkExtensionError } from '../../errors/RangeLinkExtensionError'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/TextSelectionPaster.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/TextSelectionPaster.test.ts index a11248a7c..a02ddcba3 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/TextSelectionPaster.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/TextSelectionPaster.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { TextSelectionPaster } from '../../services/TextSelectionPaster'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/services/handleDirtyBufferWarning.test.ts b/packages/rangelink-vscode-extension/src/__tests__/services/handleDirtyBufferWarning.test.ts index d830d68c4..9804c35e2 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/services/handleDirtyBufferWarning.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/services/handleDirtyBufferWarning.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { handleDirtyBufferWarning } from '../../services/handleDirtyBufferWarning'; import { FILE_PATH_DIRTY_BUFFER_CODES, LINK_DIRTY_BUFFER_CODES } from '../../services/types'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/statusBar/RangeLinkStatusBar.test.ts b/packages/rangelink-vscode-extension/src/__tests__/statusBar/RangeLinkStatusBar.test.ts index 28778b699..77c95769f 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/statusBar/RangeLinkStatusBar.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/statusBar/RangeLinkStatusBar.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import { diff --git a/packages/rangelink-vscode-extension/src/__tests__/toInputSelection.test.ts b/packages/rangelink-vscode-extension/src/__tests__/toInputSelection.test.ts index 72fc0c328..1721ea567 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/toInputSelection.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/toInputSelection.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { InputSelection } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.integration.test.ts b/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.integration.test.ts index 1ad72e8ac..2a891575b 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.integration.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.integration.test.ts @@ -7,7 +7,7 @@ * * Purpose: Ensure mocks used in unit tests accurately represent real rangelink-core-ts behavior. */ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { type DelimiterConfig, type FormattedLink, LinkType } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.test.ts b/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.test.ts index e40a07e2e..ad64540dd 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/utils/generateLinkFromSelections.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { CoreResult, DelimiterConfig, diff --git a/packages/rangelink-vscode-extension/src/bookmarks/BookmarkService.ts b/packages/rangelink-vscode-extension/src/bookmarks/BookmarkService.ts index 5195d55aa..04fa8c8f7 100644 --- a/packages/rangelink-vscode-extension/src/bookmarks/BookmarkService.ts +++ b/packages/rangelink-vscode-extension/src/bookmarks/BookmarkService.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { ConfigReader } from '../config/ConfigReader'; import { diff --git a/packages/rangelink-vscode-extension/src/bookmarks/BookmarksStore.ts b/packages/rangelink-vscode-extension/src/bookmarks/BookmarksStore.ts index 1b076965b..d9956756a 100644 --- a/packages/rangelink-vscode-extension/src/bookmarks/BookmarksStore.ts +++ b/packages/rangelink-vscode-extension/src/bookmarks/BookmarksStore.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { nanoid } from 'nanoid'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarkService.test.ts b/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarkService.test.ts index 066ddec77..ed6003f33 100644 --- a/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarkService.test.ts +++ b/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarkService.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockBookmarksStore, diff --git a/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarksStore.test.ts b/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarksStore.test.ts index 2a6d87528..f3bacdb60 100644 --- a/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarksStore.test.ts +++ b/packages/rangelink-vscode-extension/src/bookmarks/__tests__/BookmarksStore.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockMemento, type MockMemento } from '../../__tests__/helpers'; import { BookmarksStore } from '../BookmarksStore'; diff --git a/packages/rangelink-vscode-extension/src/clipboard/ClipboardService.ts b/packages/rangelink-vscode-extension/src/clipboard/ClipboardService.ts index ba77ab8f2..d61bf9b8a 100644 --- a/packages/rangelink-vscode-extension/src/clipboard/ClipboardService.ts +++ b/packages/rangelink-vscode-extension/src/clipboard/ClipboardService.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type { ConfigReader } from '../config/ConfigReader'; diff --git a/packages/rangelink-vscode-extension/src/commands/AddBookmarkCommand.ts b/packages/rangelink-vscode-extension/src/commands/AddBookmarkCommand.ts index 1d69c63f0..5d42b3e99 100644 --- a/packages/rangelink-vscode-extension/src/commands/AddBookmarkCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/AddBookmarkCommand.ts @@ -1,6 +1,6 @@ import * as path from 'node:path'; -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { type DelimiterConfigGetter, LinkType, diff --git a/packages/rangelink-vscode-extension/src/commands/BindToDestinationCommand.ts b/packages/rangelink-vscode-extension/src/commands/BindToDestinationCommand.ts index 93615dde9..7c71aa917 100644 --- a/packages/rangelink-vscode-extension/src/commands/BindToDestinationCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/BindToDestinationCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { BoundSession, DestinationBinder } from '../destinations'; import type { DestinationPicker } from '../destinations/DestinationPicker'; diff --git a/packages/rangelink-vscode-extension/src/commands/BindToTerminalCommand.ts b/packages/rangelink-vscode-extension/src/commands/BindToTerminalCommand.ts index 96b2834b8..1e5f7adec 100644 --- a/packages/rangelink-vscode-extension/src/commands/BindToTerminalCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/BindToTerminalCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { diff --git a/packages/rangelink-vscode-extension/src/commands/BindToTextEditorCommand.ts b/packages/rangelink-vscode-extension/src/commands/BindToTextEditorCommand.ts index 317e9bedb..d186c70bf 100644 --- a/packages/rangelink-vscode-extension/src/commands/BindToTextEditorCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/BindToTextEditorCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { diff --git a/packages/rangelink-vscode-extension/src/commands/GoToRangeLinkCommand.ts b/packages/rangelink-vscode-extension/src/commands/GoToRangeLinkCommand.ts index 8738b43de..76ee934de 100644 --- a/packages/rangelink-vscode-extension/src/commands/GoToRangeLinkCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/GoToRangeLinkCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../ide/vscode/VscodeAdapter'; import type { RangeLinkNavigationHandler } from '../navigation/RangeLinkNavigationHandler'; diff --git a/packages/rangelink-vscode-extension/src/commands/JumpToDestinationCommand.ts b/packages/rangelink-vscode-extension/src/commands/JumpToDestinationCommand.ts index 872ed8221..c5dc687ee 100644 --- a/packages/rangelink-vscode-extension/src/commands/JumpToDestinationCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/JumpToDestinationCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { BoundSession, DestinationFocuser } from '../destinations'; import type { DestinationPicker } from '../destinations/DestinationPicker'; diff --git a/packages/rangelink-vscode-extension/src/commands/ListBookmarksCommand.ts b/packages/rangelink-vscode-extension/src/commands/ListBookmarksCommand.ts index 389b172b6..dd04820e6 100644 --- a/packages/rangelink-vscode-extension/src/commands/ListBookmarksCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/ListBookmarksCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import type { Bookmark } from '../bookmarks'; diff --git a/packages/rangelink-vscode-extension/src/commands/ManageBookmarksCommand.ts b/packages/rangelink-vscode-extension/src/commands/ManageBookmarksCommand.ts index d7d913197..52bce3e76 100644 --- a/packages/rangelink-vscode-extension/src/commands/ManageBookmarksCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/ManageBookmarksCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import type { Bookmark, BookmarkService } from '../bookmarks'; diff --git a/packages/rangelink-vscode-extension/src/commands/ShowVersionCommand.ts b/packages/rangelink-vscode-extension/src/commands/ShowVersionCommand.ts index 825fd4fe3..5856a28bc 100644 --- a/packages/rangelink-vscode-extension/src/commands/ShowVersionCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/ShowVersionCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../ide/vscode/VscodeAdapter'; import { MessageCode, type VersionInfo } from '../types'; diff --git a/packages/rangelink-vscode-extension/src/commands/createBindAIAssistantCommand.ts b/packages/rangelink-vscode-extension/src/commands/createBindAIAssistantCommand.ts index feee793b6..38eeeccf4 100644 --- a/packages/rangelink-vscode-extension/src/commands/createBindAIAssistantCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/createBindAIAssistantCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DestinationAvailabilityService } from '../destinations/DestinationAvailabilityService'; import type { PasteDestinationManager } from '../destinations/PasteDestinationManager'; diff --git a/packages/rangelink-vscode-extension/src/commands/createBindToCustomAiByIdCommand.ts b/packages/rangelink-vscode-extension/src/commands/createBindToCustomAiByIdCommand.ts index 0c84771c3..95e2902f0 100644 --- a/packages/rangelink-vscode-extension/src/commands/createBindToCustomAiByIdCommand.ts +++ b/packages/rangelink-vscode-extension/src/commands/createBindToCustomAiByIdCommand.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { CustomAiAssistantConfig } from '../config/parseCustomAiAssistants'; import { resolveKindByExtensionId } from '../destinations/destinationBuilders'; diff --git a/packages/rangelink-vscode-extension/src/config/ConfigReader.ts b/packages/rangelink-vscode-extension/src/config/ConfigReader.ts index cc6fddef3..a605f82dd 100644 --- a/packages/rangelink-vscode-extension/src/config/ConfigReader.ts +++ b/packages/rangelink-vscode-extension/src/config/ConfigReader.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { SETTING_NAMESPACE } from '../constants/settingKeys'; import type { ConfigurationProvider } from '../ide/ConfigurationProvider'; diff --git a/packages/rangelink-vscode-extension/src/config/DelimiterCache.ts b/packages/rangelink-vscode-extension/src/config/DelimiterCache.ts index 703ca18c2..a6d2d44f3 100644 --- a/packages/rangelink-vscode-extension/src/config/DelimiterCache.ts +++ b/packages/rangelink-vscode-extension/src/config/DelimiterCache.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfig } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/config/__tests__/ConfigReader.test.ts b/packages/rangelink-vscode-extension/src/config/__tests__/ConfigReader.test.ts index d9863bb97..686aaab63 100644 --- a/packages/rangelink-vscode-extension/src/config/__tests__/ConfigReader.test.ts +++ b/packages/rangelink-vscode-extension/src/config/__tests__/ConfigReader.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockConfigGetter, createMockConfigurationProvider } from '../../__tests__/helpers'; import type { PaddingMode } from '../../utils/applySmartPadding'; diff --git a/packages/rangelink-vscode-extension/src/config/__tests__/DelimiterCache.test.ts b/packages/rangelink-vscode-extension/src/config/__tests__/DelimiterCache.test.ts index a7e5386ab..505044fcb 100644 --- a/packages/rangelink-vscode-extension/src/config/__tests__/DelimiterCache.test.ts +++ b/packages/rangelink-vscode-extension/src/config/__tests__/DelimiterCache.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import { diff --git a/packages/rangelink-vscode-extension/src/config/__tests__/getDelimitersForExtension.test.ts b/packages/rangelink-vscode-extension/src/config/__tests__/getDelimitersForExtension.test.ts index a888c44d8..aa0aa33bc 100644 --- a/packages/rangelink-vscode-extension/src/config/__tests__/getDelimitersForExtension.test.ts +++ b/packages/rangelink-vscode-extension/src/config/__tests__/getDelimitersForExtension.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import { createMockConfigGetter, createMockErrorFeedbackProvider } from '../../__tests__/helpers'; diff --git a/packages/rangelink-vscode-extension/src/config/__tests__/loadDelimiterConfig.test.ts b/packages/rangelink-vscode-extension/src/config/__tests__/loadDelimiterConfig.test.ts index c4cf15a88..5c237a041 100644 --- a/packages/rangelink-vscode-extension/src/config/__tests__/loadDelimiterConfig.test.ts +++ b/packages/rangelink-vscode-extension/src/config/__tests__/loadDelimiterConfig.test.ts @@ -1,5 +1,5 @@ -import type { Logger } from 'barebone-logger'; -import { createMockLogger } from 'barebone-logger-testing'; +import type { Logger } from '@couimet/logger-contract'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { DEFAULT_DELIMITERS } from 'rangelink-core-ts'; import { loadDelimiterConfig } from '../loadDelimiterConfig'; diff --git a/packages/rangelink-vscode-extension/src/config/__tests__/parseCustomAiAssistants.test.ts b/packages/rangelink-vscode-extension/src/config/__tests__/parseCustomAiAssistants.test.ts index 651e14da2..eec365966 100644 --- a/packages/rangelink-vscode-extension/src/config/__tests__/parseCustomAiAssistants.test.ts +++ b/packages/rangelink-vscode-extension/src/config/__tests__/parseCustomAiAssistants.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockConfigReader } from '../../__tests__/helpers'; import { parseCustomAiAssistants } from '../parseCustomAiAssistants'; diff --git a/packages/rangelink-vscode-extension/src/config/getDelimitersForExtension.ts b/packages/rangelink-vscode-extension/src/config/getDelimitersForExtension.ts index d044dba62..79aa770a1 100644 --- a/packages/rangelink-vscode-extension/src/config/getDelimitersForExtension.ts +++ b/packages/rangelink-vscode-extension/src/config/getDelimitersForExtension.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfig } from 'rangelink-core-ts'; import type { ErrorFeedbackProvider } from '../ide/ErrorFeedbackProvider'; diff --git a/packages/rangelink-vscode-extension/src/config/loadDelimiterConfig.ts b/packages/rangelink-vscode-extension/src/config/loadDelimiterConfig.ts index 1a3ecaad1..aec95a9f6 100644 --- a/packages/rangelink-vscode-extension/src/config/loadDelimiterConfig.ts +++ b/packages/rangelink-vscode-extension/src/config/loadDelimiterConfig.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { DEFAULT_DELIMITERS, type RangeLinkError } from 'rangelink-core-ts'; import { diff --git a/packages/rangelink-vscode-extension/src/config/logging.ts b/packages/rangelink-vscode-extension/src/config/logging.ts index 7e77bfefc..d2d3eaa10 100644 --- a/packages/rangelink-vscode-extension/src/config/logging.ts +++ b/packages/rangelink-vscode-extension/src/config/logging.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfig, RangeLinkError } from 'rangelink-core-ts'; import type { DelimiterConfigSources } from './types'; diff --git a/packages/rangelink-vscode-extension/src/config/parseCustomAiAssistants.ts b/packages/rangelink-vscode-extension/src/config/parseCustomAiAssistants.ts index 2e6497469..6fb38e985 100644 --- a/packages/rangelink-vscode-extension/src/config/parseCustomAiAssistants.ts +++ b/packages/rangelink-vscode-extension/src/config/parseCustomAiAssistants.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { InsertCommandEntry } from '../destinations/capabilities/insertFactories'; import type { CustomAiAssistantKind } from '../types'; diff --git a/packages/rangelink-vscode-extension/src/contextKeys/ContextKeyService.ts b/packages/rangelink-vscode-extension/src/contextKeys/ContextKeyService.ts index a9805f741..1deba5836 100644 --- a/packages/rangelink-vscode-extension/src/contextKeys/ContextKeyService.ts +++ b/packages/rangelink-vscode-extension/src/contextKeys/ContextKeyService.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import { diff --git a/packages/rangelink-vscode-extension/src/createWiringServices.ts b/packages/rangelink-vscode-extension/src/createWiringServices.ts index 3bfc92090..625fb1fa9 100644 --- a/packages/rangelink-vscode-extension/src/createWiringServices.ts +++ b/packages/rangelink-vscode-extension/src/createWiringServices.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfigGetter } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/destinations/BoundSession.ts b/packages/rangelink-vscode-extension/src/destinations/BoundSession.ts index afba3651a..bb7017311 100644 --- a/packages/rangelink-vscode-extension/src/destinations/BoundSession.ts +++ b/packages/rangelink-vscode-extension/src/destinations/BoundSession.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import type { LifecycleFeedbackProvider } from '../feedback'; diff --git a/packages/rangelink-vscode-extension/src/destinations/ComposablePasteDestination.ts b/packages/rangelink-vscode-extension/src/destinations/ComposablePasteDestination.ts index 8a25733f1..e92615490 100644 --- a/packages/rangelink-vscode-extension/src/destinations/ComposablePasteDestination.ts +++ b/packages/rangelink-vscode-extension/src/destinations/ComposablePasteDestination.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import type { FormattedLink } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/destinations/DestinationAvailabilityService.ts b/packages/rangelink-vscode-extension/src/destinations/DestinationAvailabilityService.ts index d02decd0d..6ad517370 100644 --- a/packages/rangelink-vscode-extension/src/destinations/DestinationAvailabilityService.ts +++ b/packages/rangelink-vscode-extension/src/destinations/DestinationAvailabilityService.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { ConfigReader } from '../config'; import { diff --git a/packages/rangelink-vscode-extension/src/destinations/DestinationPicker.ts b/packages/rangelink-vscode-extension/src/destinations/DestinationPicker.ts index 18cebfb31..15e5b225d 100644 --- a/packages/rangelink-vscode-extension/src/destinations/DestinationPicker.ts +++ b/packages/rangelink-vscode-extension/src/destinations/DestinationPicker.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../errors'; import type { MessageProvider } from '../ide/MessageProvider'; diff --git a/packages/rangelink-vscode-extension/src/destinations/DestinationRegistry.ts b/packages/rangelink-vscode-extension/src/destinations/DestinationRegistry.ts index 4c6bbe050..c1fbe1aca 100644 --- a/packages/rangelink-vscode-extension/src/destinations/DestinationRegistry.ts +++ b/packages/rangelink-vscode-extension/src/destinations/DestinationRegistry.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { ConfigReader } from '../config/ConfigReader'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../errors'; diff --git a/packages/rangelink-vscode-extension/src/destinations/PasteDestinationManager.ts b/packages/rangelink-vscode-extension/src/destinations/PasteDestinationManager.ts index 59719a631..0c5c63378 100644 --- a/packages/rangelink-vscode-extension/src/destinations/PasteDestinationManager.ts +++ b/packages/rangelink-vscode-extension/src/destinations/PasteDestinationManager.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import type { FormattedLink } from 'rangelink-core-ts'; import { RangeLinkExtensionError } from '../errors/RangeLinkExtensionError'; diff --git a/packages/rangelink-vscode-extension/src/destinations/__tests__/BoundSession.test.ts b/packages/rangelink-vscode-extension/src/destinations/__tests__/BoundSession.test.ts index 2b2853ad0..e37703c3d 100644 --- a/packages/rangelink-vscode-extension/src/destinations/__tests__/BoundSession.test.ts +++ b/packages/rangelink-vscode-extension/src/destinations/__tests__/BoundSession.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type * as vscode from 'vscode'; import { diff --git a/packages/rangelink-vscode-extension/src/destinations/__tests__/createMultiColumnGuard.test.ts b/packages/rangelink-vscode-extension/src/destinations/__tests__/createMultiColumnGuard.test.ts index 85190daa2..e885c7258 100644 --- a/packages/rangelink-vscode-extension/src/destinations/__tests__/createMultiColumnGuard.test.ts +++ b/packages/rangelink-vscode-extension/src/destinations/__tests__/createMultiColumnGuard.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import type * as vscode from 'vscode'; import { createMockOperationFeedbackProvider, createMockUri } from '../../__tests__/helpers'; diff --git a/packages/rangelink-vscode-extension/src/destinations/__tests__/createTabCloseGuard.test.ts b/packages/rangelink-vscode-extension/src/destinations/__tests__/createTabCloseGuard.test.ts index 9018ea0cb..57d013887 100644 --- a/packages/rangelink-vscode-extension/src/destinations/__tests__/createTabCloseGuard.test.ts +++ b/packages/rangelink-vscode-extension/src/destinations/__tests__/createTabCloseGuard.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import * as vscode from 'vscode'; import { createMockOperationFeedbackProvider, createMockUri } from '../../__tests__/helpers'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/AIAssistantFocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/AIAssistantFocusCapability.ts index dd1d976dc..308c82288 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/AIAssistantFocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/AIAssistantFocusCapability.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import { FOCUS_TO_PASTE_DELAY_MS } from '../../constants/aiAssistantPasteConstants'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/ContentEligibilityChecker.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/ContentEligibilityChecker.ts index 3e37609ef..43c407aab 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/ContentEligibilityChecker.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/ContentEligibilityChecker.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { isEligibleForPaste } from '../../utils'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/EditorFocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/EditorFocusCapability.ts index 79340750c..c1e5f9545 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/EditorFocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/EditorFocusCapability.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityChecker.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityChecker.ts index b99ff7595..37c8eecc1 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityChecker.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityChecker.ts @@ -1,4 +1,4 @@ -import type { LoggingContext } from 'barebone-logger'; +import type { LoggingContext } from '@couimet/logger-contract'; /** * Checks if paste operation is eligible based on business rules. diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityCheckerFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityCheckerFactory.ts index 8f5095542..ba76d4f54 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityCheckerFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/EligibilityCheckerFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { ContentEligibilityChecker } from './ContentEligibilityChecker'; import type { EligibilityChecker } from './EligibilityChecker'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapability.ts index f84d7ad11..b9d0cc538 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapability.ts @@ -1,4 +1,4 @@ -import type { LoggingContext } from 'barebone-logger'; +import type { LoggingContext } from '@couimet/logger-contract'; import type { Result } from 'rangelink-core-ts'; /** diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapabilityFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapabilityFactory.ts index 350fdff20..1e504bc4e 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapabilityFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/FocusCapabilityFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { CustomAiAssistantConfig } from '../../config/parseCustomAiAssistants'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/LazyResolvedFocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/LazyResolvedFocusCapability.ts index e39f39128..685c98268 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/LazyResolvedFocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/LazyResolvedFocusCapability.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/ResolvedFocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/ResolvedFocusCapability.ts index a73cd79fc..deb9a47c7 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/ResolvedFocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/ResolvedFocusCapability.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/TerminalFocusCapability.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/TerminalFocusCapability.ts index 261a88bfe..2f3a32ba0 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/TerminalFocusCapability.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/TerminalFocusCapability.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts index 8aee1f2b4..c3615ca70 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/directInsertFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/directInsertFactory.ts index abb6ddb90..34a68c061 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/directInsertFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/directInsertFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../../ide/vscode/VscodeAdapter'; import { interpolateArgs } from '../../../utils'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/editorInsertFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/editorInsertFactory.ts index 5947454a1..f47a66d3c 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/editorInsertFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/editorInsertFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { VscodeAdapter } from '../../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/manualPasteInsertFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/manualPasteInsertFactory.ts index 226f317bb..666b616b3 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/manualPasteInsertFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/manualPasteInsertFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { InsertFactory } from './InsertFactory'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/terminalInsertFactory.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/terminalInsertFactory.ts index 6d92ef786..deb21df84 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/terminalInsertFactory.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/terminalInsertFactory.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { TerminalPasteService } from '../../../services'; diff --git a/packages/rangelink-vscode-extension/src/destinations/capabilities/resolveFocusTier.ts b/packages/rangelink-vscode-extension/src/destinations/capabilities/resolveFocusTier.ts index 7c58cbb12..266eee9f3 100644 --- a/packages/rangelink-vscode-extension/src/destinations/capabilities/resolveFocusTier.ts +++ b/packages/rangelink-vscode-extension/src/destinations/capabilities/resolveFocusTier.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { FocusTier } from '../types'; diff --git a/packages/rangelink-vscode-extension/src/destinations/createMultiColumnGuard.ts b/packages/rangelink-vscode-extension/src/destinations/createMultiColumnGuard.ts index 5ea72da14..af22eb9e6 100644 --- a/packages/rangelink-vscode-extension/src/destinations/createMultiColumnGuard.ts +++ b/packages/rangelink-vscode-extension/src/destinations/createMultiColumnGuard.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { LifecycleFeedbackProvider } from '../feedback'; diff --git a/packages/rangelink-vscode-extension/src/destinations/createTabCloseGuard.ts b/packages/rangelink-vscode-extension/src/destinations/createTabCloseGuard.ts index 31ce8c486..10c751bac 100644 --- a/packages/rangelink-vscode-extension/src/destinations/createTabCloseGuard.ts +++ b/packages/rangelink-vscode-extension/src/destinations/createTabCloseGuard.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import type { LifecycleFeedbackProvider } from '../feedback'; diff --git a/packages/rangelink-vscode-extension/src/destinations/utils/showFilePicker.ts b/packages/rangelink-vscode-extension/src/destinations/utils/showFilePicker.ts index e04aa5bca..0a16b78b7 100644 --- a/packages/rangelink-vscode-extension/src/destinations/utils/showFilePicker.ts +++ b/packages/rangelink-vscode-extension/src/destinations/utils/showFilePicker.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../../errors'; import type { QuickPickProvider } from '../../ide/QuickPickProvider'; diff --git a/packages/rangelink-vscode-extension/src/destinations/utils/showTerminalPicker.ts b/packages/rangelink-vscode-extension/src/destinations/utils/showTerminalPicker.ts index 7f02630cf..7ba0273e1 100644 --- a/packages/rangelink-vscode-extension/src/destinations/utils/showTerminalPicker.ts +++ b/packages/rangelink-vscode-extension/src/destinations/utils/showTerminalPicker.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../../errors'; import type { QuickPickProvider } from '../../ide/QuickPickProvider'; diff --git a/packages/rangelink-vscode-extension/src/extension.ts b/packages/rangelink-vscode-extension/src/extension.ts index 089f34e67..af1699ab6 100644 --- a/packages/rangelink-vscode-extension/src/extension.ts +++ b/packages/rangelink-vscode-extension/src/extension.ts @@ -1,4 +1,4 @@ -import { getLogger, setLogger } from 'barebone-logger'; +import { getLogger, setLogger } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import { createWiringServices } from './createWiringServices'; diff --git a/packages/rangelink-vscode-extension/src/i18n/LocaleManager.ts b/packages/rangelink-vscode-extension/src/i18n/LocaleManager.ts index eb24e0e17..62703d13f 100644 --- a/packages/rangelink-vscode-extension/src/i18n/LocaleManager.ts +++ b/packages/rangelink-vscode-extension/src/i18n/LocaleManager.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { DEFAULT_LOCALE, diff --git a/packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts b/packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts index ba2aca359..45cb0741c 100644 --- a/packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts +++ b/packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/navigation/FilePathDocumentProvider.ts b/packages/rangelink-vscode-extension/src/navigation/FilePathDocumentProvider.ts index 0682414c8..25ade71ce 100644 --- a/packages/rangelink-vscode-extension/src/navigation/FilePathDocumentProvider.ts +++ b/packages/rangelink-vscode-extension/src/navigation/FilePathDocumentProvider.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfigGetter } from 'rangelink-core-ts'; import { buildFilePathPattern, extractFilePath } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/navigation/FilePathNavigationHandler.ts b/packages/rangelink-vscode-extension/src/navigation/FilePathNavigationHandler.ts index f52d8ad5b..9d4beaaff 100644 --- a/packages/rangelink-vscode-extension/src/navigation/FilePathNavigationHandler.ts +++ b/packages/rangelink-vscode-extension/src/navigation/FilePathNavigationHandler.ts @@ -1,6 +1,6 @@ import os from 'node:os'; -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../ide/vscode/VscodeAdapter'; import { FILENAME_AMBIGUOUS, MessageCode } from '../types'; diff --git a/packages/rangelink-vscode-extension/src/navigation/FilePathTerminalProvider.ts b/packages/rangelink-vscode-extension/src/navigation/FilePathTerminalProvider.ts index 053f723bc..407f58ec5 100644 --- a/packages/rangelink-vscode-extension/src/navigation/FilePathTerminalProvider.ts +++ b/packages/rangelink-vscode-extension/src/navigation/FilePathTerminalProvider.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfigGetter } from 'rangelink-core-ts'; import { buildFilePathPattern, extractFilePath } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/navigation/RangeLinkDocumentProvider.ts b/packages/rangelink-vscode-extension/src/navigation/RangeLinkDocumentProvider.ts index a5a3f1e7b..959ca4194 100644 --- a/packages/rangelink-vscode-extension/src/navigation/RangeLinkDocumentProvider.ts +++ b/packages/rangelink-vscode-extension/src/navigation/RangeLinkDocumentProvider.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfigGetter } from 'rangelink-core-ts'; import { findLinksInText } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/navigation/RangeLinkNavigationHandler.ts b/packages/rangelink-vscode-extension/src/navigation/RangeLinkNavigationHandler.ts index c95bd5f24..b4d500af7 100644 --- a/packages/rangelink-vscode-extension/src/navigation/RangeLinkNavigationHandler.ts +++ b/packages/rangelink-vscode-extension/src/navigation/RangeLinkNavigationHandler.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { CoreResult, DelimiterConfigGetter, ParsedLink } from 'rangelink-core-ts'; import { SelectionType, parseLink } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/navigation/RangeLinkTerminalProvider.ts b/packages/rangelink-vscode-extension/src/navigation/RangeLinkTerminalProvider.ts index 29a054650..0d82b9e9f 100644 --- a/packages/rangelink-vscode-extension/src/navigation/RangeLinkTerminalProvider.ts +++ b/packages/rangelink-vscode-extension/src/navigation/RangeLinkTerminalProvider.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { DelimiterConfigGetter } from 'rangelink-core-ts'; import { findLinksInText } from 'rangelink-core-ts'; import * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/notification/ReleaseNotifier.ts b/packages/rangelink-vscode-extension/src/notification/ReleaseNotifier.ts index 08ef34679..a49e4d9dd 100644 --- a/packages/rangelink-vscode-extension/src/notification/ReleaseNotifier.ts +++ b/packages/rangelink-vscode-extension/src/notification/ReleaseNotifier.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { VscodeAdapter } from '../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/services/FilePathPaster.ts b/packages/rangelink-vscode-extension/src/services/FilePathPaster.ts index f8c367abd..06760bfff 100644 --- a/packages/rangelink-vscode-extension/src/services/FilePathPaster.ts +++ b/packages/rangelink-vscode-extension/src/services/FilePathPaster.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { quotePath } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/services/LinkGenerator.ts b/packages/rangelink-vscode-extension/src/services/LinkGenerator.ts index b733e58cc..017ecf354 100644 --- a/packages/rangelink-vscode-extension/src/services/LinkGenerator.ts +++ b/packages/rangelink-vscode-extension/src/services/LinkGenerator.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { type DelimiterConfigGetter, type FormattedLink, LinkType } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/services/SelectionValidator.ts b/packages/rangelink-vscode-extension/src/services/SelectionValidator.ts index 5c36f24d4..eea8f7354 100644 --- a/packages/rangelink-vscode-extension/src/services/SelectionValidator.ts +++ b/packages/rangelink-vscode-extension/src/services/SelectionValidator.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { VscodeAdapter } from '../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/services/SendRouter.ts b/packages/rangelink-vscode-extension/src/services/SendRouter.ts index dae7845b5..096972474 100644 --- a/packages/rangelink-vscode-extension/src/services/SendRouter.ts +++ b/packages/rangelink-vscode-extension/src/services/SendRouter.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import type { ClipboardService } from '../clipboard/ClipboardService'; import type { diff --git a/packages/rangelink-vscode-extension/src/services/TerminalPasteService.ts b/packages/rangelink-vscode-extension/src/services/TerminalPasteService.ts index 3b9088264..eb8ea8cc0 100644 --- a/packages/rangelink-vscode-extension/src/services/TerminalPasteService.ts +++ b/packages/rangelink-vscode-extension/src/services/TerminalPasteService.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import { Result } from 'rangelink-core-ts'; import type * as vscode from 'vscode'; diff --git a/packages/rangelink-vscode-extension/src/services/TerminalSelectionService.ts b/packages/rangelink-vscode-extension/src/services/TerminalSelectionService.ts index dcdbef9b0..a5f12c22b 100644 --- a/packages/rangelink-vscode-extension/src/services/TerminalSelectionService.ts +++ b/packages/rangelink-vscode-extension/src/services/TerminalSelectionService.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import type { ClipboardService } from '../clipboard/ClipboardService'; import type { ConfigReader } from '../config/ConfigReader'; diff --git a/packages/rangelink-vscode-extension/src/services/TextSelectionPaster.ts b/packages/rangelink-vscode-extension/src/services/TextSelectionPaster.ts index 42dd3b402..d36390f04 100644 --- a/packages/rangelink-vscode-extension/src/services/TextSelectionPaster.ts +++ b/packages/rangelink-vscode-extension/src/services/TextSelectionPaster.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { ConfigReader } from '../config/ConfigReader'; import { diff --git a/packages/rangelink-vscode-extension/src/services/__tests__/SelectionValidator.test.ts b/packages/rangelink-vscode-extension/src/services/__tests__/SelectionValidator.test.ts index c13095207..75919dce3 100644 --- a/packages/rangelink-vscode-extension/src/services/__tests__/SelectionValidator.test.ts +++ b/packages/rangelink-vscode-extension/src/services/__tests__/SelectionValidator.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockDocument, diff --git a/packages/rangelink-vscode-extension/src/services/handleDirtyBufferWarning.ts b/packages/rangelink-vscode-extension/src/services/handleDirtyBufferWarning.ts index 16069a6cb..927750213 100644 --- a/packages/rangelink-vscode-extension/src/services/handleDirtyBufferWarning.ts +++ b/packages/rangelink-vscode-extension/src/services/handleDirtyBufferWarning.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; import type { ConfigReader } from '../config/ConfigReader'; diff --git a/packages/rangelink-vscode-extension/src/statusBar/RangeLinkStatusBar.ts b/packages/rangelink-vscode-extension/src/statusBar/RangeLinkStatusBar.ts index 3cfd7b76f..83505d4cc 100644 --- a/packages/rangelink-vscode-extension/src/statusBar/RangeLinkStatusBar.ts +++ b/packages/rangelink-vscode-extension/src/statusBar/RangeLinkStatusBar.ts @@ -1,4 +1,4 @@ -import type { Logger, LoggingContext } from 'barebone-logger'; +import type { Logger, LoggingContext } from '@couimet/logger-contract'; import * as vscode from 'vscode'; import type { BookmarkService } from '../bookmarks'; diff --git a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isClaudeCodeAvailable.test.ts b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isClaudeCodeAvailable.test.ts index 1fc1c1a97..4a8cc3460 100644 --- a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isClaudeCodeAvailable.test.ts +++ b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isClaudeCodeAvailable.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockVscodeAdapter, diff --git a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isCursorIDEDetected.test.ts b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isCursorIDEDetected.test.ts index 0548553a8..dfea1a9bc 100644 --- a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isCursorIDEDetected.test.ts +++ b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isCursorIDEDetected.test.ts @@ -2,7 +2,7 @@ * Tests for isCursorIDEDetected utility. */ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockVscodeAdapter, diff --git a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGeminiCodeAssistAvailable.test.ts b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGeminiCodeAssistAvailable.test.ts index 7e95be90b..0b2a2aa1e 100644 --- a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGeminiCodeAssistAvailable.test.ts +++ b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGeminiCodeAssistAvailable.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockVscodeAdapter, diff --git a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGitHubCopilotChatAvailable.test.ts b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGitHubCopilotChatAvailable.test.ts index be0f2c245..cc738b189 100644 --- a/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGitHubCopilotChatAvailable.test.ts +++ b/packages/rangelink-vscode-extension/src/utils/__tests__/aiAssistants/isGitHubCopilotChatAvailable.test.ts @@ -1,4 +1,4 @@ -import { createMockLogger } from 'barebone-logger-testing'; +import { createMockLogger } from '@couimet/logger-contract-testing'; import { createMockVscodeAdapter, diff --git a/packages/rangelink-vscode-extension/src/utils/__tests__/formatMessage.test.ts b/packages/rangelink-vscode-extension/src/utils/__tests__/formatMessage.test.ts index 57bea44ee..b79157479 100644 --- a/packages/rangelink-vscode-extension/src/utils/__tests__/formatMessage.test.ts +++ b/packages/rangelink-vscode-extension/src/utils/__tests__/formatMessage.test.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { formatMessage } from '..'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../../errors'; diff --git a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isClaudeCodeAvailable.ts b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isClaudeCodeAvailable.ts index 8f154c07d..7f05780ea 100644 --- a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isClaudeCodeAvailable.ts +++ b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isClaudeCodeAvailable.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isCursorIDEDetected.ts b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isCursorIDEDetected.ts index 5ec02a3ca..b3aa9ca92 100644 --- a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isCursorIDEDetected.ts +++ b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isCursorIDEDetected.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { Extension } from 'vscode'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGeminiCodeAssistAvailable.ts b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGeminiCodeAssistAvailable.ts index 6f878d402..a6507039f 100644 --- a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGeminiCodeAssistAvailable.ts +++ b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGeminiCodeAssistAvailable.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGitHubCopilotChatAvailable.ts b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGitHubCopilotChatAvailable.ts index ce00dd081..6ad5c5595 100644 --- a/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGitHubCopilotChatAvailable.ts +++ b/packages/rangelink-vscode-extension/src/utils/aiAssistants/isGitHubCopilotChatAvailable.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { GITHUB_COPILOT_CHAT_FOCUS_COMMANDS } from '../../destinations/aiAssistantFocusCommands'; import type { VscodeAdapter } from '../../ide/vscode/VscodeAdapter'; diff --git a/packages/rangelink-vscode-extension/src/utils/formatMessage.ts b/packages/rangelink-vscode-extension/src/utils/formatMessage.ts index 33689c9b6..b5319597a 100644 --- a/packages/rangelink-vscode-extension/src/utils/formatMessage.ts +++ b/packages/rangelink-vscode-extension/src/utils/formatMessage.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import { RangeLinkExtensionError, RangeLinkExtensionErrorCodes } from '../errors'; import { diff --git a/packages/rangelink-vscode-extension/src/utils/generateLinkFromSelections.ts b/packages/rangelink-vscode-extension/src/utils/generateLinkFromSelections.ts index 5280e4e17..e0bafbe1e 100644 --- a/packages/rangelink-vscode-extension/src/utils/generateLinkFromSelections.ts +++ b/packages/rangelink-vscode-extension/src/utils/generateLinkFromSelections.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { DelimiterConfig, formatLink, diff --git a/packages/rangelink-vscode-extension/src/utils/registerWithLogging.ts b/packages/rangelink-vscode-extension/src/utils/registerWithLogging.ts index 19ba82d4a..45f151e9a 100644 --- a/packages/rangelink-vscode-extension/src/utils/registerWithLogging.ts +++ b/packages/rangelink-vscode-extension/src/utils/registerWithLogging.ts @@ -1,4 +1,4 @@ -import { getLogger } from 'barebone-logger'; +import { getLogger } from '@couimet/logger-contract'; import type * as vscode from 'vscode'; /** diff --git a/packages/rangelink-vscode-extension/src/utils/toInputSelection.ts b/packages/rangelink-vscode-extension/src/utils/toInputSelection.ts index 1d5087edc..b616b5668 100644 --- a/packages/rangelink-vscode-extension/src/utils/toInputSelection.ts +++ b/packages/rangelink-vscode-extension/src/utils/toInputSelection.ts @@ -1,4 +1,4 @@ -import type { Logger } from 'barebone-logger'; +import type { Logger } from '@couimet/logger-contract'; import { InputSelection, Selection, SelectionCoverage, SelectionType } from 'rangelink-core-ts'; import * as vscode from 'vscode'; From e98fd38749ad8c8004497f66ea9ae0f661b0716f Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 11:57:03 -0400 Subject: [PATCH 06/10] [feat] Log logger-contract version on extension activation After migrating to external @couimet/logger-* packages we had no runtime visibility into which version was actually loaded. The activation log now includes loggerContractVersion as a structured field, resolved independently from version.json so one failing does not block the other. A failed resolution logs a warning instead of being silent. Tests now centralize DEFAULT_DELIMITERS and createMockConfig() at file scope, eliminating 13 repeated inline mock config definitions. A new Activation logging test suite covers the success path (parsed JSON with key presence assertions on dynamic build fields) and the version.json-not-found path (isolated module mocking). Benefits: - Activation log carries the running logger-contract version for post-migration debugging - Failed logger-contract resolution is observable via [WARNING] log, not swallowed - Zero inline mock config duplication across all tests in extension.test.ts - Activation logging contract is now verified by dedicated tests --- .../src/__tests__/extension.test.ts | 361 +++++++++--------- .../src/extension.ts | 31 +- 2 files changed, 197 insertions(+), 195 deletions(-) diff --git a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts index 53cd333f1..953fe4388 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts @@ -19,6 +19,31 @@ const mockOutputChannel = createMockOutputChannel(); const mockWorkspace = createMockWorkspace() as any; let mockCommands = createMockCommands(); +const DEFAULT_DELIMITERS: Record = { + delimiterLine: 'L', + delimiterPosition: 'C', + delimiterHash: '#', + delimiterRange: '-', +}; + +const createMockConfig = (overrides?: { + get?: jest.Mock; + inspect?: jest.Mock; +}) => ({ + get: + overrides?.get ?? + jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), + inspect: + overrides?.inspect ?? + jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + globalValue: undefined, + workspaceValue: undefined, + workspaceFolderValue: undefined, + })), +}); + // Create window mock const mockWindow = createMockWindow() as any; @@ -161,16 +186,8 @@ describe('Configuration loading and validation', () => { ['delimiterRange', '-'], ])('Default values for %s', (setting, expectedDefault) => { it(`should use default value "${expectedDefault}" when no user/workspace settings exist`, () => { - const mockConfig = { - get: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return defaults[key]; - }), + const mockConfig = createMockConfig({ + get: jest.fn((key: string) => DEFAULT_DELIMITERS[key]), inspect: jest.fn((key: string) => ({ key, defaultValue: expectedDefault, @@ -178,7 +195,7 @@ describe('Configuration loading and validation', () => { workspaceValue: undefined, workspaceFolderValue: undefined, })), - }; + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -235,10 +252,10 @@ describe('Configuration loading and validation', () => { 'Default', ], ])('should prioritize %s settings over others', (_source, inspectResult, expectedValue) => { - const mockConfig = { + const mockConfig = createMockConfig({ get: jest.fn(() => expectedValue), inspect: jest.fn(() => ({ ...inspectResult, defaultValue: 'Default' })), - }; + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -254,26 +271,16 @@ describe('Configuration loading and validation', () => { describe('Duplicate delimiter values', () => { it('should use defaults when all delimiters are the same', async () => { - const mockConfig = { - get: jest.fn(() => { - return 'X'; - }), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: 'X', - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; - }), - }; + const mockConfig = createMockConfig({ + get: jest.fn(() => 'X'), + inspect: jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + globalValue: 'X', + workspaceValue: undefined, + workspaceFolderValue: undefined, + })), + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -290,7 +297,7 @@ describe('Configuration loading and validation', () => { }); it('should use defaults when two delimiters are the same', async () => { - const mockConfig = { + const mockConfig = createMockConfig({ get: jest.fn((key: string, defaultValue: string) => { // Line and Column both set to 'A' const map: Record = { @@ -301,22 +308,14 @@ describe('Configuration loading and validation', () => { }; return map[key] || defaultValue; }), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: key === 'delimiterLine' || key === 'delimiterPosition' ? 'A' : undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; - }), - }; + inspect: jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + globalValue: key === 'delimiterLine' || key === 'delimiterPosition' ? 'A' : undefined, + workspaceValue: undefined, + workspaceFolderValue: undefined, + })), + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -335,7 +334,7 @@ describe('Configuration loading and validation', () => { describe('Valid custom delimiter values', () => { it('should accept and use valid custom delimiters', async () => { - const mockConfig = { + const mockConfig = createMockConfig({ get: jest.fn((key: string, defaultValue: string) => { const custom: Record = { delimiterLine: 'Ln', @@ -346,12 +345,6 @@ describe('Configuration loading and validation', () => { return custom[key] || defaultValue; }), inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; const custom: Record = { delimiterLine: 'Ln', delimiterPosition: 'Col', @@ -360,13 +353,13 @@ describe('Configuration loading and validation', () => { }; return { key, - defaultValue: defaults[key] || 'L', + defaultValue: DEFAULT_DELIMITERS[key] || 'L', globalValue: custom[key], workspaceValue: undefined, workspaceFolderValue: undefined, }; }), - }; + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -385,32 +378,16 @@ describe('Configuration loading and validation', () => { describe('Configuration source logging', () => { it('should log source of each delimiter on startup (from default)', async () => { - const mockConfig = { - get: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return defaults[key]; - }), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; - }), - }; + const mockConfig = createMockConfig({ + get: jest.fn((key: string) => DEFAULT_DELIMITERS[key]), + inspect: jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + globalValue: undefined, + workspaceValue: undefined, + workspaceFolderValue: undefined, + })), + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -426,32 +403,25 @@ describe('Configuration loading and validation', () => { }); it('should log source as user when globalValue is set', async () => { - const mockConfig = { + const mockConfig = createMockConfig({ get: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'UserL', // User override - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return defaults[key]; - }), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', + // User override for delimiterLine + const values: Record = { + delimiterLine: 'UserL', delimiterPosition: 'C', delimiterHash: '#', delimiterRange: '-', }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: key === 'delimiterLine' ? 'UserL' : undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; + return values[key]; }), - }; + inspect: jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + globalValue: key === 'delimiterLine' ? 'UserL' : undefined, + workspaceValue: undefined, + workspaceFolderValue: undefined, + })), + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -467,7 +437,7 @@ describe('Configuration loading and validation', () => { }); it('should prioritize workspace folder over workspace over user over default', async () => { - const mockConfig = { + const mockConfig = createMockConfig({ get: jest.fn((key: string, defaultValue: string) => { const values: Record = { delimiterLine: 'FolderL', @@ -477,23 +447,15 @@ describe('Configuration loading and validation', () => { }; return values[key] || defaultValue; }), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - // Only set the highest priority value for each key - globalValue: key === 'delimiterHash' ? 'U' : undefined, - workspaceValue: key === 'delimiterPosition' ? 'WorkspaceC' : undefined, - workspaceFolderValue: key === 'delimiterLine' ? 'FolderL' : undefined, - }; - }), - }; + inspect: jest.fn((key: string) => ({ + key, + defaultValue: DEFAULT_DELIMITERS[key] || 'L', + // Only set the highest priority value for each key + globalValue: key === 'delimiterHash' ? 'U' : undefined, + workspaceValue: key === 'delimiterPosition' ? 'WorkspaceC' : undefined, + workspaceFolderValue: key === 'delimiterLine' ? 'FolderL' : undefined, + })), + }); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); // Extension imported at top @@ -585,24 +547,7 @@ describe('Extension lifecycle', () => { }; // Mock configuration - const mockConfig = { - get: jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; - }), - }; + const mockConfig = createMockConfig(); // Set up mocks BEFORE activate (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(mockConfig); @@ -625,16 +570,7 @@ describe('Extension lifecycle', () => { globalState: createMockMemento(), }; - const mockConfig = { - get: jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), - inspect: jest.fn((key: string) => ({ - key, - defaultValue: 'L', - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - })), - }; + const mockConfig = createMockConfig(); (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(mockConfig); @@ -654,16 +590,7 @@ describe('Extension lifecycle', () => { globalState: createMockMemento(), }; - const mockConfig = { - get: jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), - inspect: jest.fn((key: string) => ({ - key, - defaultValue: 'L', - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - })), - }; + const mockConfig = createMockConfig(); (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(mockConfig); @@ -704,24 +631,7 @@ describe('Extension lifecycle', () => { }; // Mock configuration - const mockConfig = { - get: jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), - inspect: jest.fn((key: string) => { - const defaults: Record = { - delimiterLine: 'L', - delimiterPosition: 'C', - delimiterHash: '#', - delimiterRange: '-', - }; - return { - key, - defaultValue: defaults[key] || 'L', - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - }; - }), - }; + const mockConfig = createMockConfig(); // Set up mocks BEFORE activate (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(mockConfig); @@ -745,14 +655,7 @@ describe('Logger verification and communication channel', () => { }); it('should confirm logger initialization by calling debug() when setLogger is called', () => { - const mockConfig = { - get: jest.fn((_key: string, defaultValue: string) => defaultValue), - inspect: jest.fn(() => ({ - globalValue: undefined, - workspaceValue: undefined, - workspaceFolderValue: undefined, - })), - }; + const mockConfig = createMockConfig(); mockWorkspace.getConfiguration = jest.fn(() => mockConfig); (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(mockConfig); @@ -799,12 +702,90 @@ describe('Logger verification and communication channel', () => { // Manually call debug to test formatting logger.debug({ fn: 'testFunction', extraContext: 'value' }, 'Test debug message'); - expect(mockOutputChannel.appendLine).toHaveBeenCalledWith(expect.stringContaining('[DEBUG]')); expect(mockOutputChannel.appendLine).toHaveBeenCalledWith( - expect.stringContaining('testFunction'), + expect.stringMatching(/\[DEBUG\].*testFunction/), ); expect(mockOutputChannel.appendLine).toHaveBeenCalledWith( - expect.stringContaining('Test debug message'), + expect.stringMatching(/\[DEBUG\].*Test debug message/), ); }); }); + +describe('Activation logging', () => { + const setupMocks = () => { + (vscode.window.createStatusBarItem as jest.Mock).mockReturnValue(mockStatusBarItem); + (vscode.window.createOutputChannel as jest.Mock).mockReturnValue(mockOutputChannel); + (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue(createMockConfig()); + (vscode.commands.registerCommand as jest.Mock).mockImplementation(mockCommands.registerCommand); + }; + + beforeEach(() => { + mockOutputChannel.appendLine.mockClear(); + setupMocks(); + }); + + const getActivationInfoLine = (): string | undefined => { + return (mockOutputChannel.appendLine as jest.Mock).mock.calls + .map((call: string[]) => call[0]) + .find( + (line: string) => + line.startsWith('[INFO]') && line.includes('RangeLink extension activated'), + ); + }; + + it('logs version info and logger contract version on successful activation', () => { + const mockContext = { + subscriptions: [] as vscode.Disposable[], + globalState: createMockMemento(), + }; + + extension.activate(mockContext as any); + + const logLine = getActivationInfoLine(); + expect(logLine).toBeDefined(); + expect(logLine).toMatch(/^\[INFO\] /); + + const jsonStart = logLine!.indexOf('{'); + const jsonEnd = logLine!.lastIndexOf('}') + 1; + const context = JSON.parse(logLine!.slice(jsonStart, jsonEnd)); + + expect(context.fn).toBe('activate'); + expect(context.isDirty).toBe(false); + // Dynamic fields that change with every build — asserting key presence + // and non-emptiness is more valuable than exact-match assertions that + // break on the next build. + expect(typeof context.version).toBe('string'); + expect(context.version.length).toBeGreaterThan(0); + expect(typeof context.commit).toBe('string'); + expect(context.commit.length).toBeGreaterThan(0); + expect(typeof context.branch).toBe('string'); + expect(context.branch.length).toBeGreaterThan(0); + expect(typeof context.buildDate).toBe('string'); + expect(context.buildDate.length).toBeGreaterThan(0); + expect(typeof context.loggerContractVersion).toBe('string'); + expect(context.loggerContractVersion.length).toBeGreaterThan(0); + }); + + it('logs warning when version.json is unavailable', () => { + jest.isolateModules(() => { + jest.doMock('../version.json', () => { + throw new Error('version.json not found'); + }); + + // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef + const isolatedExtension = require('../extension'); + + const mockContext = { + subscriptions: [] as vscode.Disposable[], + globalState: createMockMemento(), + }; + + isolatedExtension.activate(mockContext as any); + + expect(mockOutputChannel.appendLine).toHaveBeenCalledWith( + expect.stringMatching(/\[WARNING\].*version info unavailable/), + ); + expect(getActivationInfoLine()).toBeUndefined(); + }); + }); +}); diff --git a/packages/rangelink-vscode-extension/src/extension.ts b/packages/rangelink-vscode-extension/src/extension.ts index af1699ab6..ef0b841d6 100644 --- a/packages/rangelink-vscode-extension/src/extension.ts +++ b/packages/rangelink-vscode-extension/src/extension.ts @@ -28,9 +28,34 @@ export function activate(context: vscode.ExtensionContext): RangeLinkExtensionAp const logger = getLogger(); let versionInfo: VersionInfo | undefined; + let loggerContractVersion: string | undefined; try { // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef versionInfo = require('./version.json') as VersionInfo; + } catch (error) { + logger.warn( + { fn: 'activate', error }, + 'RangeLink extension activated (version info unavailable)', + ); + } + + try { + // eslint-disable-next-line no-undef + const loggerContractEntry = require.resolve('@couimet/logger-contract'); + // Resolve package root from entry point (dist/index.js → package root), then + // require by absolute path to bypass the package's "exports" field restriction + // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef + const loggerContractPkgDir = require('node:path').resolve(loggerContractEntry, '../..'); + // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef + loggerContractVersion = require(`${loggerContractPkgDir}/package.json`).version as string; + } catch (error) { + logger.warn( + { fn: 'activate', error }, + 'Failed to resolve logger-contract version', + ); + } + + if (versionInfo) { logger.info( { fn: 'activate', @@ -39,14 +64,10 @@ export function activate(context: vscode.ExtensionContext): RangeLinkExtensionAp isDirty: versionInfo.isDirty, branch: versionInfo.branch, buildDate: versionInfo.buildDate, + loggerContractVersion, }, `RangeLink extension activated - v${versionInfo.version} (${versionInfo.commit}${versionInfo.isDirty ? ' dirty' : ''})`, ); - } catch (error) { - logger.warn( - { fn: 'activate', error }, - 'RangeLink extension activated (version info unavailable)', - ); } const ideAdapter = new VscodeAdapter(vscode, logger); From 0af1ea70c1e2c7e185fe68c082c21fb34731f63a Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 12:26:02 -0400 Subject: [PATCH 07/10] Bump @couimet/logger-* from 1.0.1-alpha.0 to 1.0.0 stable --- .../rangelink-vscode-extension/package.json | 4 ++-- .../src/__tests__/extension.test.ts | 9 ++----- .../src/extension.ts | 5 +--- pnpm-lock.yaml | 24 +++++++++++++++---- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/rangelink-vscode-extension/package.json b/packages/rangelink-vscode-extension/package.json index f7b2fd16f..d6456f69b 100644 --- a/packages/rangelink-vscode-extension/package.json +++ b/packages/rangelink-vscode-extension/package.json @@ -961,12 +961,12 @@ "onStartupFinished" ], "dependencies": { - "@couimet/logger-contract": "1.0.1-alpha.0", + "@couimet/logger-contract": "1.0.0", "nanoid": "^5.1.6", "rangelink-core-ts": "workspace:*" }, "devDependencies": { - "@couimet/logger-contract-testing": "1.0.1-alpha.0", + "@couimet/logger-contract-testing": "1.0.0", "@types/jest": "^29.5.0", "@types/mocha": "^10.0.10", "@types/node": "^20.0.0", diff --git a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts index 953fe4388..d668333e5 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts @@ -26,13 +26,8 @@ const DEFAULT_DELIMITERS: Record = { delimiterRange: '-', }; -const createMockConfig = (overrides?: { - get?: jest.Mock; - inspect?: jest.Mock; -}) => ({ - get: - overrides?.get ?? - jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), +const createMockConfig = (overrides?: { get?: jest.Mock; inspect?: jest.Mock }) => ({ + get: overrides?.get ?? jest.fn((_key: string, defaultValue?: string) => defaultValue ?? 'L'), inspect: overrides?.inspect ?? jest.fn((key: string) => ({ diff --git a/packages/rangelink-vscode-extension/src/extension.ts b/packages/rangelink-vscode-extension/src/extension.ts index ef0b841d6..0fd5b524e 100644 --- a/packages/rangelink-vscode-extension/src/extension.ts +++ b/packages/rangelink-vscode-extension/src/extension.ts @@ -49,10 +49,7 @@ export function activate(context: vscode.ExtensionContext): RangeLinkExtensionAp // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef loggerContractVersion = require(`${loggerContractPkgDir}/package.json`).version as string; } catch (error) { - logger.warn( - { fn: 'activate', error }, - 'Failed to resolve logger-contract version', - ); + logger.warn({ fn: 'activate', error }, 'Failed to resolve logger-contract version'); } if (versionInfo) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc88963c2..a40bd4bcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,8 +76,8 @@ importers: packages/rangelink-vscode-extension: dependencies: '@couimet/logger-contract': - specifier: 1.0.1-alpha.0 - version: 1.0.1-alpha.0 + specifier: 1.0.0 + version: 1.0.0 nanoid: specifier: ^5.1.6 version: 5.1.6 @@ -86,8 +86,8 @@ importers: version: link:../rangelink-core-ts devDependencies: '@couimet/logger-contract-testing': - specifier: 1.0.1-alpha.0 - version: 1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0) + specifier: 1.0.0 + version: 1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@20.19.24)) '@types/jest': specifier: ^29.5.0 version: 29.5.14 @@ -343,11 +343,20 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@couimet/logger-contract-testing@1.0.0': + resolution: {integrity: sha512-Ug2SKE1RS/MPNKh0yoEtBftNFMWgfigiVbynytokf0XFnXwVMywHjAnfvU3amnNiQkV2HQYorl44wUWxvdZGqg==} + peerDependencies: + '@couimet/logger-contract': 1.0.0 + jest: ^29.0.0 + '@couimet/logger-contract-testing@1.0.1-alpha.0': resolution: {integrity: sha512-vFCzvK7H69LykhmTUq0fD9JmBddnhVDnjARNzfCk5TIIgGvgXwbQxVXnoW0b0ZeTS4ykT3qFhtCCKLOUOgDuaQ==} peerDependencies: '@couimet/logger-contract': 1.0.1-alpha.0 + '@couimet/logger-contract@1.0.0': + resolution: {integrity: sha512-LOO1agPfspl/df8JpKB8nZygBWouM9hQnslVOjVVR5DyzJzqo2oXMZS/wiFOgrHqWwBGQCDi3tkREdWMSrDg2A==} + '@couimet/logger-contract@1.0.1-alpha.0': resolution: {integrity: sha512-RMPI2P/8tFeBvpQIHt2vzoOj5xT6SX1ihMs2JCXmR397VmarQs+EywgKAx1yTw4S+tWt2mjl+6IdijOQ2Mn44A==} @@ -3918,10 +3927,17 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@couimet/logger-contract-testing@1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@20.19.24))': + dependencies: + '@couimet/logger-contract': 1.0.0 + jest: 29.7.0(@types/node@20.19.24) + '@couimet/logger-contract-testing@1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0)': dependencies: '@couimet/logger-contract': 1.0.1-alpha.0 + '@couimet/logger-contract@1.0.0': {} + '@couimet/logger-contract@1.0.1-alpha.0': {} '@emnapi/core@1.6.0': From ee1892c5b98bd96bd1b83417fd41065b972b8959 Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 12:40:23 -0400 Subject: [PATCH 08/10] Fix versions (and add caret) --- packages/rangelink-core-ts/package.json | 4 +-- .../rangelink-vscode-extension/package.json | 4 +-- pnpm-lock.yaml | 31 +++++++------------ 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/packages/rangelink-core-ts/package.json b/packages/rangelink-core-ts/package.json index 70d986593..87964f15b 100644 --- a/packages/rangelink-core-ts/package.json +++ b/packages/rangelink-core-ts/package.json @@ -31,10 +31,10 @@ "watch": "tsc -p . --watch" }, "dependencies": { - "@couimet/logger-contract": "1.0.1-alpha.0" + "@couimet/logger-contract": "^1.0.0" }, "devDependencies": { - "@couimet/logger-contract-testing": "1.0.1-alpha.0", + "@couimet/logger-contract-testing": "^1.0.0", "@types/jest": "^29.5.0", "@types/node": "^18.0.0", "jest": "^29.5.0", diff --git a/packages/rangelink-vscode-extension/package.json b/packages/rangelink-vscode-extension/package.json index d6456f69b..6ebdee8aa 100644 --- a/packages/rangelink-vscode-extension/package.json +++ b/packages/rangelink-vscode-extension/package.json @@ -961,12 +961,12 @@ "onStartupFinished" ], "dependencies": { - "@couimet/logger-contract": "1.0.0", + "@couimet/logger-contract": "^1.0.0", "nanoid": "^5.1.6", "rangelink-core-ts": "workspace:*" }, "devDependencies": { - "@couimet/logger-contract-testing": "1.0.0", + "@couimet/logger-contract-testing": "^1.0.0", "@types/jest": "^29.5.0", "@types/mocha": "^10.0.10", "@types/node": "^20.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a40bd4bcc..65a4b6601 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,12 +51,12 @@ importers: packages/rangelink-core-ts: dependencies: '@couimet/logger-contract': - specifier: 1.0.1-alpha.0 - version: 1.0.1-alpha.0 + specifier: ^1.0.0 + version: 1.0.0 devDependencies: '@couimet/logger-contract-testing': - specifier: 1.0.1-alpha.0 - version: 1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0) + specifier: ^1.0.0 + version: 1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@18.19.130)) '@types/jest': specifier: ^29.5.0 version: 29.5.14 @@ -76,7 +76,7 @@ importers: packages/rangelink-vscode-extension: dependencies: '@couimet/logger-contract': - specifier: 1.0.0 + specifier: ^1.0.0 version: 1.0.0 nanoid: specifier: ^5.1.6 @@ -86,7 +86,7 @@ importers: version: link:../rangelink-core-ts devDependencies: '@couimet/logger-contract-testing': - specifier: 1.0.0 + specifier: ^1.0.0 version: 1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@20.19.24)) '@types/jest': specifier: ^29.5.0 @@ -349,17 +349,9 @@ packages: '@couimet/logger-contract': 1.0.0 jest: ^29.0.0 - '@couimet/logger-contract-testing@1.0.1-alpha.0': - resolution: {integrity: sha512-vFCzvK7H69LykhmTUq0fD9JmBddnhVDnjARNzfCk5TIIgGvgXwbQxVXnoW0b0ZeTS4ykT3qFhtCCKLOUOgDuaQ==} - peerDependencies: - '@couimet/logger-contract': 1.0.1-alpha.0 - '@couimet/logger-contract@1.0.0': resolution: {integrity: sha512-LOO1agPfspl/df8JpKB8nZygBWouM9hQnslVOjVVR5DyzJzqo2oXMZS/wiFOgrHqWwBGQCDi3tkREdWMSrDg2A==} - '@couimet/logger-contract@1.0.1-alpha.0': - resolution: {integrity: sha512-RMPI2P/8tFeBvpQIHt2vzoOj5xT6SX1ihMs2JCXmR397VmarQs+EywgKAx1yTw4S+tWt2mjl+6IdijOQ2Mn44A==} - '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} @@ -3927,19 +3919,18 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@couimet/logger-contract-testing@1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@20.19.24))': + '@couimet/logger-contract-testing@1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@18.19.130))': dependencies: '@couimet/logger-contract': 1.0.0 - jest: 29.7.0(@types/node@20.19.24) + jest: 29.7.0(@types/node@18.19.130) - '@couimet/logger-contract-testing@1.0.1-alpha.0(@couimet/logger-contract@1.0.1-alpha.0)': + '@couimet/logger-contract-testing@1.0.0(@couimet/logger-contract@1.0.0)(jest@29.7.0(@types/node@20.19.24))': dependencies: - '@couimet/logger-contract': 1.0.1-alpha.0 + '@couimet/logger-contract': 1.0.0 + jest: 29.7.0(@types/node@20.19.24) '@couimet/logger-contract@1.0.0': {} - '@couimet/logger-contract@1.0.1-alpha.0': {} - '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 From fa47539932a124ee9c3182d938a948990fed8266 Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 12:40:55 -0400 Subject: [PATCH 09/10] Make test more resilient --- .../rangelink-vscode-extension/src/__tests__/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts index d668333e5..e2a0007a3 100644 --- a/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts +++ b/packages/rangelink-vscode-extension/src/__tests__/extension.test.ts @@ -745,10 +745,10 @@ describe('Activation logging', () => { const context = JSON.parse(logLine!.slice(jsonStart, jsonEnd)); expect(context.fn).toBe('activate'); - expect(context.isDirty).toBe(false); // Dynamic fields that change with every build — asserting key presence // and non-emptiness is more valuable than exact-match assertions that // break on the next build. + expect(typeof context.isDirty).toBe('boolean'); expect(typeof context.version).toBe('string'); expect(context.version.length).toBeGreaterThan(0); expect(typeof context.commit).toBe('string'); From 5439483cc05667097a19ba67de7273beecfefa5d Mon Sep 17 00:00:00 2001 From: Charles Ouimet Date: Tue, 16 Jun 2026 15:30:02 -0400 Subject: [PATCH 10/10] Remove traces of `barebone-logger` --- tests/shell/fixtures/jest-multi-package.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/shell/fixtures/jest-multi-package.txt b/tests/shell/fixtures/jest-multi-package.txt index 1e1a75dc4..9db7bbc94 100644 --- a/tests/shell/fixtures/jest-multi-package.txt +++ b/tests/shell/fixtures/jest-multi-package.txt @@ -1,6 +1,3 @@ -packages/barebone-logger test: Test Suites: 3 passed, 3 total -packages/barebone-logger test: Tests: 12 passed, 12 total -packages/barebone-logger test: Snapshots: 0 total packages/rangelink-core-ts test: Test Suites: 28 passed, 28 total packages/rangelink-core-ts test: Tests: 586 passed, 586 total packages/rangelink-core-ts test: Snapshots: 0 total