import { describe, it, expect } from 'vitest'; import { createRequire } from 'module'; import fs from 'node:fs/promises'; import os from 'node:os'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; describe('CommonJS interop', () => { it('supports require("micro-logs")("namespace", level)', async () => { const repoRoot = fileURLToPath(new URL('..', import.meta.url)); const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'micro-logs-cjs-interop-')); try { const nodeModulesDir = path.join(tmpDir, 'node_modules'); await fs.mkdir(nodeModulesDir, { recursive: true }); // Create a symlink so Node resolves `require("micro-logs")` by package name. const linkPath = path.join(nodeModulesDir, 'micro-logs'); await fs.symlink(repoRoot, linkPath); const requireInTmp = createRequire(path.join(tmpDir, 'index.cjs')); const microLogs = requireInTmp('micro-logs'); expect(typeof microLogs).toBe('function'); const logger = microLogs('nx-md-parser:bullet-parser', 'debug'); expect(typeof logger.debug).toBe('function'); expect(typeof logger.info).toBe('function'); } finally { await fs.rm(tmpDir, { recursive: true, force: true }); } }); });