one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 7.93 kB
Source Map (JSON)
{"version":3,"file":"warmRoutesPlugin.js","names":[],"sources":["esm/vite/plugins/warmRoutesPlugin.js"],"sourcesContent":["import { existsSync, readFileSync, writeFileSync, mkdirSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nconst WARM_DEPS_FILE = \"one-warm-deps.json\";\nconst TRACKING_WINDOW = 5 * 60 * 1e3;\nfunction autoWarmPlugin(persistPath) {\n let cacheFile;\n let cachedDeps = [];\n let excludeSet;\n return {\n name: \"one:auto-warm\",\n apply: \"serve\",\n config() {\n const volatileCache = join(process.cwd(), \"node_modules\", \".vite\", WARM_DEPS_FILE);\n cacheFile = typeof persistPath === \"string\" ? join(process.cwd(), persistPath) : volatileCache;\n try {\n if (existsSync(cacheFile)) {\n const cached = JSON.parse(readFileSync(cacheFile, \"utf-8\"));\n if (Array.isArray(cached.deps) && cached.deps.length > 0) {\n cachedDeps = cached.deps;\n console.info(`[one] loading ${cached.deps.length} cached warm deps`);\n return {\n optimizeDeps: {\n include: cached.deps\n }\n };\n }\n }\n } catch {\n }\n },\n async configResolved(config) {\n excludeSet = new Set(config.optimizeDeps.exclude || []);\n if (cachedDeps.length > 0) {\n const resolve = config.createResolver();\n const staleDeps = /* @__PURE__ */ new Set();\n await Promise.all(\n cachedDeps.map(async (dep) => {\n if (excludeSet.has(dep)) {\n staleDeps.add(dep);\n return;\n }\n try {\n if (!await resolve(dep)) staleDeps.add(dep);\n } catch {\n staleDeps.add(dep);\n }\n })\n );\n if (staleDeps.size > 0) {\n cachedDeps = cachedDeps.filter((dep) => !staleDeps.has(dep));\n console.info(`[one] pruned ${staleDeps.size} stale deps from warm cache`);\n if (config.optimizeDeps.include) {\n config.optimizeDeps.include = config.optimizeDeps.include.filter(\n (dep) => !staleDeps.has(dep)\n );\n }\n try {\n const nextRaw = JSON.stringify({ deps: [...cachedDeps].sort() }, null, 2);\n if (!existsSync(cacheFile) || readFileSync(cacheFile, \"utf-8\") !== nextRaw) {\n const dir = dirname(cacheFile);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(cacheFile, nextRaw);\n }\n } catch {\n }\n }\n }\n },\n configureServer(server) {\n let lastDepsCount = 0;\n let timer;\n const userInclude = new Set(\n (server.config.optimizeDeps.include || []).filter((d) => !cachedDeps.includes(d))\n );\n function snapshotDeps() {\n try {\n const optimizer = server.environments?.client?.depsOptimizer ?? server._depsOptimizer;\n if (!optimizer?.metadata) return;\n const optimized = optimizer.metadata.optimized;\n const discovered = optimizer.metadata.discovered;\n const currentDeps = [\n ...Object.keys(optimized || {}),\n ...Object.keys(discovered || {})\n ];\n if (currentDeps.length === 0 || currentDeps.length === lastDepsCount) return;\n lastDepsCount = currentDeps.length;\n const depsToCache = currentDeps.filter(\n (d) => !userInclude.has(d) && !excludeSet.has(d)\n );\n const allDeps = new Set(depsToCache);\n let existingRaw;\n if (existsSync(cacheFile)) {\n try {\n existingRaw = readFileSync(cacheFile, \"utf-8\");\n const existing = JSON.parse(existingRaw);\n if (Array.isArray(existing.deps)) {\n for (const d of existing.deps) {\n if (!excludeSet.has(d)) allDeps.add(d);\n }\n }\n } catch {\n return;\n }\n }\n const sorted = [...allDeps].sort();\n const nextRaw = JSON.stringify({ deps: sorted }, null, 2);\n if (existingRaw === nextRaw) return;\n const dir = dirname(cacheFile);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(cacheFile, nextRaw);\n console.info(`[one] cached ${sorted.length} deps for next startup`);\n } catch {\n }\n }\n server.httpServer?.once(\"listening\", () => {\n timer = setInterval(snapshotDeps, 5e3);\n setTimeout(() => {\n clearInterval(timer);\n snapshotDeps();\n }, TRACKING_WINDOW);\n });\n const origClose = server.close.bind(server);\n server.close = async () => {\n clearInterval(timer);\n snapshotDeps();\n return origClose();\n };\n }\n };\n}\nconst warmRoutesPlugin = autoWarmPlugin;\nexport {\n autoWarmPlugin,\n warmRoutesPlugin\n};\n//# sourceMappingURL=warmRoutesPlugin.js.map\n"],"mappings":"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"}