| 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 }; | |