weapp-vite
Version:
weapp-vite 一个现代化的小程序打包工具
63 lines (62 loc) • 2.04 kB
JavaScript
import { n as getCompilerContext, v as getRouteRuntimeGlobalKeys } from "./createContext-D9HCnUmH.mjs";
//#region src/auto-routes.ts
const ROUTE_RUNTIME_OVERRIDE_KEY = Symbol.for("weapp-vite.route-runtime");
function createGetter(resolver) {
return {
configurable: false,
enumerable: true,
get: resolver
};
}
const service = getCompilerContext().autoRoutesService;
const routes = {};
Object.defineProperties(routes, {
pages: createGetter(() => {
return service?.getReference().pages ?? [];
}),
entries: createGetter(() => {
return service?.getReference().entries ?? [];
}),
subPackages: createGetter(() => {
return service?.getReference().subPackages ?? [];
})
});
const pages = routes.pages;
const entries = routes.entries;
const subPackages = routes.subPackages;
function resolveMiniProgramGlobal() {
const runtime = globalThis;
const overrideRuntime = runtime[ROUTE_RUNTIME_OVERRIDE_KEY];
if (overrideRuntime) return overrideRuntime;
for (const key of getRouteRuntimeGlobalKeys()) {
const candidate = runtime[key];
if (candidate) return candidate;
}
}
function callRouteMethod(methodName, option) {
const miniProgramGlobal = resolveMiniProgramGlobal();
const routeMethod = miniProgramGlobal?.[methodName];
if (typeof routeMethod !== "function") throw new TypeError(`[weapp-vite] 当前运行环境不支持路由方法: ${methodName}`);
if (option === void 0) return routeMethod.call(miniProgramGlobal);
return routeMethod.call(miniProgramGlobal, option);
}
const miniProgramRouter = {
switchTab(option) {
return callRouteMethod("switchTab", option);
},
reLaunch(option) {
return callRouteMethod("reLaunch", option);
},
redirectTo(option) {
return callRouteMethod("redirectTo", option);
},
navigateTo(option) {
return callRouteMethod("navigateTo", option);
},
navigateBack(option) {
return callRouteMethod("navigateBack", option);
}
};
const wxRouter = miniProgramRouter;
//#endregion
export { routes as default, routes, entries, miniProgramRouter, pages, subPackages, wxRouter };