@lark-apaas/fullstack-vite-preset 1.0.1-alpha.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.
- package/README.md +121 -0
- package/lib/index.d.ts +39 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +75 -0
- package/lib/index.js.map +1 -0
- package/lib/module-alias/clsx.d.ts +4 -0
- package/lib/module-alias/clsx.d.ts.map +1 -0
- package/lib/module-alias/clsx.js +13 -0
- package/lib/module-alias/clsx.js.map +1 -0
- package/lib/module-alias/echarts.d.ts +4 -0
- package/lib/module-alias/echarts.d.ts.map +1 -0
- package/lib/module-alias/echarts.js +50 -0
- package/lib/module-alias/echarts.js.map +1 -0
- package/lib/module-alias/registry_echarts_theme.d.ts +696 -0
- package/lib/module-alias/registry_echarts_theme.d.ts.map +1 -0
- package/lib/module-alias/registry_echarts_theme.js +394 -0
- package/lib/module-alias/registry_echarts_theme.js.map +1 -0
- package/lib/preset.d.ts +14 -0
- package/lib/preset.d.ts.map +1 -0
- package/lib/preset.js +283 -0
- package/lib/preset.js.map +1 -0
- package/lib/utils/hmr-timing.d.ts +8 -0
- package/lib/utils/hmr-timing.d.ts.map +1 -0
- package/lib/utils/hmr-timing.js +132 -0
- package/lib/utils/hmr-timing.js.map +1 -0
- package/lib/utils/normalize-base-path.d.ts +7 -0
- package/lib/utils/normalize-base-path.d.ts.map +1 -0
- package/lib/utils/normalize-base-path.js +15 -0
- package/lib/utils/normalize-base-path.js.map +1 -0
- package/lib/utils/snapdom-proxy.d.ts +8 -0
- package/lib/utils/snapdom-proxy.d.ts.map +1 -0
- package/lib/utils/snapdom-proxy.js +52 -0
- package/lib/utils/snapdom-proxy.js.map +1 -0
- package/lib/vite-plugins/html-output-plugin.d.ts +14 -0
- package/lib/vite-plugins/html-output-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/html-output-plugin.js +129 -0
- package/lib/vite-plugins/html-output-plugin.js.map +1 -0
- package/lib/vite-plugins/inspector-css-plugin.d.ts +19 -0
- package/lib/vite-plugins/inspector-css-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/inspector-css-plugin.js +70 -0
- package/lib/vite-plugins/inspector-css-plugin.js.map +1 -0
- package/lib/vite-plugins/module-alias-plugin.d.ts +10 -0
- package/lib/vite-plugins/module-alias-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/module-alias-plugin.js +36 -0
- package/lib/vite-plugins/module-alias-plugin.js.map +1 -0
- package/lib/vite-plugins/og-meta-plugin.d.ts +17 -0
- package/lib/vite-plugins/og-meta-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/og-meta-plugin.js +81 -0
- package/lib/vite-plugins/og-meta-plugin.js.map +1 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts +8 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/route-parser-plugin.js +280 -0
- package/lib/vite-plugins/route-parser-plugin.js.map +1 -0
- package/lib/vite-plugins/runtime-injection-plugin.d.ts +22 -0
- package/lib/vite-plugins/runtime-injection-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/runtime-injection-plugin.js +50 -0
- package/lib/vite-plugins/runtime-injection-plugin.js.map +1 -0
- package/lib/vite-plugins/slardar-plugin.d.ts +10 -0
- package/lib/vite-plugins/slardar-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/slardar-plugin.js +98 -0
- package/lib/vite-plugins/slardar-plugin.js.map +1 -0
- package/lib/vite-plugins/view-context-plugin.d.ts +4 -0
- package/lib/vite-plugins/view-context-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/view-context-plugin.js +40 -0
- package/lib/vite-plugins/view-context-plugin.js.map +1 -0
- package/package.json +57 -0
- package/src/empty.css +1 -0
- package/src/inspector-stub.js +6 -0
- package/src/module-alias/clsx.mjs +8 -0
- package/src/module-alias/echarts.mjs +28 -0
- package/src/module-alias/registry_echarts_theme.mjs +390 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.routeParserPlugin = routeParserPlugin;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const crypto = __importStar(require("crypto"));
|
|
43
|
+
const parser_1 = require("@babel/parser");
|
|
44
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
45
|
+
const t = __importStar(require("@babel/types"));
|
|
46
|
+
function log(level, message, ...args) {
|
|
47
|
+
const prefix = '[route-parser]';
|
|
48
|
+
const logMessage = `${prefix} ${message}`;
|
|
49
|
+
switch (level) {
|
|
50
|
+
case 'log':
|
|
51
|
+
console.log(logMessage, ...args);
|
|
52
|
+
break;
|
|
53
|
+
case 'warn':
|
|
54
|
+
console.warn(logMessage, ...args);
|
|
55
|
+
break;
|
|
56
|
+
case 'error':
|
|
57
|
+
console.error(logMessage, ...args);
|
|
58
|
+
break;
|
|
59
|
+
case 'info':
|
|
60
|
+
console.info(logMessage, ...args);
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
console.log(logMessage, ...args);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function calculateFileHash(filePath) {
|
|
67
|
+
try {
|
|
68
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
69
|
+
return crypto.createHash('md5').update(content).digest('hex');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
log('warn', 'Failed to calculate file hash:', error.message);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function isRouteComponent(openingElement) {
|
|
77
|
+
return (t.isJSXIdentifier(openingElement.name) &&
|
|
78
|
+
openingElement.name.name === 'Route');
|
|
79
|
+
}
|
|
80
|
+
function evaluateTemplateLiteral(templateLiteral) {
|
|
81
|
+
const quasis = templateLiteral.quasis;
|
|
82
|
+
const expressions = templateLiteral.expressions;
|
|
83
|
+
if (quasis.length === 1 && expressions.length === 0) {
|
|
84
|
+
return quasis[0].value.raw;
|
|
85
|
+
}
|
|
86
|
+
return quasis.map((q) => q.value.raw).join('');
|
|
87
|
+
}
|
|
88
|
+
function extractRouteInfo(openingElement) {
|
|
89
|
+
const routeInfo = {};
|
|
90
|
+
openingElement.attributes.forEach((attr) => {
|
|
91
|
+
if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
|
|
92
|
+
const name = attr.name.name;
|
|
93
|
+
let value;
|
|
94
|
+
if (attr.value) {
|
|
95
|
+
if (t.isStringLiteral(attr.value)) {
|
|
96
|
+
value = attr.value.value;
|
|
97
|
+
}
|
|
98
|
+
else if (t.isJSXExpressionContainer(attr.value)) {
|
|
99
|
+
const expression = attr.value.expression;
|
|
100
|
+
if (t.isStringLiteral(expression)) {
|
|
101
|
+
value = expression.value;
|
|
102
|
+
}
|
|
103
|
+
else if (t.isTemplateLiteral(expression)) {
|
|
104
|
+
value = evaluateTemplateLiteral(expression);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
value = true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
value = true;
|
|
113
|
+
}
|
|
114
|
+
routeInfo[name] = value;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
return routeInfo;
|
|
118
|
+
}
|
|
119
|
+
function buildFullPath(routeStack, currentRoute) {
|
|
120
|
+
let fullPath = '';
|
|
121
|
+
for (let i = 0; i < routeStack.length; i++) {
|
|
122
|
+
if (routeStack[i].path) {
|
|
123
|
+
let parentPath = routeStack[i].path;
|
|
124
|
+
if (!parentPath.startsWith('/'))
|
|
125
|
+
parentPath = `/${parentPath}`;
|
|
126
|
+
if (parentPath.endsWith('/') && parentPath !== '/') {
|
|
127
|
+
parentPath = parentPath.slice(0, -1);
|
|
128
|
+
}
|
|
129
|
+
fullPath += parentPath === '/' ? '' : parentPath;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (currentRoute.index) {
|
|
133
|
+
return fullPath || '/';
|
|
134
|
+
}
|
|
135
|
+
else if (currentRoute.path) {
|
|
136
|
+
const routePath = currentRoute.path;
|
|
137
|
+
if (routePath === '*') {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
if (!routePath.startsWith('/')) {
|
|
141
|
+
fullPath = `${fullPath}/${routePath}`;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
fullPath = routePath;
|
|
145
|
+
}
|
|
146
|
+
if (fullPath === '')
|
|
147
|
+
fullPath = '/';
|
|
148
|
+
if (!fullPath.startsWith('/'))
|
|
149
|
+
fullPath = `/${fullPath}`;
|
|
150
|
+
return fullPath;
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
function parseRoutes(appPath) {
|
|
155
|
+
try {
|
|
156
|
+
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
157
|
+
if (!fs.existsSync(appFilePath)) {
|
|
158
|
+
throw new Error(`App.tsx file does not exist: ${appFilePath}`);
|
|
159
|
+
}
|
|
160
|
+
const sourceCode = fs.readFileSync(appFilePath, 'utf-8');
|
|
161
|
+
const ast = (0, parser_1.parse)(sourceCode, {
|
|
162
|
+
sourceType: 'module',
|
|
163
|
+
plugins: [
|
|
164
|
+
'jsx',
|
|
165
|
+
'typescript',
|
|
166
|
+
'decorators-legacy',
|
|
167
|
+
'classProperties',
|
|
168
|
+
'objectRestSpread',
|
|
169
|
+
'functionBind',
|
|
170
|
+
'exportDefaultFrom',
|
|
171
|
+
'exportNamespaceFrom',
|
|
172
|
+
'dynamicImport',
|
|
173
|
+
'nullishCoalescingOperator',
|
|
174
|
+
'optionalChaining',
|
|
175
|
+
],
|
|
176
|
+
});
|
|
177
|
+
const routeSet = new Set();
|
|
178
|
+
const routeStack = [];
|
|
179
|
+
(0, traverse_1.default)(ast, {
|
|
180
|
+
JSXElement: {
|
|
181
|
+
enter(nodePath) {
|
|
182
|
+
const { openingElement } = nodePath.node;
|
|
183
|
+
if (isRouteComponent(openingElement)) {
|
|
184
|
+
const routeInfo = extractRouteInfo(openingElement);
|
|
185
|
+
routeStack.push(routeInfo);
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
exit(nodePath) {
|
|
189
|
+
const { openingElement } = nodePath.node;
|
|
190
|
+
if (isRouteComponent(openingElement)) {
|
|
191
|
+
const currentRoute = routeStack.pop();
|
|
192
|
+
if (currentRoute && currentRoute.path === '*') {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (currentRoute && (currentRoute.path || currentRoute.index)) {
|
|
196
|
+
const fullPath = buildFullPath(routeStack, currentRoute);
|
|
197
|
+
if (fullPath) {
|
|
198
|
+
routeSet.add(fullPath);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
const routes = Array.from(routeSet).map((routePath) => ({
|
|
206
|
+
path: routePath,
|
|
207
|
+
}));
|
|
208
|
+
return routes.length > 0 ? routes : [{ path: '/' }];
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
log('warn', 'Route parsing failed, using default routes:', error.message);
|
|
212
|
+
return [{ path: '/' }];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function generateRoutes(appPath, outputPath, lastHash, cachedRoutes) {
|
|
216
|
+
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
217
|
+
if (!fs.existsSync(appFilePath)) {
|
|
218
|
+
log('warn', `App.tsx file does not exist: ${appFilePath}`);
|
|
219
|
+
return cachedRoutes.value || [{ path: '/' }];
|
|
220
|
+
}
|
|
221
|
+
const currentHash = calculateFileHash(appFilePath);
|
|
222
|
+
// Check if we need to regenerate
|
|
223
|
+
if (lastHash.value === currentHash && cachedRoutes.value) {
|
|
224
|
+
return cachedRoutes.value;
|
|
225
|
+
}
|
|
226
|
+
lastHash.value = currentHash;
|
|
227
|
+
const routes = parseRoutes(appPath);
|
|
228
|
+
cachedRoutes.value = routes;
|
|
229
|
+
// Ensure output directory exists
|
|
230
|
+
const outputDir = path.dirname(outputPath);
|
|
231
|
+
if (!fs.existsSync(outputDir)) {
|
|
232
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
233
|
+
}
|
|
234
|
+
// Write routes.json
|
|
235
|
+
fs.writeFileSync(outputPath, JSON.stringify(routes, null, 2));
|
|
236
|
+
log('info', `Generated routes.json with ${routes.length} routes`);
|
|
237
|
+
return routes;
|
|
238
|
+
}
|
|
239
|
+
function routeParserPlugin(options = {}) {
|
|
240
|
+
const { appPath = './client/src/app.tsx', outputPath = './dist/client/routes.json', } = options;
|
|
241
|
+
const lastHash = { value: null };
|
|
242
|
+
const cachedRoutes = {
|
|
243
|
+
value: null,
|
|
244
|
+
};
|
|
245
|
+
return {
|
|
246
|
+
name: 'fullstack-route-parser',
|
|
247
|
+
configureServer(server) {
|
|
248
|
+
// Development mode: watch file changes
|
|
249
|
+
const appFullPath = path.resolve(process.cwd(), appPath);
|
|
250
|
+
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
251
|
+
// Initial generation
|
|
252
|
+
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
253
|
+
// Watch for changes
|
|
254
|
+
server.watcher.add(appFullPath);
|
|
255
|
+
server.watcher.on('change', (file) => {
|
|
256
|
+
if (file === appFullPath) {
|
|
257
|
+
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
},
|
|
261
|
+
buildStart() {
|
|
262
|
+
// Build mode: generate routes
|
|
263
|
+
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
264
|
+
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
265
|
+
},
|
|
266
|
+
generateBundle() {
|
|
267
|
+
// Add routes.json to build output
|
|
268
|
+
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
269
|
+
if (fs.existsSync(fullOutputPath)) {
|
|
270
|
+
this.emitFile({
|
|
271
|
+
type: 'asset',
|
|
272
|
+
fileName: 'routes.json',
|
|
273
|
+
source: fs.readFileSync(fullOutputPath, 'utf-8'),
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
exports.default = routeParserPlugin;
|
|
280
|
+
//# sourceMappingURL=route-parser-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-parser-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Injection Plugin for Vite
|
|
3
|
+
*
|
|
4
|
+
* 在编译时自动将 @lark-apaas/client-toolkit/runtime 注入到入口文件之前
|
|
5
|
+
* 与 rspack-preset 中的 RuntimeInjectionPlugin 功能对齐
|
|
6
|
+
*
|
|
7
|
+
* 原理:在 transform hook 中检测入口文件,将 runtime import 注入到文件开头
|
|
8
|
+
*/
|
|
9
|
+
import type { Plugin } from 'vite';
|
|
10
|
+
export interface RuntimeInjectionPluginOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Entry file patterns to inject runtime into
|
|
13
|
+
* @default ['main.tsx', 'main.ts', 'index.tsx', 'index.ts']
|
|
14
|
+
*/
|
|
15
|
+
entryPatterns?: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Vite plugin to inject @lark-apaas/client-toolkit/runtime at the beginning of entry files
|
|
19
|
+
*/
|
|
20
|
+
export declare function runtimeInjectionPlugin(options?: RuntimeInjectionPluginOptions): Plugin;
|
|
21
|
+
export default runtimeInjectionPlugin;
|
|
22
|
+
//# sourceMappingURL=runtime-injection-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-injection-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,MAAM,CA4CR;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime Injection Plugin for Vite
|
|
4
|
+
*
|
|
5
|
+
* 在编译时自动将 @lark-apaas/client-toolkit/runtime 注入到入口文件之前
|
|
6
|
+
* 与 rspack-preset 中的 RuntimeInjectionPlugin 功能对齐
|
|
7
|
+
*
|
|
8
|
+
* 原理:在 transform hook 中检测入口文件,将 runtime import 注入到文件开头
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.runtimeInjectionPlugin = runtimeInjectionPlugin;
|
|
12
|
+
const RUNTIME_MODULE = '@lark-apaas/client-toolkit/runtime';
|
|
13
|
+
const RUNTIME_IMPORT = `import '${RUNTIME_MODULE}';\n`;
|
|
14
|
+
/**
|
|
15
|
+
* Vite plugin to inject @lark-apaas/client-toolkit/runtime at the beginning of entry files
|
|
16
|
+
*/
|
|
17
|
+
function runtimeInjectionPlugin(options = {}) {
|
|
18
|
+
const { entryPatterns = ['main.tsx', 'main.ts', 'index.tsx', 'index.ts'], } = options;
|
|
19
|
+
// Create regex patterns for matching entry files
|
|
20
|
+
const entryRegexes = entryPatterns.map((pattern) => new RegExp(`[/\\\\]client[/\\\\]src[/\\\\]${pattern.replace('.', '\\.')}$`));
|
|
21
|
+
return {
|
|
22
|
+
name: 'fullstack-runtime-injection',
|
|
23
|
+
// Use enforce: 'pre' to run before other transforms
|
|
24
|
+
enforce: 'pre',
|
|
25
|
+
transform(code, id) {
|
|
26
|
+
// Only process TypeScript/JavaScript files
|
|
27
|
+
if (!id.endsWith('.ts') && !id.endsWith('.tsx')) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Check if this is an entry file
|
|
31
|
+
const isEntryFile = entryRegexes.some((regex) => regex.test(id));
|
|
32
|
+
if (!isEntryFile) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
// Check if runtime is already imported
|
|
36
|
+
if (code.includes(RUNTIME_MODULE)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Inject runtime import at the beginning of the file
|
|
40
|
+
const injectedCode = RUNTIME_IMPORT + code;
|
|
41
|
+
console.log(`[runtime-injection] Injected runtime into: ${id}`);
|
|
42
|
+
return {
|
|
43
|
+
code: injectedCode,
|
|
44
|
+
map: null, // Let Vite handle source maps
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
exports.default = runtimeInjectionPlugin;
|
|
50
|
+
//# sourceMappingURL=runtime-injection-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-injection-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/runtime-injection-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAkBH,wDA8CC;AA5DD,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAC5D,MAAM,cAAc,GAAG,WAAW,cAAc,MAAM,CAAC;AAUvD;;GAEG;AACH,SAAgB,sBAAsB,CACpC,UAAyC,EAAE;IAE3C,MAAM,EACJ,aAAa,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,GACjE,GAAG,OAAO,CAAC;IAEZ,iDAAiD;IACjD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CACpC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,iCAAiC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CACzF,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,6BAA6B;QAEnC,oDAAoD;QACpD,OAAO,EAAE,KAAK;QAEd,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,2CAA2C;YAC3C,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iCAAiC;YACjC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,uCAAuC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,qDAAqD;YACrD,MAAM,YAAY,GAAG,cAAc,GAAG,IAAI,CAAC;YAE3C,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,EAAE,CAAC,CAAC;YAEhE,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,IAAI,EAAE,8BAA8B;aAC1C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
interface SlardarPluginOptions {
|
|
3
|
+
/** Business ID for Slardar */
|
|
4
|
+
bid?: string;
|
|
5
|
+
/** Global variable name for Slardar */
|
|
6
|
+
globalName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function slardarPlugin(options?: SlardarPluginOptions): Plugin;
|
|
9
|
+
export default slardarPlugin;
|
|
10
|
+
//# sourceMappingURL=slardar-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slardar-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAEtD,UAAU,oBAAoB;IAC5B,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6DD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAsCxE;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.slardarPlugin = slardarPlugin;
|
|
4
|
+
function getSlardarScript(bid, globalName) {
|
|
5
|
+
return `
|
|
6
|
+
const slardarScript = document.createElement('script');
|
|
7
|
+
slardarScript.src = 'https://lf3-short.ibytedapm.com/slardar/fe/sdk-web/browser.cn.js?bid=${bid}&globalName=${globalName}';
|
|
8
|
+
slardarScript.crossOrigin = 'anonymous';
|
|
9
|
+
|
|
10
|
+
// Add onload event handler
|
|
11
|
+
slardarScript.onload = function() {
|
|
12
|
+
// Initialize after script loads
|
|
13
|
+
if (window.${globalName}) {
|
|
14
|
+
window.${globalName}('init', {
|
|
15
|
+
bid: '${bid}',
|
|
16
|
+
// Four types: dev/boe/pre/online
|
|
17
|
+
env: 'online',
|
|
18
|
+
});
|
|
19
|
+
window.${globalName}('start');
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Add error handler
|
|
24
|
+
slardarScript.onerror = function() {
|
|
25
|
+
console.warn('Failed to load Slardar script');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Add script to page
|
|
29
|
+
document.head.appendChild(slardarScript);
|
|
30
|
+
`;
|
|
31
|
+
}
|
|
32
|
+
function getTeaScript() {
|
|
33
|
+
return `
|
|
34
|
+
(function (win, export_obj) {
|
|
35
|
+
win['LogAnalyticsObject'] = export_obj;
|
|
36
|
+
if (!win[export_obj]) {
|
|
37
|
+
function _collect() {
|
|
38
|
+
_collect.q.push(arguments);
|
|
39
|
+
}
|
|
40
|
+
_collect.q = _collect.q || [];
|
|
41
|
+
win[export_obj] = _collect;
|
|
42
|
+
}
|
|
43
|
+
win[export_obj].l = +new Date();
|
|
44
|
+
})(window, 'collectEvent');
|
|
45
|
+
|
|
46
|
+
// Create tea sdk script element
|
|
47
|
+
const teaScript = document.createElement('script');
|
|
48
|
+
teaScript.src = 'https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.1/collect.js';
|
|
49
|
+
teaScript.crossOrigin = 'anonymous';
|
|
50
|
+
teaScript.async = true;
|
|
51
|
+
|
|
52
|
+
// Add error handler
|
|
53
|
+
teaScript.onerror = function() {
|
|
54
|
+
console.warn('Failed to load Tea script');
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Add script to page
|
|
58
|
+
document.head.appendChild(teaScript);
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
function slardarPlugin(options = {}) {
|
|
62
|
+
const { bid = 'apaas_miaoda', globalName = 'KSlardarWeb' } = options;
|
|
63
|
+
return {
|
|
64
|
+
name: 'fullstack-slardar',
|
|
65
|
+
transformIndexHtml(html) {
|
|
66
|
+
const tags = [
|
|
67
|
+
// Slardar SDK loader script
|
|
68
|
+
{
|
|
69
|
+
tag: 'script',
|
|
70
|
+
children: getSlardarScript(bid, globalName),
|
|
71
|
+
injectTo: 'head',
|
|
72
|
+
},
|
|
73
|
+
// Performance SDK
|
|
74
|
+
{
|
|
75
|
+
tag: 'script',
|
|
76
|
+
attrs: {
|
|
77
|
+
src: 'https://sf3-scmcdn-cn.feishucdn.com/obj/unpkg/byted/performance/0.1.2/dist/performance.iife.js',
|
|
78
|
+
crossorigin: 'anonymous',
|
|
79
|
+
defer: true,
|
|
80
|
+
},
|
|
81
|
+
injectTo: 'head',
|
|
82
|
+
},
|
|
83
|
+
// Tea SDK loader script
|
|
84
|
+
{
|
|
85
|
+
tag: 'script',
|
|
86
|
+
children: getTeaScript(),
|
|
87
|
+
injectTo: 'head',
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
return {
|
|
91
|
+
html,
|
|
92
|
+
tags,
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
exports.default = slardarPlugin;
|
|
98
|
+
//# sourceMappingURL=slardar-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slardar-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":";;AAoEA,sCAsCC;AAjGD,SAAS,gBAAgB,CAAC,GAAW,EAAE,UAAkB;IACvD,OAAO;;gGAEuF,GAAG,eAAe,UAAU;;;;;;mBAMzG,UAAU;iBACZ,UAAU;kBACT,GAAG;;;;iBAIJ,UAAU;;;;;;;;;;;GAWxB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BN,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,UAAgC,EAAE;IAC9D,MAAM,EAAE,GAAG,GAAG,cAAc,EAAE,UAAU,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAErE,OAAO;QACL,IAAI,EAAE,mBAAmB;QAEzB,kBAAkB,CAAC,IAAI;YACrB,MAAM,IAAI,GAAwB;gBAChC,4BAA4B;gBAC5B;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC;oBAC3C,QAAQ,EAAE,MAAM;iBACjB;gBACD,kBAAkB;gBAClB;oBACE,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE;wBACL,GAAG,EAAE,gGAAgG;wBACrG,WAAW,EAAE,WAAW;wBACxB,KAAK,EAAE,IAAI;qBACZ;oBACD,QAAQ,EAAE,MAAM;iBACjB;gBACD,wBAAwB;gBACxB;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,YAAY,EAAE;oBACxB,QAAQ,EAAE,MAAM;iBACjB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-context-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAoBtD,wBAAgB,iBAAiB,IAAI,MAAM,CAmB1C;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.viewContextPlugin = viewContextPlugin;
|
|
4
|
+
function getViewContextScript() {
|
|
5
|
+
return `
|
|
6
|
+
window.csrfToken = "{{csrfToken}}";
|
|
7
|
+
window.userId = "{{userId}}";
|
|
8
|
+
window.tenantId = "{{tenantId}}";
|
|
9
|
+
window.appId = "{{appId}}";
|
|
10
|
+
window.ENVIRONMENT = "{{environment}}";
|
|
11
|
+
const appInfo = {
|
|
12
|
+
name: "{{appName}}",
|
|
13
|
+
avatar: "{{{appAvatar}}}",
|
|
14
|
+
description: "{{appDescription}}",
|
|
15
|
+
};
|
|
16
|
+
if (appInfo.name) {
|
|
17
|
+
window._appInfo = appInfo;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
}
|
|
21
|
+
function viewContextPlugin() {
|
|
22
|
+
return {
|
|
23
|
+
name: 'fullstack-view-context',
|
|
24
|
+
transformIndexHtml(html) {
|
|
25
|
+
const tags = [
|
|
26
|
+
{
|
|
27
|
+
tag: 'script',
|
|
28
|
+
children: getViewContextScript(),
|
|
29
|
+
injectTo: 'head',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
return {
|
|
33
|
+
html,
|
|
34
|
+
tags,
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
exports.default = viewContextPlugin;
|
|
40
|
+
//# sourceMappingURL=view-context-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-context-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/view-context-plugin.ts"],"names":[],"mappings":";;AAoBA,8CAmBC;AArCD,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;;;;;KAcJ,CAAC;AACN,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,wBAAwB;QAE9B,kBAAkB,CAAC,IAAI;YACrB,MAAM,IAAI,GAAwB;gBAChC;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,oBAAoB,EAAE;oBAChC,QAAQ,EAAE,MAAM;iBACjB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lark-apaas/fullstack-vite-preset",
|
|
3
|
+
"version": "1.0.1-alpha.0",
|
|
4
|
+
"files": [
|
|
5
|
+
"lib",
|
|
6
|
+
"src/empty.css",
|
|
7
|
+
"src/inspector-stub.js",
|
|
8
|
+
"src/module-alias/clsx.mjs",
|
|
9
|
+
"src/module-alias/echarts.mjs",
|
|
10
|
+
"src/module-alias/registry_echarts_theme.mjs"
|
|
11
|
+
],
|
|
12
|
+
"main": "./lib/index.js",
|
|
13
|
+
"types": "./lib/index.d.ts",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"fullstack",
|
|
17
|
+
"vite",
|
|
18
|
+
"presets"
|
|
19
|
+
],
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"watch": "tsc --watch",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"test:watch": "vitest",
|
|
28
|
+
"prepublishOnly": "npm run build"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@babel/parser": "^7.28.0",
|
|
32
|
+
"@babel/traverse": "^7.28.0",
|
|
33
|
+
"@babel/types": "^7.28.2",
|
|
34
|
+
"@lark-apaas/devtool-kits": "^1.2.17-alpha.0",
|
|
35
|
+
"@lark-apaas/miaoda-inspector-jsx-runtime": "^1.0.1-alpha.0",
|
|
36
|
+
"@lark-apaas/vite-inspector-plugin": "^1.0.1-alpha.0",
|
|
37
|
+
"@vitejs/plugin-react": "^4.5.0",
|
|
38
|
+
"clsx": "^2.1.1",
|
|
39
|
+
"colorjs.io": "^0.5.2",
|
|
40
|
+
"dotenv": "^16.4.5",
|
|
41
|
+
"echarts": "^6.0.0",
|
|
42
|
+
"postcss-import": "^16.1.1",
|
|
43
|
+
"styled-jsx": "^5.1.6",
|
|
44
|
+
"tailwind-merge": "^2.5.5"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^22.15.30",
|
|
48
|
+
"typescript": "^5.9.2",
|
|
49
|
+
"vite": "^7.0.0",
|
|
50
|
+
"vitest": "^2.1.8"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"react": ">=16.14.0",
|
|
54
|
+
"react-dom": ">=16.14.0",
|
|
55
|
+
"vite": "^6.0.0 || ^7.0.0"
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/empty.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Empty CSS stub for production builds - inspector styles are dev-only */
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export { default as echarts } from 'echarts';
|
|
2
|
+
export * from 'echarts';
|
|
3
|
+
|
|
4
|
+
import { registerTheme } from 'echarts';
|
|
5
|
+
import { getShadcnEChartsTheme } from './registry_echarts_theme.mjs';
|
|
6
|
+
|
|
7
|
+
let isRegistered = false;
|
|
8
|
+
|
|
9
|
+
export function resgisterEchartsTheme() {
|
|
10
|
+
// Register ud theme, only register once globally
|
|
11
|
+
if (isRegistered) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
isRegistered = true;
|
|
15
|
+
// After bundling main.js defer execution, css will be loaded
|
|
16
|
+
registerTheme('ud', getShadcnEChartsTheme());
|
|
17
|
+
|
|
18
|
+
if (process.env.NODE_ENV === 'development') {
|
|
19
|
+
// Listen for HMR update completion to re-register theme
|
|
20
|
+
if (import.meta.hot) {
|
|
21
|
+
import.meta.hot.on('vite:afterUpdate', () => {
|
|
22
|
+
registerTheme('ud', getShadcnEChartsTheme());
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
resgisterEchartsTheme();
|