one
Version:
One is a new React Framework that makes Vite serve both native and web.
24 lines • 1.15 kB
JavaScript
var import_node_fs = require("node:fs");
var import_node_url = require("node:url");
var import_vitest = require("vitest");
const import_meta = {};
const packageDirectory = (0, import_node_url.fileURLToPath)(new import_node_url.URL("../", import_meta.url));
function collectExportTargets(value) {
if (typeof value === "string") {
return value.includes("*") ? [] : [value];
}
if (!value || typeof value !== "object" || Array.isArray(value)) {
return [];
}
return Object.values(value).flatMap(collectExportTargets);
}
(0, import_vitest.describe)("package exports", () => {
(0, import_vitest.test)("all concrete targets exist in the built package", () => {
const packageJson = JSON.parse((0, import_node_fs.readFileSync)(`${packageDirectory}/package.json`, "utf8"));
if (!packageJson || typeof packageJson !== "object" || !("exports" in packageJson)) {
throw new Error("one package.json must define exports");
}
const missing = collectExportTargets(packageJson.exports).filter(target => !(0, import_node_fs.existsSync)(`${packageDirectory}/${target}`));
(0, import_vitest.expect)(missing).toEqual([]);
});
});