one
Version:
One is a new React Framework that makes Vite serve both native and web.
48 lines (43 loc) • 1.56 kB
JavaScript
import { isNativeEnvironment } from "vxrn";
import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.mjs";
const USE_ONE_SETUP_FILE = `
if (process.env.ONE_SETUP_FILE) {
import(/* @vite-ignore */ process.env.ONE_SETUP_FILE)
}
`;
function createVirtualEntry(options) {
const appDirGlob = `/${options.root}/**/*.tsx`,
appDirApiGlob = `/${options.root}/**/*+api.tsx`;
return {
name: "one-virtual-entry",
enforce: "pre",
resolveId(id) {
if (id === virtualEntryId) return resolvedVirtualEntryId;
if (id === virtualEntryIdNative) return resolvedVirtualEntryIdNative;
},
load(id) {
if (id === resolvedVirtualEntryId) return `
${isNativeEnvironment(this.environment) ? "" : USE_ONE_SETUP_FILE}
import { createApp } from 'one'
// globbing ${appDirGlob}
export default createApp({
routes: import.meta.glob('${appDirGlob}', { exhaustive: true }),
routerRoot: ${JSON.stringify(options.root)},
flags: ${JSON.stringify(options.flags)},
})
`;
if (id === resolvedVirtualEntryIdNative) return `
${isNativeEnvironment(this.environment) ? "" : USE_ONE_SETUP_FILE}
import { createApp } from 'one'
// globbing ${appDirGlob}
export default createApp({
routes: import.meta.glob(['${appDirGlob}', '!${appDirApiGlob}'], { exhaustive: true }),
routerRoot: ${JSON.stringify(options.root)},
flags: ${JSON.stringify(options.flags)},
})
`;
}
};
}
export { createVirtualEntry };
//# sourceMappingURL=virtualEntryPlugin.mjs.map