@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.
Files changed (71) hide show
  1. package/README.md +121 -0
  2. package/lib/index.d.ts +39 -0
  3. package/lib/index.d.ts.map +1 -0
  4. package/lib/index.js +75 -0
  5. package/lib/index.js.map +1 -0
  6. package/lib/module-alias/clsx.d.ts +4 -0
  7. package/lib/module-alias/clsx.d.ts.map +1 -0
  8. package/lib/module-alias/clsx.js +13 -0
  9. package/lib/module-alias/clsx.js.map +1 -0
  10. package/lib/module-alias/echarts.d.ts +4 -0
  11. package/lib/module-alias/echarts.d.ts.map +1 -0
  12. package/lib/module-alias/echarts.js +50 -0
  13. package/lib/module-alias/echarts.js.map +1 -0
  14. package/lib/module-alias/registry_echarts_theme.d.ts +696 -0
  15. package/lib/module-alias/registry_echarts_theme.d.ts.map +1 -0
  16. package/lib/module-alias/registry_echarts_theme.js +394 -0
  17. package/lib/module-alias/registry_echarts_theme.js.map +1 -0
  18. package/lib/preset.d.ts +14 -0
  19. package/lib/preset.d.ts.map +1 -0
  20. package/lib/preset.js +283 -0
  21. package/lib/preset.js.map +1 -0
  22. package/lib/utils/hmr-timing.d.ts +8 -0
  23. package/lib/utils/hmr-timing.d.ts.map +1 -0
  24. package/lib/utils/hmr-timing.js +132 -0
  25. package/lib/utils/hmr-timing.js.map +1 -0
  26. package/lib/utils/normalize-base-path.d.ts +7 -0
  27. package/lib/utils/normalize-base-path.d.ts.map +1 -0
  28. package/lib/utils/normalize-base-path.js +15 -0
  29. package/lib/utils/normalize-base-path.js.map +1 -0
  30. package/lib/utils/snapdom-proxy.d.ts +8 -0
  31. package/lib/utils/snapdom-proxy.d.ts.map +1 -0
  32. package/lib/utils/snapdom-proxy.js +52 -0
  33. package/lib/utils/snapdom-proxy.js.map +1 -0
  34. package/lib/vite-plugins/html-output-plugin.d.ts +14 -0
  35. package/lib/vite-plugins/html-output-plugin.d.ts.map +1 -0
  36. package/lib/vite-plugins/html-output-plugin.js +129 -0
  37. package/lib/vite-plugins/html-output-plugin.js.map +1 -0
  38. package/lib/vite-plugins/inspector-css-plugin.d.ts +19 -0
  39. package/lib/vite-plugins/inspector-css-plugin.d.ts.map +1 -0
  40. package/lib/vite-plugins/inspector-css-plugin.js +70 -0
  41. package/lib/vite-plugins/inspector-css-plugin.js.map +1 -0
  42. package/lib/vite-plugins/module-alias-plugin.d.ts +10 -0
  43. package/lib/vite-plugins/module-alias-plugin.d.ts.map +1 -0
  44. package/lib/vite-plugins/module-alias-plugin.js +36 -0
  45. package/lib/vite-plugins/module-alias-plugin.js.map +1 -0
  46. package/lib/vite-plugins/og-meta-plugin.d.ts +17 -0
  47. package/lib/vite-plugins/og-meta-plugin.d.ts.map +1 -0
  48. package/lib/vite-plugins/og-meta-plugin.js +81 -0
  49. package/lib/vite-plugins/og-meta-plugin.js.map +1 -0
  50. package/lib/vite-plugins/route-parser-plugin.d.ts +8 -0
  51. package/lib/vite-plugins/route-parser-plugin.d.ts.map +1 -0
  52. package/lib/vite-plugins/route-parser-plugin.js +280 -0
  53. package/lib/vite-plugins/route-parser-plugin.js.map +1 -0
  54. package/lib/vite-plugins/runtime-injection-plugin.d.ts +22 -0
  55. package/lib/vite-plugins/runtime-injection-plugin.d.ts.map +1 -0
  56. package/lib/vite-plugins/runtime-injection-plugin.js +50 -0
  57. package/lib/vite-plugins/runtime-injection-plugin.js.map +1 -0
  58. package/lib/vite-plugins/slardar-plugin.d.ts +10 -0
  59. package/lib/vite-plugins/slardar-plugin.d.ts.map +1 -0
  60. package/lib/vite-plugins/slardar-plugin.js +98 -0
  61. package/lib/vite-plugins/slardar-plugin.js.map +1 -0
  62. package/lib/vite-plugins/view-context-plugin.d.ts +4 -0
  63. package/lib/vite-plugins/view-context-plugin.d.ts.map +1 -0
  64. package/lib/vite-plugins/view-context-plugin.js +40 -0
  65. package/lib/vite-plugins/view-context-plugin.js.map +1 -0
  66. package/package.json +57 -0
  67. package/src/empty.css +1 -0
  68. package/src/inspector-stub.js +6 -0
  69. package/src/module-alias/clsx.mjs +8 -0
  70. package/src/module-alias/echarts.mjs +28 -0
  71. 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,4 @@
1
+ import type { Plugin } from 'vite';
2
+ export declare function viewContextPlugin(): Plugin;
3
+ export default viewContextPlugin;
4
+ //# sourceMappingURL=view-context-plugin.d.ts.map
@@ -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,6 @@
1
+ // Empty stub for @lark-apaas/miaoda-inspector in production mode
2
+ // The inspector is only used in development
3
+
4
+ export const MiaodaInspector = () => null;
5
+ export const defaultUIConfig = {};
6
+ export const isOutgoingMessage = () => false;
@@ -0,0 +1,8 @@
1
+ import cls from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ export function clsx(...args) {
5
+ return twMerge(cls(...args));
6
+ }
7
+
8
+ export default clsx;
@@ -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();