bobe-router 0.0.60 → 0.0.62
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.
- package/dist/bobe-router.cjs.js +47 -16
- package/dist/bobe-router.cjs.js.map +1 -1
- package/dist/bobe-router.esm.js +47 -16
- package/dist/bobe-router.esm.js.map +1 -1
- package/dist/index.d.ts +18 -4
- package/dist/index.umd.js +47 -16
- package/dist/index.umd.js.map +1 -1
- package/dist/plugin.cjs.js +241 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.esm.js +239 -0
- package/dist/plugin.esm.js.map +1 -0
- package/dist/ssr-routes.d.ts +2 -0
- package/package.json +14 -2
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { join, resolve } from 'path';
|
|
2
|
+
import { readdirSync } from 'fs';
|
|
3
|
+
|
|
4
|
+
function _arrayLikeToArray(r, a) {
|
|
5
|
+
(null == a || a > r.length) && (a = r.length);
|
|
6
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
7
|
+
return n;
|
|
8
|
+
}
|
|
9
|
+
function _arrayWithHoles(r) {
|
|
10
|
+
if (Array.isArray(r)) return r;
|
|
11
|
+
}
|
|
12
|
+
function _iterableToArrayLimit(r, l) {
|
|
13
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
14
|
+
if (null != t) {
|
|
15
|
+
var e,
|
|
16
|
+
n,
|
|
17
|
+
i,
|
|
18
|
+
u,
|
|
19
|
+
a = [],
|
|
20
|
+
f = true,
|
|
21
|
+
o = false;
|
|
22
|
+
try {
|
|
23
|
+
if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
24
|
+
} catch (r) {
|
|
25
|
+
o = true, n = r;
|
|
26
|
+
} finally {
|
|
27
|
+
try {
|
|
28
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
29
|
+
} finally {
|
|
30
|
+
if (o) throw n;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return a;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function _nonIterableRest() {
|
|
37
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
38
|
+
}
|
|
39
|
+
function _slicedToArray(r, e) {
|
|
40
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
41
|
+
}
|
|
42
|
+
function _unsupportedIterableToArray(r, a) {
|
|
43
|
+
if (r) {
|
|
44
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
45
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
46
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const RE_DIR = /^(?:(\d+)_)?([^_]+?)(?:_(.+?))?$/;
|
|
51
|
+
const DEFAULT_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'];
|
|
52
|
+
function buildFileRegex(extensions) {
|
|
53
|
+
const exts = extensions.map(e => e.replace(/^\./, '')).join('|');
|
|
54
|
+
return new RegExp(`^(?:(\\d+)_)?([^_]+?)(?:_(.*))?\\.(${exts})$`);
|
|
55
|
+
}
|
|
56
|
+
function buildUrl(base, part) {
|
|
57
|
+
return (base === '/' ? '' : base) + '/' + part.replace(/\./g, '/');
|
|
58
|
+
}
|
|
59
|
+
function parseEntry(name, fileRe) {
|
|
60
|
+
const dirMatch = name.match(RE_DIR);
|
|
61
|
+
const isDir = !name.includes('.');
|
|
62
|
+
if (isDir && dirMatch) {
|
|
63
|
+
const _dirMatch = _slicedToArray(dirMatch, 4),
|
|
64
|
+
orderStr = _dirMatch[1],
|
|
65
|
+
pathPart = _dirMatch[2],
|
|
66
|
+
menuName = _dirMatch[3];
|
|
67
|
+
return {
|
|
68
|
+
order: orderStr ? parseInt(orderStr, 10) : Infinity,
|
|
69
|
+
pathPart,
|
|
70
|
+
menuName
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const fileMatch = name.match(fileRe);
|
|
74
|
+
if (fileMatch) {
|
|
75
|
+
const _fileMatch = _slicedToArray(fileMatch, 4),
|
|
76
|
+
orderStr = _fileMatch[1],
|
|
77
|
+
pathPart = _fileMatch[2],
|
|
78
|
+
menuName = _fileMatch[3];
|
|
79
|
+
return {
|
|
80
|
+
order: orderStr ? parseInt(orderStr, 10) : Infinity,
|
|
81
|
+
pathPart,
|
|
82
|
+
menuName
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function sortEntries(entries, fileRe) {
|
|
88
|
+
return entries.sort((a, b) => {
|
|
89
|
+
const pa = parseEntry(a.name, fileRe);
|
|
90
|
+
const pb = parseEntry(b.name, fileRe);
|
|
91
|
+
const oa = pa?.order ?? Infinity;
|
|
92
|
+
const ob = pb?.order ?? Infinity;
|
|
93
|
+
if (oa !== ob) return oa - ob;
|
|
94
|
+
return a.name.localeCompare(b.name);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function scanDir(absDir, basePath = absDir, parentPath = '', menuRef, extensions = DEFAULT_EXTENSIONS) {
|
|
98
|
+
const routes = [];
|
|
99
|
+
const menus = [];
|
|
100
|
+
let entries;
|
|
101
|
+
const fileRe = buildFileRegex(extensions);
|
|
102
|
+
try {
|
|
103
|
+
entries = readdirSync(absDir, {
|
|
104
|
+
withFileTypes: true
|
|
105
|
+
});
|
|
106
|
+
} catch {
|
|
107
|
+
return {
|
|
108
|
+
routes,
|
|
109
|
+
menus
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
entries = sortEntries(entries, fileRe);
|
|
113
|
+
for (const ent of entries) {
|
|
114
|
+
const full = join(absDir, ent.name);
|
|
115
|
+
const parsed = parseEntry(ent.name, fileRe);
|
|
116
|
+
if (!parsed) continue;
|
|
117
|
+
const pathPart = parsed.pathPart,
|
|
118
|
+
menuName = parsed.menuName;
|
|
119
|
+
if (ent.isDirectory()) {
|
|
120
|
+
const urlPath = buildUrl(parentPath, pathPart);
|
|
121
|
+
const menu = {
|
|
122
|
+
name: menuName || pathPart,
|
|
123
|
+
hasComponent: false,
|
|
124
|
+
children: []
|
|
125
|
+
};
|
|
126
|
+
const child = scanDir(full, basePath, urlPath, menu, extensions);
|
|
127
|
+
routes.push(...child.routes);
|
|
128
|
+
menu.children = child.menus;
|
|
129
|
+
menus.push(menu);
|
|
130
|
+
} else if (ent.isFile()) {
|
|
131
|
+
const isIndex = pathPart === 'index';
|
|
132
|
+
const relFile = '/' + full.slice(basePath.length).replace(/^[/\\]/, '');
|
|
133
|
+
const urlPath = buildUrl(parentPath, pathPart);
|
|
134
|
+
if (isIndex) {
|
|
135
|
+
const url = parentPath || '/';
|
|
136
|
+
routes.push({
|
|
137
|
+
url,
|
|
138
|
+
file: relFile,
|
|
139
|
+
menuName
|
|
140
|
+
});
|
|
141
|
+
if (menuRef) {
|
|
142
|
+
if (menuName) menuRef.name = menuName;
|
|
143
|
+
menuRef.path = url;
|
|
144
|
+
menuRef.hasComponent = true;
|
|
145
|
+
} else if (menuName) {
|
|
146
|
+
menus.push({
|
|
147
|
+
name: menuName,
|
|
148
|
+
path: '/',
|
|
149
|
+
hasComponent: true,
|
|
150
|
+
children: []
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
} else {
|
|
154
|
+
routes.push({
|
|
155
|
+
url: urlPath,
|
|
156
|
+
file: relFile,
|
|
157
|
+
menuName
|
|
158
|
+
});
|
|
159
|
+
if (menuName) menus.push({
|
|
160
|
+
name: menuName,
|
|
161
|
+
path: urlPath,
|
|
162
|
+
hasComponent: true
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
routes,
|
|
169
|
+
menus
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
let GlobalKey = function (GlobalKey) {
|
|
174
|
+
GlobalKey["Routes"] = "__BOBE_INIT_ROUTES__";
|
|
175
|
+
GlobalKey["Menus"] = "__BOBE_INIT_MENUS__";
|
|
176
|
+
GlobalKey["Path"] = "__BOBE_INIT_PATH__";
|
|
177
|
+
return GlobalKey;
|
|
178
|
+
}({});
|
|
179
|
+
|
|
180
|
+
const Routes = GlobalKey.Routes,
|
|
181
|
+
Menus = GlobalKey.Menus;
|
|
182
|
+
function generateCsrInit(items) {
|
|
183
|
+
const entries = items.map(({
|
|
184
|
+
url,
|
|
185
|
+
file
|
|
186
|
+
}) => ` '${url}': { import: () => import('${file}') }`);
|
|
187
|
+
return `globalThis['${Routes}'] = {\n` + entries.join(',\n') + '\n};';
|
|
188
|
+
}
|
|
189
|
+
function generateSsgInit(items) {
|
|
190
|
+
const imports = items.map(({
|
|
191
|
+
file
|
|
192
|
+
}, i) => `import __route_${i} from '${file}';`);
|
|
193
|
+
const names = items.map((_, i) => `__route_${i}`);
|
|
194
|
+
const entries = items.map(({
|
|
195
|
+
url
|
|
196
|
+
}, i) => ` '${url}': { component: __route_${i} }`);
|
|
197
|
+
return imports.join('\n') + `\n\nglobalThis['${Routes}'] = {\n` + entries.join(',\n') + '\n};' + `\nexport const __bobe_routes = [${names.join(', ')}];`;
|
|
198
|
+
}
|
|
199
|
+
function generateCsrMenus(menus) {
|
|
200
|
+
return `globalThis['${Menus}'] = ${JSON.stringify(menus)};`;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function bobeRouter(opt = {}) {
|
|
204
|
+
const dir = opt.dir || 'pages';
|
|
205
|
+
const extensions = opt.extensions || ['js', 'jsx', 'ts', 'tsx'];
|
|
206
|
+
let root;
|
|
207
|
+
return [{
|
|
208
|
+
name: 'bobe-router',
|
|
209
|
+
enforce: 'pre',
|
|
210
|
+
configResolved(config) {
|
|
211
|
+
root = config.root;
|
|
212
|
+
},
|
|
213
|
+
resolveId(id) {
|
|
214
|
+
if (id === 'bobe-router/csr-routes') return '\0bobe-router/csr-routes';
|
|
215
|
+
},
|
|
216
|
+
load(id) {
|
|
217
|
+
if (id === '\0bobe-router/csr-routes') {
|
|
218
|
+
const absDir = resolve(root, dir);
|
|
219
|
+
const _scanDir = scanDir(absDir, root, '', undefined, extensions),
|
|
220
|
+
routes = _scanDir.routes,
|
|
221
|
+
menus = _scanDir.menus;
|
|
222
|
+
return generateCsrInit(routes) + (menus.length ? '\n' + generateCsrMenus(menus) : '');
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
transform(code, id) {
|
|
226
|
+
if (id.includes('entry-server.ts')) {
|
|
227
|
+
const absDir = resolve(root, dir);
|
|
228
|
+
const _scanDir2 = scanDir(absDir, root, '', undefined, extensions),
|
|
229
|
+
routes = _scanDir2.routes,
|
|
230
|
+
menus = _scanDir2.menus;
|
|
231
|
+
const ssg = generateSsgInit(routes) + (menus.length ? '\n' + generateCsrMenus(menus) : '');
|
|
232
|
+
return ssg + '\n' + code;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export { bobeRouter as default };
|
|
239
|
+
//# sourceMappingURL=plugin.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.esm.js","sources":["../src/plugin/scan.ts","../src/global.ts","../src/plugin/generate.ts","../src/plugin/index.ts"],"sourcesContent":["import { Menu } from '#/type';\nimport { Dirent, readdirSync } from 'fs';\nimport { join } from 'path';\n\nexport interface ScanItem {\n url: string;\n file: string;\n menuName?: string;\n}\n\nconst RE_DIR = /^(?:(\\d+)_)?([^_]+?)(?:_(.+?))?$/;\n\nconst DEFAULT_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'];\n\nfunction buildFileRegex(extensions: string[]): RegExp {\n const exts = extensions.map(e => e.replace(/^\\./, '')).join('|');\n return new RegExp(`^(?:(\\\\d+)_)?([^_]+?)(?:_(.*))?\\\\.(${exts})$`);\n}\n\nfunction buildUrl(base: string, part: string): string {\n return (base === '/' ? '' : base) + '/' + part.replace(/\\./g, '/');\n}\n\nfunction parseEntry(name: string, fileRe: RegExp): { order: number; pathPart: string; menuName?: string } | null {\n const dirMatch = name.match(RE_DIR);\n const isDir = !name.includes('.');\n\n if (isDir && dirMatch) {\n const [, orderStr, pathPart, menuName] = dirMatch;\n return { order: orderStr ? parseInt(orderStr, 10) : Infinity, pathPart, menuName };\n }\n\n const fileMatch = name.match(fileRe);\n if (fileMatch) {\n const [, orderStr, pathPart, menuName] = fileMatch;\n return { order: orderStr ? parseInt(orderStr, 10) : Infinity, pathPart, menuName };\n }\n\n return null;\n}\n\nfunction sortEntries(entries: Dirent[], fileRe: RegExp): Dirent[] {\n return entries.sort((a, b) => {\n const pa = parseEntry(a.name, fileRe);\n const pb = parseEntry(b.name, fileRe);\n const oa = pa?.order ?? Infinity;\n const ob = pb?.order ?? Infinity;\n if (oa !== ob) return oa - ob;\n return a.name.localeCompare(b.name);\n });\n}\n\nexport function scanDir(\n absDir: string,\n basePath = absDir,\n parentPath = '',\n menuRef?: Menu,\n extensions: string[] = DEFAULT_EXTENSIONS\n): { routes: ScanItem[]; menus: Menu[] } {\n const routes: ScanItem[] = [];\n const menus: Menu[] = [];\n let entries: Dirent[];\n const fileRe = buildFileRegex(extensions);\n\n try {\n entries = readdirSync(absDir, { withFileTypes: true });\n } catch {\n return { routes, menus };\n }\n\n entries = sortEntries(entries, fileRe);\n\n for (const ent of entries) {\n const full = join(absDir, ent.name);\n const parsed = parseEntry(ent.name, fileRe);\n if (!parsed) continue;\n\n const { pathPart, menuName } = parsed;\n\n if (ent.isDirectory()) {\n const urlPath = buildUrl(parentPath, pathPart);\n const menu: Menu = {\n name: menuName || pathPart,\n hasComponent: false,\n children: []\n };\n const child = scanDir(full, basePath, urlPath, menu, extensions);\n routes.push(...child.routes);\n menu.children = child.menus;\n menus.push(menu);\n } else if (ent.isFile()) {\n const isIndex = pathPart === 'index';\n const relFile = '/' + full.slice(basePath.length).replace(/^[/\\\\]/, '');\n const urlPath = buildUrl(parentPath, pathPart);\n\n if (isIndex) {\n const url = parentPath || '/';\n routes.push({ url, file: relFile, menuName });\n if (menuRef) {\n // 直接修改父菜单,不走 push\n if (menuName) menuRef.name = menuName;\n menuRef.path = url;\n menuRef.hasComponent = true;\n } else if (menuName) {\n menus.push({ name: menuName, path: '/', hasComponent: true, children: [] });\n }\n } else {\n routes.push({ url: urlPath, file: relFile, menuName });\n if (menuName) menus.push({ name: menuName, path: urlPath, hasComponent: true });\n }\n }\n }\n\n return { routes, menus };\n}\n","/** 通过 globalThis 传递的路由全局变量名 */\nexport enum GlobalKey {\n /** 路由表:{ [url]: { import/component } } */\n Routes = '__BOBE_INIT_ROUTES__',\n /** 菜单树:Menu[] */\n Menus = '__BOBE_INIT_MENUS__',\n /** 初始路径 */\n Path = '__BOBE_INIT_PATH__',\n}\n","import { GlobalKey } from '#/global';\nimport { Menu } from '#/type';\nimport type { ScanItem } from './scan';\n\nconst { Routes, Menus } = GlobalKey;\n\nexport function generateCsrInit(items: ScanItem[]): string {\n const entries = items.map(({ url, file }) =>\n ` '${url}': { import: () => import('${file}') }`\n );\n return `globalThis['${Routes}'] = {\\n` + entries.join(',\\n') + '\\n};';\n}\n\nexport function generateSsgInit(items: ScanItem[]): string {\n const imports = items.map(({ file }, i) =>\n `import __route_${i} from '${file}';`\n );\n const names = items.map((_, i) => `__route_${i}`);\n const entries = items.map(({ url }, i) =>\n ` '${url}': { component: __route_${i} }`\n );\n return imports.join('\\n')\n + `\\n\\nglobalThis['${Routes}'] = {\\n` + entries.join(',\\n') + '\\n};'\n + `\\nexport const __bobe_routes = [${names.join(', ')}];`;\n}\n\nexport function generateCsrMenus(menus: Menu[]): string {\n return `globalThis['${Menus}'] = ${JSON.stringify(menus)};`;\n}\n","import type { Plugin } from 'vite';\nimport { resolve } from 'path';\nimport { scanDir } from './scan';\nimport { generateCsrInit, generateSsgInit, generateCsrMenus } from './generate';\n\nexport interface BobeRouterPluginOptions {\n dir?: string;\n ssg?: boolean;\n /** 可识别的文件后缀,默认 ['js', 'jsx', 'ts', 'tsx'] */\n extensions?: string[];\n}\n\nexport default function bobeRouter(opt: BobeRouterPluginOptions = {}): Plugin[] {\n const dir = opt.dir || 'pages';\n const extensions = opt.extensions || ['js', 'jsx', 'ts', 'tsx'];\n\n let root: string;\n\n return [{\n name: 'bobe-router',\n enforce: 'pre',\n configResolved(config) {\n root = config.root;\n },\n\n resolveId(id) {\n if (id === 'bobe-router/csr-routes') return '\\0bobe-router/csr-routes';\n },\n\n load(id) {\n if (id === '\\0bobe-router/csr-routes') {\n const absDir = resolve(root, dir);\n const { routes, menus } = scanDir(absDir, root, '', undefined, extensions);\n return generateCsrInit(routes) + (menus.length ? '\\n' + generateCsrMenus(menus) : '');\n }\n },\n\n // SSR routes 直接注入到 entry-server.ts,不走虚拟模块(避免 Rollup tree-shake)\n transform(code, id) {\n if (id.includes('entry-server.ts')) {\n const absDir = resolve(root, dir);\n const { routes, menus } = scanDir(absDir, root, '', undefined, extensions);\n const ssg = generateSsgInit(routes) + (menus.length ? '\\n' + generateCsrMenus(menus) : '');\n return ssg + '\\n' + code;\n }\n }\n }];\n}\n"],"names":["RE_DIR","DEFAULT_EXTENSIONS","buildFileRegex","extensions","exts","map","e","replace","join","RegExp","buildUrl","base","part","parseEntry","name","fileRe","dirMatch","match","isDir","includes","_dirMatch","_slicedToArray","orderStr","pathPart","menuName","order","parseInt","Infinity","fileMatch","_fileMatch","sortEntries","entries","sort","a","b","pa","pb","oa","ob","localeCompare","scanDir","absDir","basePath","parentPath","menuRef","routes","menus","readdirSync","withFileTypes","ent","full","parsed","isDirectory","urlPath","menu","hasComponent","children","child","push","isFile","isIndex","relFile","slice","length","url","file","path","GlobalKey","Routes","Menus","generateCsrInit","items","generateSsgInit","imports","i","names","_","generateCsrMenus","JSON","stringify","bobeRouter","opt","dir","root","enforce","configResolved","config","resolveId","id","load","resolve","_scanDir","undefined","transform","code","_scanDir2","ssg"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bobe-router",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.62",
|
|
4
4
|
"main": "dist/bobe-router.cjs.js",
|
|
5
5
|
"module": "dist/bobe-router.esm.js",
|
|
6
6
|
"browser": "dist/bobe-router.umd.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"private": false,
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"aoye": "0.0.
|
|
10
|
+
"aoye": "0.0.62"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/bobe-router.esm.js",
|
|
16
|
+
"require": "./dist/bobe-router.cjs.js"
|
|
17
|
+
},
|
|
18
|
+
"./plugin": {
|
|
19
|
+
"types": "./dist/plugin.d.ts",
|
|
20
|
+
"import": "./dist/plugin.esm.js",
|
|
21
|
+
"require": "./dist/plugin.cjs.js"
|
|
22
|
+
}
|
|
11
23
|
},
|
|
12
24
|
"devDependencies": {},
|
|
13
25
|
"files": [
|