@ubean/build 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,69 @@
1
+ //#region src/virtual-registry.ts
2
+ var VirtualModuleRegistry = class {
3
+ modules = /* @__PURE__ */ new Map();
4
+ invalidated = /* @__PURE__ */ new Set();
5
+ register(mod) {
6
+ this.modules.set(mod.id, mod);
7
+ }
8
+ resolveId(id, importer) {
9
+ if (this.modules.has(id)) return id;
10
+ for (const mod of this.modules.values()) {
11
+ const resolved = mod.resolve(id, importer);
12
+ if (resolved) return resolved;
13
+ }
14
+ }
15
+ async load(id) {
16
+ const exactMod = this.modules.get(id);
17
+ if (exactMod) return exactMod.load(id);
18
+ for (const [modId, mod] of this.modules) {
19
+ if (modId === id) continue;
20
+ if (mod.resolve(id)) return mod.load(id);
21
+ }
22
+ }
23
+ invalidate(id) {
24
+ this.invalidated.add(id);
25
+ }
26
+ isInvalidated(id) {
27
+ return this.invalidated.has(id);
28
+ }
29
+ clearInvalidated() {
30
+ this.invalidated.clear();
31
+ }
32
+ getModules() {
33
+ return [...this.modules.values()];
34
+ }
35
+ clear() {
36
+ this.modules.clear();
37
+ this.invalidated.clear();
38
+ }
39
+ };
40
+ let _registry = null;
41
+ function useVirtualRegistry() {
42
+ if (!_registry) _registry = new VirtualModuleRegistry();
43
+ return _registry;
44
+ }
45
+ function resetVirtualRegistry() {
46
+ _registry = null;
47
+ }
48
+ function defineVirtualModule(id, loader) {
49
+ return {
50
+ id,
51
+ resolve(resolvedId) {
52
+ return resolvedId === id ? id : void 0;
53
+ },
54
+ load: loader
55
+ };
56
+ }
57
+ function defineVirtualModulePrefix(prefix, loader) {
58
+ return {
59
+ id: prefix,
60
+ resolve(id) {
61
+ if (id.startsWith(prefix)) return id;
62
+ },
63
+ load(id) {
64
+ return loader(id || prefix);
65
+ }
66
+ };
67
+ }
68
+ //#endregion
69
+ export { useVirtualRegistry as a, resetVirtualRegistry as i, defineVirtualModule as n, defineVirtualModulePrefix as r, VirtualModuleRegistry as t };
@@ -0,0 +1,226 @@
1
+ import { a as useVirtualRegistry } from "./virtual-registry-BWkaQHXN.js";
2
+ import { a as createRoutingVirtualModule, i as createPagesVirtualModule, n as createLocalesVirtualModule, r as createMetaVirtualModule, s as transformMacros, t as createAppVirtualModule } from "./virtual-modules-D5WBA3u7.js";
3
+ import { join, relative, resolve } from "pathe";
4
+ import { loadUbeanConfig, tryGetConfig } from "@ubean/config";
5
+ import { createServerRouter } from "@ubean/routes";
6
+ import { scanProject } from "@ubean/scan";
7
+ import { getVueLocaleParam } from "@ubean/i18n";
8
+ //#region src/i18n-config.ts
9
+ function serializeI18nConfig(config) {
10
+ return JSON.stringify(config);
11
+ }
12
+ function localeVueParamFromI18n(config) {
13
+ if (!config.enabled) return void 0;
14
+ return getVueLocaleParam({
15
+ defaultLocale: config.defaultLocale,
16
+ locales: config.locales.map((l) => l.code),
17
+ strategy: config.strategy
18
+ }) || void 0;
19
+ }
20
+ //#endregion
21
+ //#region src/vite.ts
22
+ const VIRTUAL_MODULES = [
23
+ "ubean:routes",
24
+ "ubean:pages",
25
+ "ubean:meta",
26
+ "ubean:app-config",
27
+ "ubean:locales"
28
+ ];
29
+ const VIRTUAL_PREFIX = "\0ubean:";
30
+ /**
31
+ * ubean 核心 Vite 插件(框架无关部分)。
32
+ *
33
+ * 提供:
34
+ * - 虚拟模块(`ubean:routes`、`ubean:pages`、`ubean:meta`、`ubean:app-config`、`ubean:locales`)
35
+ * - 宏转换(`definePage` / `defineMeta` 在 `.ts` / `.vue` 中被剥离)
36
+ * - 文件监听(dev 模式下扫描 `routes` / `middleware` / `pages` / `layouts` / `plugins` / `locales`)
37
+ * - 实体路由文件生成(当 `routing.mode` 为 `'file'` 或 `'both'` 时触发 `@ubean/vue/generator`)
38
+ *
39
+ * Vue 专属的虚拟模块(`virtual:ubean-pages`、`virtual:ubean-app` 等)由 `@ubean/build/vue` 的
40
+ * `ubeanVite` 提供,二者共用 `useVirtualRegistry()` 注册表。
41
+ *
42
+ * @example 在 vite.config.ts 中使用(自动加载 ubean.config)
43
+ * ```typescript
44
+ * import { defineConfig } from 'vite';
45
+ * import { ubeanPlugin } from '@ubean/build/vite';
46
+ *
47
+ * export default defineConfig({
48
+ * plugins: [ubeanPlugin()]
49
+ * });
50
+ * ```
51
+ *
52
+ * @example 显式传入配置(ubean dev/build 内部使用)
53
+ * ```typescript
54
+ * ubeanPlugin({ config: resolvedConfig })
55
+ * ```
56
+ */
57
+ function ubeanPlugin(options) {
58
+ const virtualRegistry = useVirtualRegistry();
59
+ let ubeanConfig = options?.config ?? tryGetConfig() ?? void 0;
60
+ let srcDirAbs = "";
61
+ let viteSrcDir = "";
62
+ let viteSrcPrefix = "";
63
+ function ensureDerived() {
64
+ if (!ubeanConfig) return;
65
+ srcDirAbs = resolve(ubeanConfig.rootDir, ubeanConfig.srcDir);
66
+ viteSrcDir = relative(ubeanConfig.rootDir, srcDirAbs).replace(/\\/g, "/");
67
+ viteSrcPrefix = viteSrcDir ? `/${viteSrcDir}` : "";
68
+ }
69
+ if (ubeanConfig) ensureDerived();
70
+ return {
71
+ name: "ubean:core",
72
+ enforce: "pre",
73
+ async buildStart() {
74
+ if (!ubeanConfig) {
75
+ ubeanConfig = await loadUbeanConfig();
76
+ ensureDerived();
77
+ }
78
+ await scanAndRegister();
79
+ },
80
+ resolveId(id) {
81
+ if (VIRTUAL_MODULES.includes(id)) return VIRTUAL_PREFIX + id;
82
+ },
83
+ async load(id) {
84
+ if (id.startsWith(VIRTUAL_PREFIX)) {
85
+ const moduleId = id.slice(7);
86
+ const mod = virtualRegistry.getModules().find((m) => m.id === moduleId);
87
+ if (mod) return await mod.load();
88
+ }
89
+ },
90
+ transform(code, id) {
91
+ const result = transformMacros(code, id);
92
+ if (result !== null && result !== code) return {
93
+ code: result,
94
+ map: null
95
+ };
96
+ return null;
97
+ },
98
+ configureServer(server) {
99
+ const watchDirs = [
100
+ "routes",
101
+ "middleware",
102
+ "pages",
103
+ "layouts",
104
+ "plugins",
105
+ "locales"
106
+ ];
107
+ const config = ubeanConfig;
108
+ const srcDir = join(config.rootDir, config.srcDir);
109
+ for (const dir of watchDirs) server.watcher.add(join(srcDir, dir));
110
+ server.watcher.on("add", handleFileChange);
111
+ server.watcher.on("unlink", handleFileChange);
112
+ server.watcher.on("change", handleFileChange);
113
+ async function handleFileChange(file) {
114
+ const relativePath = file.replace(`${srcDir}/`, "");
115
+ if (watchDirs.some((d) => relativePath.startsWith(`${d}/`))) {
116
+ await scanAndRegister();
117
+ for (const mod of VIRTUAL_MODULES) {
118
+ const module = server.moduleGraph.getModuleById(VIRTUAL_PREFIX + mod);
119
+ if (module) server.moduleGraph.invalidateModule(module);
120
+ }
121
+ if (relativePath.startsWith("locales/")) server.ws.send({
122
+ type: "custom",
123
+ event: "ubean:locale-update",
124
+ data: { file }
125
+ });
126
+ }
127
+ }
128
+ }
129
+ };
130
+ async function scanAndRegister() {
131
+ if (!ubeanConfig) return;
132
+ const result = await scanProject({
133
+ cwd: ubeanConfig.rootDir,
134
+ srcDir: ubeanConfig.srcDir,
135
+ dirs: ubeanConfig.dir,
136
+ ignore: ubeanConfig.scanOptions?.ignore
137
+ });
138
+ const router = createServerRouter();
139
+ for (const mw of result.middlewares) router.addMiddleware(mw);
140
+ for (const route of result.apiRoutes) router.addApiRoute(route);
141
+ for (const page of result.pages) router.addPage(page);
142
+ for (const layout of result.layouts) router.addLayout(layout);
143
+ virtualRegistry.register(createRoutingVirtualModule(result.apiRoutes.map((r) => ({
144
+ method: r.method?.toUpperCase() || "ALL",
145
+ path: r.route,
146
+ id: `${r.method}:${r.route}`,
147
+ filePath: r.fullPath
148
+ })), result.middlewares.map((m) => ({
149
+ path: "/**",
150
+ filePath: m.fullPath,
151
+ order: m.order,
152
+ global: m.global
153
+ })), ubeanConfig.rootDir));
154
+ virtualRegistry.register(createPagesVirtualModule(result.pages.map((p) => ({
155
+ name: p.name,
156
+ path: p.route,
157
+ filePath: p.fullPath,
158
+ layout: p.layout,
159
+ reuseTarget: p.reuseTarget
160
+ })), result.layouts.map((l) => ({
161
+ name: l.name,
162
+ filePath: l.fullPath,
163
+ isDefault: l.isDefault
164
+ })), ubeanConfig.rootDir));
165
+ virtualRegistry.register(createMetaVirtualModule());
166
+ virtualRegistry.register(createAppVirtualModule(result.apiRoutes, result.middlewares, result.pages, viteSrcPrefix || "/"));
167
+ virtualRegistry.register(createLocalesVirtualModule(result.locales, result.defaultLocale, viteSrcPrefix || "/", serializeI18nConfig(ubeanConfig.i18n)));
168
+ await maybeGenerateRouteFiles(ubeanConfig, result).catch((err) => {
169
+ console.warn("[ubean:core] Route file generation failed:", err?.message || err);
170
+ });
171
+ }
172
+ }
173
+ /**
174
+ * 根据 `routing.mode` 决定是否触发实体文件生成。
175
+ *
176
+ * - `'virtual'`(默认):仅生成 `.ubean/typed-router.d.ts`(类型声明,所有模式都生成)
177
+ * - `'file'`:额外生成 `routes.ts`/`imports.ts` 到 `outputDir`(实体文件,可编辑 `meta`)
178
+ * - `'both'`:同 `'file'`,且虚拟模块也加载实体文件
179
+ *
180
+ * `typed-router.d.ts` 包含 `@ubean/scan` 和 `vue-router`/`vue-router/auto-routes`
181
+ * 的模块增强(让 `useRoute<Name>(name)` 能推断 `route.params` 类型),所有模式
182
+ * 都会生成到 `.ubean/typed-router.d.ts`,与 `auto-imports.d.ts`/`components.d.ts`
183
+ * 等其他纯类型声明产物同目录,由 `.gitignore` 忽略。
184
+ *
185
+ * 由于 `@ubean/vue/generator` 通过动态 import 加载,前端-only 项目
186
+ * (不依赖实体路由文件)即使没有安装 generator 相关依赖也能运行。
187
+ *
188
+ * 注意:`@ubean/config` 与 `@ubean/vue/generator` 的 `getRouteMeta` /
189
+ * `onGenerated` 签名略有差异(配置层面向用户,生成器层面向内部)。本函数
190
+ * 负责适配:把 `(filePath, frontmatter) => meta` 包装为 `(page) => meta`,
191
+ * 把 `GeneratorResult` 转换为 `string[]` 文件路径列表。
192
+ */
193
+ async function maybeGenerateRouteFiles(config, scanResult) {
194
+ const mode = config.routing?.mode;
195
+ const generateEntityFiles = mode === "file" || mode === "both";
196
+ const routing = config.routing;
197
+ const outDir = resolve(config.rootDir, routing.outputDir);
198
+ const dtsPath = resolve(config.rootDir, ".ubean", "typed-router.d.ts");
199
+ const configGetRouteMeta = routing.getRouteMeta;
200
+ const generatorGetRouteMeta = configGetRouteMeta ? (page) => configGetRouteMeta(page.relativePath, page.frontmatter ?? {}) : void 0;
201
+ const { generateRouteFiles } = await import("@ubean/vue/generator");
202
+ const result = await generateRouteFiles(scanResult, {
203
+ cwd: config.rootDir,
204
+ srcDir: config.srcDir,
205
+ outDir,
206
+ dtsPath,
207
+ generateRoutes: generateEntityFiles,
208
+ generateImports: generateEntityFiles,
209
+ generateDts: true,
210
+ routeLazy: routing.routeLazy,
211
+ layoutLazy: routing.layoutLazy,
212
+ getRouteMeta: generatorGetRouteMeta,
213
+ headerComment: void 0,
214
+ localeVueParam: localeVueParamFromI18n(config.i18n)
215
+ });
216
+ if (routing.onGenerated) {
217
+ const files = [
218
+ result.routesPath,
219
+ result.importsPath,
220
+ result.dtsPath
221
+ ].filter((p) => Boolean(p));
222
+ routing.onGenerated(files);
223
+ }
224
+ }
225
+ //#endregion
226
+ export { localeVueParamFromI18n as n, serializeI18nConfig as r, ubeanPlugin as t };
package/dist/vite.d.ts CHANGED
@@ -18,7 +18,7 @@ interface UbeanPluginOptions {
18
18
  * - 文件监听(dev 模式下扫描 `routes` / `middleware` / `pages` / `layouts` / `plugins` / `locales`)
19
19
  * - 实体路由文件生成(当 `routing.mode` 为 `'file'` 或 `'both'` 时触发 `@ubean/vue/generator`)
20
20
  *
21
- * Vue 专属的虚拟模块(`virtual:ubean-pages`、`virtual:ubean-app` 等)由 `@ubean/vite` 的
21
+ * Vue 专属的虚拟模块(`virtual:ubean-pages`、`virtual:ubean-app` 等)由 `@ubean/build/vue` 的
22
22
  * `ubeanVite` 提供,二者共用 `useVirtualRegistry()` 注册表。
23
23
  *
24
24
  * @example 在 vite.config.ts 中使用(自动加载 ubean.config)
package/dist/vite.js CHANGED
@@ -1,211 +1,2 @@
1
- import { a as createRoutingVirtualModule, i as createPagesVirtualModule, n as createLocalesVirtualModule, r as createMetaVirtualModule, t as createAppVirtualModule } from "./virtual-modules-BDgTqx3t.js";
2
- import { transformMacros, useVirtualRegistry } from "@ubean/build-core";
3
- import { join, relative, resolve } from "pathe";
4
- import { loadUbeanConfig, tryGetConfig } from "@ubean/config";
5
- import { createServerRouter } from "@ubean/routes";
6
- import { scanProject } from "@ubean/scan";
7
- //#region src/vite.ts
8
- const VIRTUAL_MODULES = [
9
- "ubean:routes",
10
- "ubean:pages",
11
- "ubean:meta",
12
- "ubean:app-config",
13
- "ubean:locales"
14
- ];
15
- const VIRTUAL_PREFIX = "\0ubean:";
16
- /**
17
- * ubean 核心 Vite 插件(框架无关部分)。
18
- *
19
- * 提供:
20
- * - 虚拟模块(`ubean:routes`、`ubean:pages`、`ubean:meta`、`ubean:app-config`、`ubean:locales`)
21
- * - 宏转换(`definePage` / `defineMeta` 在 `.ts` / `.vue` 中被剥离)
22
- * - 文件监听(dev 模式下扫描 `routes` / `middleware` / `pages` / `layouts` / `plugins` / `locales`)
23
- * - 实体路由文件生成(当 `routing.mode` 为 `'file'` 或 `'both'` 时触发 `@ubean/vue/generator`)
24
- *
25
- * Vue 专属的虚拟模块(`virtual:ubean-pages`、`virtual:ubean-app` 等)由 `@ubean/vite` 的
26
- * `ubeanVite` 提供,二者共用 `useVirtualRegistry()` 注册表。
27
- *
28
- * @example 在 vite.config.ts 中使用(自动加载 ubean.config)
29
- * ```typescript
30
- * import { defineConfig } from 'vite';
31
- * import { ubeanPlugin } from '@ubean/build/vite';
32
- *
33
- * export default defineConfig({
34
- * plugins: [ubeanPlugin()]
35
- * });
36
- * ```
37
- *
38
- * @example 显式传入配置(ubean dev/build 内部使用)
39
- * ```typescript
40
- * ubeanPlugin({ config: resolvedConfig })
41
- * ```
42
- */
43
- function ubeanPlugin(options) {
44
- const virtualRegistry = useVirtualRegistry();
45
- let ubeanConfig = options?.config ?? tryGetConfig() ?? void 0;
46
- let srcDirAbs = "";
47
- let viteSrcDir = "";
48
- let viteSrcPrefix = "";
49
- function ensureDerived() {
50
- if (!ubeanConfig) return;
51
- srcDirAbs = resolve(ubeanConfig.rootDir, ubeanConfig.srcDir);
52
- viteSrcDir = relative(ubeanConfig.rootDir, srcDirAbs).replace(/\\/g, "/");
53
- viteSrcPrefix = viteSrcDir ? `/${viteSrcDir}` : "";
54
- }
55
- if (ubeanConfig) ensureDerived();
56
- return {
57
- name: "ubean:core",
58
- enforce: "pre",
59
- async buildStart() {
60
- if (!ubeanConfig) {
61
- ubeanConfig = await loadUbeanConfig();
62
- ensureDerived();
63
- }
64
- await scanAndRegister();
65
- },
66
- resolveId(id) {
67
- if (VIRTUAL_MODULES.includes(id)) return VIRTUAL_PREFIX + id;
68
- },
69
- async load(id) {
70
- if (id.startsWith(VIRTUAL_PREFIX)) {
71
- const moduleId = id.slice(7);
72
- const mod = virtualRegistry.getModules().find((m) => m.id === moduleId);
73
- if (mod) return await mod.load();
74
- }
75
- },
76
- transform(code, id) {
77
- const result = transformMacros(code, id);
78
- if (result !== null && result !== code) return {
79
- code: result,
80
- map: null
81
- };
82
- return null;
83
- },
84
- configureServer(server) {
85
- const watchDirs = [
86
- "routes",
87
- "middleware",
88
- "pages",
89
- "layouts",
90
- "plugins",
91
- "locales"
92
- ];
93
- const config = ubeanConfig;
94
- const srcDir = join(config.rootDir, config.srcDir);
95
- for (const dir of watchDirs) server.watcher.add(join(srcDir, dir));
96
- server.watcher.on("add", handleFileChange);
97
- server.watcher.on("unlink", handleFileChange);
98
- server.watcher.on("change", handleFileChange);
99
- async function handleFileChange(file) {
100
- const relativePath = file.replace(`${srcDir}/`, "");
101
- if (watchDirs.some((d) => relativePath.startsWith(`${d}/`))) {
102
- await scanAndRegister();
103
- for (const mod of VIRTUAL_MODULES) {
104
- const module = server.moduleGraph.getModuleById(VIRTUAL_PREFIX + mod);
105
- if (module) server.moduleGraph.invalidateModule(module);
106
- }
107
- if (relativePath.startsWith("locales/")) server.ws.send({
108
- type: "custom",
109
- event: "ubean:locale-update",
110
- data: { file }
111
- });
112
- }
113
- }
114
- }
115
- };
116
- async function scanAndRegister() {
117
- if (!ubeanConfig) return;
118
- const result = await scanProject({
119
- cwd: ubeanConfig.rootDir,
120
- srcDir: ubeanConfig.srcDir,
121
- dirs: ubeanConfig.dir,
122
- ignore: ubeanConfig.scanOptions?.ignore
123
- });
124
- const router = createServerRouter();
125
- for (const mw of result.middlewares) router.addMiddleware(mw);
126
- for (const route of result.apiRoutes) router.addApiRoute(route);
127
- for (const page of result.pages) router.addPage(page);
128
- for (const layout of result.layouts) router.addLayout(layout);
129
- virtualRegistry.register(createRoutingVirtualModule(result.apiRoutes.map((r) => ({
130
- method: r.method?.toUpperCase() || "ALL",
131
- path: r.route,
132
- id: `${r.method}:${r.route}`,
133
- filePath: r.fullPath
134
- })), result.middlewares.map((m) => ({
135
- path: "/**",
136
- filePath: m.fullPath,
137
- order: m.order,
138
- global: m.global
139
- })), ubeanConfig.rootDir));
140
- virtualRegistry.register(createPagesVirtualModule(result.pages.map((p) => ({
141
- name: p.name,
142
- path: p.route,
143
- filePath: p.fullPath,
144
- layout: p.layout,
145
- reuseTarget: p.reuseTarget
146
- })), result.layouts.map((l) => ({
147
- name: l.name,
148
- filePath: l.fullPath,
149
- isDefault: l.isDefault
150
- })), ubeanConfig.rootDir));
151
- virtualRegistry.register(createMetaVirtualModule());
152
- virtualRegistry.register(createAppVirtualModule(result.apiRoutes, result.middlewares, result.pages, viteSrcPrefix || "/"));
153
- virtualRegistry.register(createLocalesVirtualModule(result.locales, result.defaultLocale, viteSrcPrefix || "/"));
154
- await maybeGenerateRouteFiles(ubeanConfig, result).catch((err) => {
155
- console.warn("[ubean:core] Route file generation failed:", err?.message || err);
156
- });
157
- }
158
- }
159
- /**
160
- * 根据 `routing.mode` 决定是否触发实体文件生成。
161
- *
162
- * - `'virtual'`(默认):仅生成 `.ubean/typed-router.d.ts`(类型声明,所有模式都生成)
163
- * - `'file'`:额外生成 `routes.ts`/`imports.ts` 到 `outputDir`(实体文件,可编辑 `meta`)
164
- * - `'both'`:同 `'file'`,且虚拟模块也加载实体文件
165
- *
166
- * `typed-router.d.ts` 包含 `@ubean/scan` 和 `vue-router`/`vue-router/auto-routes`
167
- * 的模块增强(让 `useRoute<Name>(name)` 能推断 `route.params` 类型),所有模式
168
- * 都会生成到 `.ubean/typed-router.d.ts`,与 `auto-imports.d.ts`/`components.d.ts`
169
- * 等其他纯类型声明产物同目录,由 `.gitignore` 忽略。
170
- *
171
- * 由于 `@ubean/vue/generator` 通过动态 import 加载,前端-only 项目
172
- * (不依赖实体路由文件)即使没有安装 generator 相关依赖也能运行。
173
- *
174
- * 注意:`@ubean/config` 与 `@ubean/vue/generator` 的 `getRouteMeta` /
175
- * `onGenerated` 签名略有差异(配置层面向用户,生成器层面向内部)。本函数
176
- * 负责适配:把 `(filePath, frontmatter) => meta` 包装为 `(page) => meta`,
177
- * 把 `GeneratorResult` 转换为 `string[]` 文件路径列表。
178
- */
179
- async function maybeGenerateRouteFiles(config, scanResult) {
180
- const mode = config.routing?.mode;
181
- const generateEntityFiles = mode === "file" || mode === "both";
182
- const routing = config.routing;
183
- const outDir = resolve(config.rootDir, routing.outputDir);
184
- const dtsPath = resolve(config.rootDir, ".ubean", "typed-router.d.ts");
185
- const configGetRouteMeta = routing.getRouteMeta;
186
- const generatorGetRouteMeta = configGetRouteMeta ? (page) => configGetRouteMeta(page.relativePath, page.frontmatter ?? {}) : void 0;
187
- const { generateRouteFiles } = await import("@ubean/vue/generator");
188
- const result = await generateRouteFiles(scanResult, {
189
- cwd: config.rootDir,
190
- srcDir: config.srcDir,
191
- outDir,
192
- dtsPath,
193
- generateRoutes: generateEntityFiles,
194
- generateImports: generateEntityFiles,
195
- generateDts: true,
196
- routeLazy: routing.routeLazy,
197
- layoutLazy: routing.layoutLazy,
198
- getRouteMeta: generatorGetRouteMeta,
199
- headerComment: void 0
200
- });
201
- if (routing.onGenerated) {
202
- const files = [
203
- result.routesPath,
204
- result.importsPath,
205
- result.dtsPath
206
- ].filter((p) => Boolean(p));
207
- routing.onGenerated(files);
208
- }
209
- }
210
- //#endregion
1
+ import { t as ubeanPlugin } from "./vite-D640Tpv8.js";
211
2
  export { ubeanPlugin };