'use strict'; const promises = require('fs/promises'); const path = require('path'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; } const path__default = /*#__PURE__*/_interopDefaultLegacy(path); function stripQueryParams(filePath) { return filePath.split("?")[0]; } function isUserCode(moduleName) { return Boolean(moduleName && !moduleName.startsWith("vite/") && !moduleName.startsWith("\0") && !moduleName.startsWith("\0") && moduleName !== "react/jsx-runtime" && !moduleName.match(/node_modules\//)); } function pluginTurbosnap({ rootDir }) { function normalize(filename) { if (filename.startsWith("/virtual:")) { return filename; } else { const relativePath = path__default.relative(rootDir, stripQueryParams(filename)); return `./${relativePath}`; } } function createReasons(importers) { return (importers || []).map((i) => ({ moduleName: normalize(i) })); } function createStatsMapModule(filename, importers) { return { id: filename, name: filename, reasons: createReasons(importers) }; } const statsMap = /* @__PURE__ */ new Map(); return { name: "rollup-plugin-turbosnap", enforce: "post", moduleParsed: function(mod) { if (isUserCode(mod.id)) { mod.importedIds.concat(mod.dynamicallyImportedIds).filter((name) => isUserCode(name)).forEach((depIdUnsafe) => { const depId = normalize(depIdUnsafe); if (statsMap.has(depId)) { const m = statsMap.get(depId); if (m) { m.reasons = (m.reasons ?? []).concat(createReasons([mod.id])).filter((r) => r.moduleName !== depId); statsMap.set(depId, m); } } else { statsMap.set(depId, createStatsMapModule(depId, [mod.id])); } }); } }, generateBundle: function(outOpts) { const stats = { modules: Array.from(statsMap.values()) }; if (!outOpts.dir) { throw new Error("Vite option `build.outDir` was not configured."); } const filename = path__default.resolve(outOpts.dir, "preview-stats.json"); console.log(`rollup-plugin-turbosnap: writing to ${filename}`); return promises.writeFile(filename, JSON.stringify(stats, null, 2)); } }; } module.exports = pluginTurbosnap;