one
Version:
One is a new React Framework that makes Vite serve both native and web.
65 lines (60 loc) • 2.65 kB
JavaScript
import { isNativeEnvironment } from "vxrn";
import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.native.js";
import { API_ROUTE_GLOB_PATTERN, ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS } from "../../router/glob-patterns.native.js";
var USE_ONE_SETUP_FILE = `
if (process.env.ONE_SETUP_FILE) {
import(/* @vite-ignore */ process.env.ONE_SETUP_FILE)
}
`;
function createVirtualEntry(options) {
var _options_router_ignoredRouteFiles,
_options_router,
routeGlobs = [`/${options.root}/${ROUTE_GLOB_PATTERN}`, ...(((_options_router = options.router) === null || _options_router === void 0 || (_options_router_ignoredRouteFiles = _options_router.ignoredRouteFiles) === null || _options_router_ignoredRouteFiles === void 0 ? void 0 : _options_router_ignoredRouteFiles.map(function (pattern) {
return `!/${options.root}/${pattern}`;
})) || [])],
apiRouteGlobs = `/${options.root}/${API_ROUTE_GLOB_PATTERN}`;
return {
name: "one-virtual-entry",
enforce: "pre",
resolveId(id) {
if (id === virtualEntryId) return resolvedVirtualEntryId;
if (id === virtualEntryIdNative) return resolvedVirtualEntryIdNative;
},
load(id) {
if (id === resolvedVirtualEntryId) {
var prependCode = isNativeEnvironment(this.environment) ? "" : (/* `import()` will not work on native */
USE_ONE_SETUP_FILE);
return `
${prependCode}
import { createApp } from 'one'
// globbing ${JSON.stringify(routeGlobs)}
export default createApp({
routes: import.meta.glob(${JSON.stringify([...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(function (p) {
return `!${p}`;
})])}, { exhaustive: true }),
routerRoot: ${JSON.stringify(options.root)},
flags: ${JSON.stringify(options.flags)},
})
`;
}
if (id === resolvedVirtualEntryIdNative) {
var prependCode1 = isNativeEnvironment(this.environment) ? "" : (/* `import()` will not work on native */
USE_ONE_SETUP_FILE);
return `
${prependCode1}
import { createApp } from 'one'
// globbing ${JSON.stringify(routeGlobs)}
export default createApp({
routes: import.meta.glob(${JSON.stringify([...routeGlobs, ...ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS.map(function (p) {
return `!${p}`;
}), `!${apiRouteGlobs}`])}, { exhaustive: true }),
routerRoot: ${JSON.stringify(options.root)},
flags: ${JSON.stringify(options.flags)},
})
`;
}
}
};
}
export { createVirtualEntry };
//# sourceMappingURL=virtualEntryPlugin.native.js.map