import { promises, existsSync } from 'node:fs'; import { isAbsolute, resolve, dirname, join, basename } from 'pathe'; class NodeSnapshotEnvironment { constructor(options = {}) { this.options = options; } getVersion() { return "1"; } getHeader() { return `// Snapshot v${this.getVersion()}`; } async resolveRawPath(testPath, rawPath) { return isAbsolute(rawPath) ? rawPath : resolve(dirname(testPath), rawPath); } async resolvePath(filepath) { return join( join( dirname(filepath), this.options.snapshotsDirName ?? "__snapshots__" ), `${basename(filepath)}.snap` ); } async prepareDirectory(dirPath) { await promises.mkdir(dirPath, { recursive: true }); } async saveSnapshotFile(filepath, snapshot) { await promises.mkdir(dirname(filepath), { recursive: true }); await promises.writeFile(filepath, snapshot, "utf-8"); } async readSnapshotFile(filepath) { if (!existsSync(filepath)) return null; return promises.readFile(filepath, "utf-8"); } async removeSnapshotFile(filepath) { if (existsSync(filepath)) await promises.unlink(filepath); } } export { NodeSnapshotEnvironment };