UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

158 lines (156 loc) 6.41 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var warmRoutesPlugin_exports = {}; __export(warmRoutesPlugin_exports, { autoWarmPlugin: () => autoWarmPlugin, warmRoutesPlugin: () => warmRoutesPlugin }); module.exports = __toCommonJS(warmRoutesPlugin_exports); var import_fs = require("fs"); var import_path = require("path"); var WARM_DEPS_FILE = "one-warm-deps.json"; var TRACKING_WINDOW = 5 * 60 * 1e3; function autoWarmPlugin(persistPath) { var cacheFile; var cachedDeps = []; var excludeSet; return { name: "one:auto-warm", apply: "serve", config() { var volatileCache = (0, import_path.join)(process.cwd(), "node_modules", ".vite", WARM_DEPS_FILE); cacheFile = typeof persistPath === "string" ? (0, import_path.join)(process.cwd(), persistPath) : volatileCache; try { if ((0, import_fs.existsSync)(cacheFile)) { var cached = JSON.parse((0, import_fs.readFileSync)(cacheFile, "utf-8")); if (Array.isArray(cached.deps) && cached.deps.length > 0) { cachedDeps = cached.deps; console.info(`[one] loading ${cached.deps.length} cached warm deps`); return { optimizeDeps: { include: cached.deps } }; } } } catch (unused) {} }, // cache corrupted, ignore configResolved(config) { excludeSet = new Set(config.optimizeDeps.exclude || []); if (cachedDeps.length > 0 && excludeSet.size > 0) { var conflicts = cachedDeps.filter(function (d) { return excludeSet.has(d); }); if (conflicts.length > 0) { console.info(`[one] filtered ${conflicts.length} excluded deps from warm cache`); if (config.optimizeDeps.include) { ; config.optimizeDeps.include = config.optimizeDeps.include.filter(function (d) { return !excludeSet.has(d); }); } } } }, configureServer(server) { var _server_httpServer; var lastDepsCount = 0; var timer; var userInclude = new Set((server.config.optimizeDeps.include || []).filter(function (d) { return !cachedDeps.includes(d); })); function snapshotDeps() { try { var _ref; var _server_environments_client, _server_environments; var optimizer = (_ref = (_server_environments = server.environments) === null || _server_environments === void 0 ? void 0 : (_server_environments_client = _server_environments.client) === null || _server_environments_client === void 0 ? void 0 : _server_environments_client.depsOptimizer) !== null && _ref !== void 0 ? _ref : server._depsOptimizer; if (!(optimizer === null || optimizer === void 0 ? void 0 : optimizer.metadata)) return; var optimized = optimizer.metadata.optimized; var discovered = optimizer.metadata.discovered; var currentDeps = [...Object.keys(optimized || {}), ...Object.keys(discovered || {})]; if (currentDeps.length === 0 || currentDeps.length === lastDepsCount) return; lastDepsCount = currentDeps.length; var depsToCache = currentDeps.filter(function (d2) { return !userInclude.has(d2) && !excludeSet.has(d2); }); var allDeps = new Set(depsToCache); try { if ((0, import_fs.existsSync)(cacheFile)) { var existing = JSON.parse((0, import_fs.readFileSync)(cacheFile, "utf-8")); if (Array.isArray(existing.deps)) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = existing.deps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var d = _step.value; if (!excludeSet.has(d)) allDeps.add(d); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } } } catch (unused) {} var sorted = [...allDeps].sort(); var dir = (0, import_path.dirname)(cacheFile); if (!(0, import_fs.existsSync)(dir)) (0, import_fs.mkdirSync)(dir, { recursive: true }); (0, import_fs.writeFileSync)(cacheFile, JSON.stringify({ deps: sorted }, null, 2)); console.info(`[one] cached ${sorted.length} deps for next startup`); } catch (unused) {} } (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 ? void 0 : _server_httpServer.once("listening", function () { timer = setInterval(snapshotDeps, 5e3); setTimeout(function () { clearInterval(timer); snapshotDeps(); }, TRACKING_WINDOW); }); var origClose = server.close.bind(server); server.close = async function () { clearInterval(timer); snapshotDeps(); return origClose(); }; } }; } var warmRoutesPlugin = autoWarmPlugin; //# sourceMappingURL=warmRoutesPlugin.native.js.map