one
Version:
One is a new React Framework that makes Vite serve both native and web.
158 lines (156 loc) • 6.41 kB
JavaScript
;
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