@lark-apaas/coding-vite-preset 0.1.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/LICENSE +7 -0
- package/README.md +68 -0
- package/lib/index.d.ts +37 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +69 -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-for-react.d.ts +14 -0
- package/lib/module-alias/echarts-for-react.d.ts.map +1 -0
- package/lib/module-alias/echarts-for-react.js +142 -0
- package/lib/module-alias/echarts-for-react.js.map +1 -0
- package/lib/module-alias/echarts.d.ts +9 -0
- package/lib/module-alias/echarts.d.ts.map +1 -0
- package/lib/module-alias/echarts.js +84 -0
- package/lib/module-alias/echarts.js.map +1 -0
- package/lib/module-alias/registry_echarts_theme.d.ts +692 -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/polyfills/index.d.ts +15 -0
- package/lib/polyfills/index.d.ts.map +1 -0
- package/lib/polyfills/index.js +36 -0
- package/lib/polyfills/index.js.map +1 -0
- package/lib/preset.d.ts +14 -0
- package/lib/preset.d.ts.map +1 -0
- package/lib/preset.js +452 -0
- package/lib/preset.js.map +1 -0
- package/lib/utils/hmr-timing.d.ts +10 -0
- package/lib/utils/hmr-timing.d.ts.map +1 -0
- package/lib/utils/hmr-timing.js +102 -0
- package/lib/utils/hmr-timing.js.map +1 -0
- package/lib/utils/normalize-base-path.d.ts +12 -0
- package/lib/utils/normalize-base-path.d.ts.map +1 -0
- package/lib/utils/normalize-base-path.js +24 -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/banner-plugin.d.ts +3 -0
- package/lib/vite-plugins/banner-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/banner-plugin.js +26 -0
- package/lib/vite-plugins/banner-plugin.js.map +1 -0
- package/lib/vite-plugins/css-legacy-plugin.d.ts +12 -0
- package/lib/vite-plugins/css-legacy-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/css-legacy-plugin.js +205 -0
- package/lib/vite-plugins/css-legacy-plugin.js.map +1 -0
- package/lib/vite-plugins/error-overlay-plugin.d.ts +33 -0
- package/lib/vite-plugins/error-overlay-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/error-overlay-plugin.js +129 -0
- package/lib/vite-plugins/error-overlay-plugin.js.map +1 -0
- package/lib/vite-plugins/html-output-plugin.d.ts +21 -0
- package/lib/vite-plugins/html-output-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/html-output-plugin.js +171 -0
- package/lib/vite-plugins/html-output-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 +40 -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 +80 -0
- package/lib/vite-plugins/og-meta-plugin.js.map +1 -0
- package/lib/vite-plugins/polyfill-plugin.d.ts +12 -0
- package/lib/vite-plugins/polyfill-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/polyfill-plugin.js +132 -0
- package/lib/vite-plugins/polyfill-plugin.js.map +1 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts +13 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/route-parser-plugin.js +120 -0
- package/lib/vite-plugins/route-parser-plugin.js.map +1 -0
- package/lib/vite-plugins/runtime-injection-plugin.d.ts +23 -0
- package/lib/vite-plugins/runtime-injection-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/runtime-injection-plugin.js +93 -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 +102 -0
- package/lib/vite-plugins/slardar-plugin.js.map +1 -0
- package/lib/vite-plugins/source-map-upload-plugin.d.ts +7 -0
- package/lib/vite-plugins/source-map-upload-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/source-map-upload-plugin.js +85 -0
- package/lib/vite-plugins/source-map-upload-plugin.js.map +1 -0
- package/lib/vite-plugins/static-assets-plugin.d.ts +27 -0
- package/lib/vite-plugins/static-assets-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/static-assets-plugin.js +393 -0
- package/lib/vite-plugins/static-assets-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/lib/vite-plugins/vite-client-patch-plugin.d.ts +23 -0
- package/lib/vite-plugins/vite-client-patch-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/vite-client-patch-plugin.js +53 -0
- package/lib/vite-plugins/vite-client-patch-plugin.js.map +1 -0
- package/package.json +61 -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-for-react.mjs +129 -0
- package/src/module-alias/echarts.mjs +43 -0
- package/src/module-alias/registry_echarts_theme.mjs +390 -0
- package/src/overlay/components.js +94 -0
- package/src/overlay/index.js +443 -0
- package/src/overlay/vite-client.js +554 -0
package/lib/preset.js
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
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.createRecommendViteConfig = createRecommendViteConfig;
|
|
40
|
+
const fs_1 = __importDefault(require("fs"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const plugin_react_1 = __importDefault(require("@vitejs/plugin-react"));
|
|
43
|
+
const vite_1 = __importDefault(require("@tailwindcss/vite"));
|
|
44
|
+
const vite_tsconfig_paths_1 = __importDefault(require("vite-tsconfig-paths"));
|
|
45
|
+
// @lark-apaas/devtool-kits and @lark-apaas/vite-inspector-plugin are loaded dynamically
|
|
46
|
+
// to avoid requiring their transitive dependencies (e.g. express) at config load time.
|
|
47
|
+
// They are only needed in dev mode.
|
|
48
|
+
const vite_client_patch_plugin_1 = require("./vite-plugins/vite-client-patch-plugin");
|
|
49
|
+
// routeParserPlugin is loaded dynamically since it depends on @lark-apaas/devtool-kits
|
|
50
|
+
const slardar_plugin_1 = require("./vite-plugins/slardar-plugin");
|
|
51
|
+
const view_context_plugin_1 = require("./vite-plugins/view-context-plugin");
|
|
52
|
+
const og_meta_plugin_1 = require("./vite-plugins/og-meta-plugin");
|
|
53
|
+
const module_alias_plugin_1 = require("./vite-plugins/module-alias-plugin");
|
|
54
|
+
const html_output_plugin_1 = require("./vite-plugins/html-output-plugin");
|
|
55
|
+
const error_overlay_plugin_1 = require("./vite-plugins/error-overlay-plugin");
|
|
56
|
+
const static_assets_plugin_1 = require("./vite-plugins/static-assets-plugin");
|
|
57
|
+
const plugin_legacy_1 = __importDefault(require("@vitejs/plugin-legacy"));
|
|
58
|
+
const snapdom_proxy_1 = require("./utils/snapdom-proxy");
|
|
59
|
+
const hmr_timing_1 = require("./utils/hmr-timing");
|
|
60
|
+
function sendBackendUnavailable502(_err, _req, res) {
|
|
61
|
+
if (res.headersSent)
|
|
62
|
+
return;
|
|
63
|
+
res.writeHead(502, {
|
|
64
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
65
|
+
'Cache-Control': 'no-cache, no-store, must-revalidate',
|
|
66
|
+
});
|
|
67
|
+
res.end(JSON.stringify({
|
|
68
|
+
error: 'Bad Gateway',
|
|
69
|
+
message: 'Backend service is not running',
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
function readAppFlags(rootDir) {
|
|
73
|
+
try {
|
|
74
|
+
return JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(rootDir, 'package.json'), 'utf-8')).flags || {};
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function createRecommendViteConfig(options) {
|
|
81
|
+
const { isDev = true, needRoutes = true, clientBasePath = '', publicPath = '', codeSplitting = true, } = options;
|
|
82
|
+
// Inspector can be disabled via environment variable
|
|
83
|
+
const enableInspector = isDev && process.env.DISABLE_INSPECTOR !== 'true';
|
|
84
|
+
const rootDir = process.cwd();
|
|
85
|
+
const serverPort = process.env.SERVER_PORT || '3000';
|
|
86
|
+
const appFlags = readAppFlags(rootDir);
|
|
87
|
+
// 从 clientBasePath(如 /app/app123)中提取 appId,用于构造旧路径代理规则
|
|
88
|
+
// 仅在新路径格式(/app/:appId)下启用旧路径兼容
|
|
89
|
+
const isNewPathFormat = /^\/app\/[^/]/.test(clientBasePath);
|
|
90
|
+
const appId = isNewPathFormat
|
|
91
|
+
? clientBasePath.replace(/\/+$/, '').split('/').pop()
|
|
92
|
+
: '';
|
|
93
|
+
// 读取构建前生成的路由定义 JSON,供 define 注入到 bundle
|
|
94
|
+
// build.sh 在 client 构建之前已将 page-routes.json / api-routes.json 写入 dist/
|
|
95
|
+
// 独立于 needRoutes(needRoutes 仅控制 RouteParserPlugin),只要文件存在就注入
|
|
96
|
+
let pageRouteDefinitions = [];
|
|
97
|
+
let apiRouteDefinitions = [];
|
|
98
|
+
try {
|
|
99
|
+
const pageRoutesPath = path_1.default.resolve(rootDir, 'dist/page-routes.json');
|
|
100
|
+
if (fs_1.default.existsSync(pageRoutesPath)) {
|
|
101
|
+
pageRouteDefinitions = JSON.parse(fs_1.default.readFileSync(pageRoutesPath, 'utf-8'));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch { /* ignore */ }
|
|
105
|
+
try {
|
|
106
|
+
const apiRoutesPath = path_1.default.resolve(rootDir, 'dist/api-routes.json');
|
|
107
|
+
if (fs_1.default.existsSync(apiRoutesPath)) {
|
|
108
|
+
apiRouteDefinitions = JSON.parse(fs_1.default.readFileSync(apiRoutesPath, 'utf-8'));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch { /* ignore */ }
|
|
112
|
+
// Build the plugins array
|
|
113
|
+
const plugins = [
|
|
114
|
+
// Cloud env patch: suppress auto page-reload on HMR WebSocket reconnect (dev only)
|
|
115
|
+
isDev && (0, vite_client_patch_plugin_1.viteClientPatchPlugin)(),
|
|
116
|
+
// Error overlay plugin - replaces Vite's native error overlay with custom one
|
|
117
|
+
// Must be first to intercept config and disable native overlay
|
|
118
|
+
// Only enabled in development mode
|
|
119
|
+
isDev && (0, error_overlay_plugin_1.errorOverlayPlugin)({ clientBasePath }),
|
|
120
|
+
// Static assets plugin - supports @shared/static/* imports
|
|
121
|
+
// Must be before tsconfigPaths() so resolveId intercepts @shared/static/*
|
|
122
|
+
// before tsconfig resolution. This is critical for JSON files: if tsconfigPaths
|
|
123
|
+
// resolves first, the module ID ends with .json and vite:json's transform
|
|
124
|
+
// will corrupt the virtual module content.
|
|
125
|
+
(0, static_assets_plugin_1.staticAssetsPlugin)({ clientBasePath, rootDir }),
|
|
126
|
+
// TSConfig paths plugin - auto-reads path aliases from tsconfig.json
|
|
127
|
+
(0, vite_tsconfig_paths_1.default)(),
|
|
128
|
+
// Inspector plugin for dev mode (injects data attributes for debugging)
|
|
129
|
+
// Only enabled in development when DISABLE_INSPECTOR is not set
|
|
130
|
+
// Must be BEFORE react() — both use enforce:'pre' and Vite runs them in array order.
|
|
131
|
+
// If react() runs first, its JSX transform converts JSX to _jsxDEV() calls,
|
|
132
|
+
// leaving no JSX elements for the inspector to annotate.
|
|
133
|
+
// Dynamically loaded to avoid requiring its dependencies at config load time.
|
|
134
|
+
...(enableInspector ? (() => {
|
|
135
|
+
try {
|
|
136
|
+
const { inspectorPlugin } = require('@lark-apaas/vite-inspector-plugin');
|
|
137
|
+
return [inspectorPlugin()];
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
})() : []),
|
|
143
|
+
// React plugin (Vite 8 + @vitejs/plugin-react v6, Oxc-based)
|
|
144
|
+
(0, plugin_react_1.default)(),
|
|
145
|
+
// Tailwind CSS 4 via Vite plugin (faster than PostCSS integration)
|
|
146
|
+
(0, vite_1.default)(),
|
|
147
|
+
// Module alias plugin for clsx and echarts
|
|
148
|
+
(0, module_alias_plugin_1.moduleAliasPlugin)(),
|
|
149
|
+
// Route parser plugin (when needRoutes is true)
|
|
150
|
+
// Dynamically loaded since it depends on @lark-apaas/devtool-kits
|
|
151
|
+
...(needRoutes ? (() => {
|
|
152
|
+
try {
|
|
153
|
+
const { routeParserPlugin } = require('./vite-plugins/route-parser-plugin');
|
|
154
|
+
return [routeParserPlugin({
|
|
155
|
+
appPath: './client/src/app.tsx',
|
|
156
|
+
outputPath: path_1.default.resolve(rootDir, 'dist/client/routes.json'),
|
|
157
|
+
serveBasePath: clientBasePath,
|
|
158
|
+
...(isDev ? { basePath: '' } : {}),
|
|
159
|
+
})];
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
})() : []),
|
|
165
|
+
// View context injection plugin (must be before slardar so it appears first in HTML)
|
|
166
|
+
(0, view_context_plugin_1.viewContextPlugin)(),
|
|
167
|
+
// Performance monitoring plugin (Slardar + Tea)
|
|
168
|
+
(0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
|
|
169
|
+
// OG Meta tags injection plugin
|
|
170
|
+
(0, og_meta_plugin_1.ogMetaPlugin)(),
|
|
171
|
+
// 生产环境:为旧浏览器按需注入 polyfill(使用 @vitejs/plugin-legacy modernPolyfills 模式)
|
|
172
|
+
!isDev && (0, plugin_legacy_1.default)({
|
|
173
|
+
renderLegacyChunks: false,
|
|
174
|
+
modernPolyfills: true,
|
|
175
|
+
}),
|
|
176
|
+
// HTML output plugin - handles HTML path and dev mode disk write
|
|
177
|
+
(0, html_output_plugin_1.htmlOutputPlugin)({
|
|
178
|
+
isDev,
|
|
179
|
+
outDir: path_1.default.resolve(rootDir, 'dist/client'),
|
|
180
|
+
}),
|
|
181
|
+
// HMR timing plugin (dev only)
|
|
182
|
+
isDev && (0, hmr_timing_1.createHmrTimingPlugin)(),
|
|
183
|
+
];
|
|
184
|
+
const config = {
|
|
185
|
+
root: rootDir,
|
|
186
|
+
base: publicPath ? publicPath + '/' : '/',
|
|
187
|
+
plugins: plugins.filter(Boolean),
|
|
188
|
+
resolve: {
|
|
189
|
+
// Align with rspack-preset's mainFields order
|
|
190
|
+
mainFields: ['module', 'browser', 'main'],
|
|
191
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
|
|
192
|
+
alias: {
|
|
193
|
+
// 确保所有 echarts 子路径导入(如 echarts/core, echarts/lib/...)
|
|
194
|
+
// 都解析到 preset 自带的 echarts,避免第三方扩展(如 echarts-wordcloud)
|
|
195
|
+
// 安装了独立的 echarts 副本导致注册不到同一个实例上
|
|
196
|
+
echarts: path_1.default.dirname(require.resolve('echarts/package.json')),
|
|
197
|
+
// Intercept @/inspector.dev.css import from client-toolkit
|
|
198
|
+
// In dev mode, inspector injects styles at runtime, so we use empty CSS
|
|
199
|
+
// This avoids creating files in user's project directory
|
|
200
|
+
'@/inspector.dev.css': path_1.default.resolve(__dirname, '../src/empty.css'),
|
|
201
|
+
// In production, replace inspector package with empty stub
|
|
202
|
+
// Inspector is only needed in development mode
|
|
203
|
+
...(!isDev
|
|
204
|
+
? {
|
|
205
|
+
'@lark-apaas/miaoda-inspector': path_1.default.resolve(__dirname, '../src/inspector-stub.js'),
|
|
206
|
+
}
|
|
207
|
+
: {}),
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
define: {
|
|
211
|
+
// Polyfill for Node.js global object (used by sockjs-client, etc.)
|
|
212
|
+
global: 'globalThis',
|
|
213
|
+
// Note: Don't define 'window' or 'typeof window' - esbuild doesn't support
|
|
214
|
+
// 'typeof X' as define key, and 'window: globalThis' causes "Cannot set property window"
|
|
215
|
+
// error. In browser environment, window is already available.
|
|
216
|
+
'process.env.NODE_ENV': JSON.stringify(isDev ? 'development' : 'production'),
|
|
217
|
+
'process.env.runtimeMode': JSON.stringify('fullstack'),
|
|
218
|
+
'process.env.CLIENT_BASE_PATH': JSON.stringify(clientBasePath),
|
|
219
|
+
// 与 rspack-preset 对齐:默认空字符串,使用 || 进行 fallback
|
|
220
|
+
'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN ?? ''),
|
|
221
|
+
'process.env.CWD': JSON.stringify(''),
|
|
222
|
+
// Runtime injection flag for client-toolkit compatibility
|
|
223
|
+
'process.env.__RUNTIME_INJECTED__': JSON.stringify('true'),
|
|
224
|
+
// Build tool identifier for source map handling
|
|
225
|
+
// Vite dev mode doesn't need source map mapping - stack traces are already source paths
|
|
226
|
+
'process.env.BUILD_TOOL': JSON.stringify('vite'),
|
|
227
|
+
// 模板 flags 配置
|
|
228
|
+
'process.env.APP_FLAGS': JSON.stringify(appFlags),
|
|
229
|
+
// 路由定义,供客户端匹配 referer_path 和 api
|
|
230
|
+
'process.env.__PAGE_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(pageRouteDefinitions)),
|
|
231
|
+
'process.env.__API_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(apiRouteDefinitions)),
|
|
232
|
+
},
|
|
233
|
+
server: {
|
|
234
|
+
port: Number(process.env.CLIENT_DEV_PORT) || 8080,
|
|
235
|
+
host: process.env.CLIENT_DEV_HOST || 'localhost',
|
|
236
|
+
strictPort: true,
|
|
237
|
+
cors: true,
|
|
238
|
+
// Allow all hosts (align with rspack-preset's allowedHosts: 'all')
|
|
239
|
+
allowedHosts: true,
|
|
240
|
+
headers: {
|
|
241
|
+
...(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
|
|
242
|
+
? {
|
|
243
|
+
'Access-Control-Allow-Origin': process.env.FORCE_FRAMEWORK_DOMAIN_MAIN,
|
|
244
|
+
}
|
|
245
|
+
: {}),
|
|
246
|
+
},
|
|
247
|
+
watch: {
|
|
248
|
+
usePolling: true,
|
|
249
|
+
interval: 500,
|
|
250
|
+
// Ignore node_modules to prevent unnecessary HMR updates
|
|
251
|
+
// especially for yalc-linked packages
|
|
252
|
+
ignored: ['**/node_modules/**', '**/dist/**'],
|
|
253
|
+
},
|
|
254
|
+
// HMR WebSocket configuration
|
|
255
|
+
// Reference: https://vite.dev/config/server-options.html#server-hmr
|
|
256
|
+
// When behind a reverse proxy (FORCE_FRAMEWORK_DOMAIN_MAIN is set), use wss://
|
|
257
|
+
// For local development, use default ws://
|
|
258
|
+
hmr: process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
|
|
259
|
+
? {
|
|
260
|
+
protocol: 'wss',
|
|
261
|
+
path: `/ws`,
|
|
262
|
+
}
|
|
263
|
+
: {
|
|
264
|
+
path: `/ws`,
|
|
265
|
+
},
|
|
266
|
+
proxy: {
|
|
267
|
+
// API proxy
|
|
268
|
+
[`${clientBasePath}/api`]: {
|
|
269
|
+
target: `http://localhost:${serverPort}`,
|
|
270
|
+
changeOrigin: true,
|
|
271
|
+
configure: (proxy) => {
|
|
272
|
+
proxy.on('error', (err, req, res) => {
|
|
273
|
+
sendBackendUnavailable502(err, req, res);
|
|
274
|
+
});
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
// Inner API proxy
|
|
278
|
+
[`${clientBasePath}/__innerapi__`]: {
|
|
279
|
+
target: `http://localhost:${serverPort}`,
|
|
280
|
+
changeOrigin: true,
|
|
281
|
+
configure: (proxy) => {
|
|
282
|
+
proxy.on('error', (err, req, res) => {
|
|
283
|
+
sendBackendUnavailable502(err, req, res);
|
|
284
|
+
});
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
// 旧路径(/af/p/:appId)兼容代理,转发到 Node Server 由 legacy-path-redirect 中间件处理
|
|
288
|
+
...(appId
|
|
289
|
+
? {
|
|
290
|
+
[`/af/p/${appId}/api`]: {
|
|
291
|
+
target: `http://localhost:${serverPort}`,
|
|
292
|
+
changeOrigin: true,
|
|
293
|
+
configure: (proxy) => {
|
|
294
|
+
proxy.on('error', (err, req, res) => {
|
|
295
|
+
sendBackendUnavailable502(err, req, res);
|
|
296
|
+
});
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
[`/af/p/${appId}/__innerapi__`]: {
|
|
300
|
+
target: `http://localhost:${serverPort}`,
|
|
301
|
+
changeOrigin: true,
|
|
302
|
+
configure: (proxy) => {
|
|
303
|
+
proxy.on('error', (err, req, res) => {
|
|
304
|
+
sendBackendUnavailable502(err, req, res);
|
|
305
|
+
});
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
}
|
|
309
|
+
: {}),
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
build: {
|
|
313
|
+
outDir: path_1.default.resolve(rootDir, 'dist/client'),
|
|
314
|
+
emptyOutDir: false,
|
|
315
|
+
sourcemap: isDev ? true : 'hidden', // Align with rspack-preset's devtool config
|
|
316
|
+
minify: !isDev,
|
|
317
|
+
// CSS 降级:使用 Vite 内置的 Lightning CSS 转换现代 CSS 特性
|
|
318
|
+
cssTarget: ['ios12', 'safari12', 'chrome80'],
|
|
319
|
+
rollupOptions: {
|
|
320
|
+
input: path_1.default.resolve(rootDir, 'client/index.html'),
|
|
321
|
+
output: {
|
|
322
|
+
// Code splitting: when disabled, all dynamic imports are inlined into single bundle
|
|
323
|
+
// When enabled (default), Vite will split chunks based on dynamic imports
|
|
324
|
+
...(codeSplitting ? {} : { inlineDynamicImports: true }),
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
// Copy public directory
|
|
328
|
+
copyPublicDir: true,
|
|
329
|
+
},
|
|
330
|
+
publicDir: path_1.default.resolve(rootDir, 'client/public'),
|
|
331
|
+
// Don't specify css.postcss here - let Vite pick up the project's postcss.config.js
|
|
332
|
+
// This allows projects to configure their own PostCSS plugins (e.g., Tailwind v4)
|
|
333
|
+
// Optimize deps for faster dev startup
|
|
334
|
+
optimizeDeps: {
|
|
335
|
+
include: [
|
|
336
|
+
'react',
|
|
337
|
+
'react-dom',
|
|
338
|
+
'react/jsx-runtime',
|
|
339
|
+
'react/jsx-dev-runtime',
|
|
340
|
+
'clsx',
|
|
341
|
+
'echarts',
|
|
342
|
+
'echarts-for-react',
|
|
343
|
+
// Include inspector so Vite pre-bundles it with its dependencies
|
|
344
|
+
...(enableInspector ? ['@lark-apaas/miaoda-inspector'] : []),
|
|
345
|
+
],
|
|
346
|
+
exclude: [],
|
|
347
|
+
// Pass define replacements to Rolldown for pre-bundling (Vite 8)
|
|
348
|
+
// Without this, process.env.X in dependencies won't be replaced
|
|
349
|
+
// @ts-expect-error Vite 8 rolldownOptions — type defs may lag behind runtime support
|
|
350
|
+
rolldownOptions: {
|
|
351
|
+
define: {
|
|
352
|
+
'process.env.NODE_ENV': JSON.stringify(isDev ? 'development' : 'production'),
|
|
353
|
+
// Use actual value if set, otherwise undefined for ?? fallback
|
|
354
|
+
'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': process.env
|
|
355
|
+
.FORCE_FRAMEWORK_DOMAIN_MAIN
|
|
356
|
+
? JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN)
|
|
357
|
+
: 'undefined',
|
|
358
|
+
global: 'globalThis',
|
|
359
|
+
// Align with rspack-preset
|
|
360
|
+
'process.env.__RUNTIME_INJECTED__': JSON.stringify('true'),
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
};
|
|
365
|
+
// Add custom middleware setup for dev server
|
|
366
|
+
if (isDev) {
|
|
367
|
+
const originalConfigureServer = config.server?.configureServer;
|
|
368
|
+
config.server = {
|
|
369
|
+
...config.server,
|
|
370
|
+
};
|
|
371
|
+
// Use a plugin to configure the dev server with middlewares
|
|
372
|
+
// devtool-kits is loaded dynamically to avoid requiring express at config load time
|
|
373
|
+
config.plugins.push({
|
|
374
|
+
name: 'fullstack-dev-middlewares',
|
|
375
|
+
async configureServer(server) {
|
|
376
|
+
// Register SnapDom proxy middleware
|
|
377
|
+
(0, snapdom_proxy_1.registerSnapDomProxyMiddleware)(server.middlewares, {
|
|
378
|
+
baseUrl: clientBasePath,
|
|
379
|
+
});
|
|
380
|
+
// Dynamically load devtool-kits middlewares
|
|
381
|
+
try {
|
|
382
|
+
const { handleDevProxyError, registerMiddlewares, createDevLogsMiddleware, createOpenapiMiddleware, createCollectLogsMiddleware, } = await Promise.resolve().then(() => __importStar(require('@lark-apaas/devtool-kits')));
|
|
383
|
+
await registerMiddlewares(server.middlewares, [
|
|
384
|
+
createDevLogsMiddleware({
|
|
385
|
+
logDir: process.env.LOG_DIR || './logs',
|
|
386
|
+
}),
|
|
387
|
+
createOpenapiMiddleware({
|
|
388
|
+
openapiFilePath: path_1.default.resolve(rootDir, './client/src/api/gen/openapi.json'),
|
|
389
|
+
serverDir: path_1.default.resolve(rootDir, './server'),
|
|
390
|
+
enableEnhancement: true,
|
|
391
|
+
}),
|
|
392
|
+
createCollectLogsMiddleware({
|
|
393
|
+
logDir: process.env.LOG_DIR || './logs',
|
|
394
|
+
fileName: 'browser.log',
|
|
395
|
+
}),
|
|
396
|
+
], {
|
|
397
|
+
basePath: clientBasePath,
|
|
398
|
+
isDev,
|
|
399
|
+
});
|
|
400
|
+
// Proxy HTML requests to backend server
|
|
401
|
+
server.middlewares.use((req, res, next) => {
|
|
402
|
+
const devServerWhiteList = [
|
|
403
|
+
'/@vite',
|
|
404
|
+
'/@fs',
|
|
405
|
+
'/__vite',
|
|
406
|
+
'/@id',
|
|
407
|
+
'/node_modules',
|
|
408
|
+
'/dev/',
|
|
409
|
+
'.hot-update',
|
|
410
|
+
];
|
|
411
|
+
const isHtmlRequest = req.headers.accept?.includes('text/html');
|
|
412
|
+
const pathname = req.url?.split('?')[0] || '';
|
|
413
|
+
const isDevServerPath = devServerWhiteList.some((item) => pathname.includes(item));
|
|
414
|
+
const isStaticAsset = /\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i.test(pathname);
|
|
415
|
+
if (isHtmlRequest && !isDevServerPath && !isStaticAsset) {
|
|
416
|
+
const http = require('http');
|
|
417
|
+
const proxyReq = http.request({
|
|
418
|
+
hostname: 'localhost',
|
|
419
|
+
port: serverPort,
|
|
420
|
+
path: req.url,
|
|
421
|
+
method: req.method,
|
|
422
|
+
headers: req.headers,
|
|
423
|
+
}, (proxyRes) => {
|
|
424
|
+
res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
|
|
425
|
+
proxyRes.pipe(res);
|
|
426
|
+
});
|
|
427
|
+
proxyReq.on('error', (err) => {
|
|
428
|
+
handleDevProxyError(err, req, res, {
|
|
429
|
+
target: `http://localhost:${serverPort}`,
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
req.pipe(proxyReq);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
next();
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
// devtool-kits not available, skip dev middlewares
|
|
441
|
+
console.warn('[coding-vite-preset] @lark-apaas/devtool-kits not found, skipping dev middlewares');
|
|
442
|
+
}
|
|
443
|
+
// Call original configureServer if exists
|
|
444
|
+
if (originalConfigureServer) {
|
|
445
|
+
originalConfigureServer(server);
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
return config;
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* Create HMR timing plugin for Vite 8+
|
|
4
|
+
*
|
|
5
|
+
* Uses the `hotUpdate` hook to detect HMR updates and broadcasts timing
|
|
6
|
+
* data to connected clients via `server.hot.send()`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createHmrTimingPlugin(): Plugin;
|
|
9
|
+
export default createHmrTimingPlugin;
|
|
10
|
+
//# sourceMappingURL=hmr-timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr-timing.d.ts","sourceRoot":"","sources":["../../src/utils/hmr-timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmC,MAAM,MAAM,CAAC;AAOpE;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA6D9C;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createHmrTimingPlugin = createHmrTimingPlugin;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const VALID_EXTENSIONS = [
|
|
39
|
+
'.js', '.jsx', '.ts', '.tsx', '.svelte', '.css', '.json', '.html',
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* Create HMR timing plugin for Vite 8+
|
|
43
|
+
*
|
|
44
|
+
* Uses the `hotUpdate` hook to detect HMR updates and broadcasts timing
|
|
45
|
+
* data to connected clients via `server.hot.send()`.
|
|
46
|
+
*/
|
|
47
|
+
function createHmrTimingPlugin() {
|
|
48
|
+
let startTime = 0;
|
|
49
|
+
let changedFiles = new Set();
|
|
50
|
+
let server = null;
|
|
51
|
+
return {
|
|
52
|
+
name: 'fullstack-hmr-timing',
|
|
53
|
+
configureServer(devServer) {
|
|
54
|
+
server = devServer;
|
|
55
|
+
// Listen for file changes to track timing start
|
|
56
|
+
server.watcher.on('change', (file) => {
|
|
57
|
+
startTime = Date.now();
|
|
58
|
+
changedFiles.add(file);
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
// Vite 8: hotUpdate replaces handleHotUpdate
|
|
62
|
+
hotUpdate(_ctx) {
|
|
63
|
+
if (!server || changedFiles.size === 0)
|
|
64
|
+
return;
|
|
65
|
+
const duration = Date.now() - startTime;
|
|
66
|
+
// Filter valid files - only keep actual project files
|
|
67
|
+
const validFiles = [...changedFiles]
|
|
68
|
+
.map((f) => f.replace(process.cwd(), '').replace(/\\/g, '/'))
|
|
69
|
+
.filter((filePath) => {
|
|
70
|
+
if (!filePath || filePath.length === 0)
|
|
71
|
+
return false;
|
|
72
|
+
if (filePath.includes('/node_modules/'))
|
|
73
|
+
return false;
|
|
74
|
+
return VALID_EXTENSIONS.some((ext) => filePath.toLowerCase().endsWith(ext));
|
|
75
|
+
});
|
|
76
|
+
// Get file statistics
|
|
77
|
+
const totalSize = validFiles.reduce((sum, filePath) => {
|
|
78
|
+
try {
|
|
79
|
+
return sum + fs.statSync(process.cwd() + filePath).size;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return sum;
|
|
83
|
+
}
|
|
84
|
+
}, 0);
|
|
85
|
+
const payload = {
|
|
86
|
+
duration,
|
|
87
|
+
fileCount: validFiles.length,
|
|
88
|
+
fileTotalSize: totalSize,
|
|
89
|
+
};
|
|
90
|
+
// Broadcast to browser via Vite 8 HotChannel API
|
|
91
|
+
server.hot.send({
|
|
92
|
+
type: 'custom',
|
|
93
|
+
event: 'hmr-timing',
|
|
94
|
+
data: payload,
|
|
95
|
+
});
|
|
96
|
+
// Clear changed files after broadcasting
|
|
97
|
+
changedFiles.clear();
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
exports.default = createHmrTimingPlugin;
|
|
102
|
+
//# sourceMappingURL=hmr-timing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr-timing.js","sourceRoot":"","sources":["../../src/utils/hmr-timing.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,sDA6DC;AAzED,uCAAyB;AAEzB,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAClE,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,qBAAqB;IACnC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC,OAAO;QACL,IAAI,EAAE,sBAAsB;QAE5B,eAAe,CAAC,SAAwB;YACtC,MAAM,GAAG,SAAS,CAAC;YAEnB,gDAAgD;YAChD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,SAAS,CAAC,IAAsB;YAC9B,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO;YAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,sDAAsD;YACtD,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;iBAC5D,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACtD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CACrC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,sBAAsB;YACtB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBACpD,IAAI,CAAC;oBACH,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;gBAC1D,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,MAAM,OAAO,GAAG;gBACd,QAAQ;gBACR,SAAS,EAAE,UAAU,CAAC,MAAM;gBAC5B,aAAa,EAAE,SAAS;aACzB,CAAC;YAEF,iDAAiD;YACjD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YAEH,yCAAyC;YACzC,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize base path, ensuring it starts with '/' and does not include trailing slash
|
|
3
|
+
* @param basePath Original base path
|
|
4
|
+
* @returns Normalized base path
|
|
5
|
+
*/
|
|
6
|
+
export declare function normalizeBasePathWithoutTrailingSlash(basePath: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Normalize base path, ensuring it starts with '/' and does not include trailing slash
|
|
9
|
+
* Equivalent to `normalizeBasePath` from @lark-apaas/devtool-kits
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeBasePath(basePath: string): string;
|
|
12
|
+
//# sourceMappingURL=normalize-base-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-base-path.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeBasePathWithoutTrailingSlash = normalizeBasePathWithoutTrailingSlash;
|
|
4
|
+
exports.normalizeBasePath = normalizeBasePath;
|
|
5
|
+
/**
|
|
6
|
+
* Normalize base path, ensuring it starts with '/' and does not include trailing slash
|
|
7
|
+
* @param basePath Original base path
|
|
8
|
+
* @returns Normalized base path
|
|
9
|
+
*/
|
|
10
|
+
function normalizeBasePathWithoutTrailingSlash(basePath) {
|
|
11
|
+
const basePathWithoutTrailingSlash = basePath.endsWith('/')
|
|
12
|
+
? basePath.slice(0, -1)
|
|
13
|
+
: basePath;
|
|
14
|
+
return basePathWithoutTrailingSlash;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Normalize base path, ensuring it starts with '/' and does not include trailing slash
|
|
18
|
+
* Equivalent to `normalizeBasePath` from @lark-apaas/devtool-kits
|
|
19
|
+
*/
|
|
20
|
+
function normalizeBasePath(basePath) {
|
|
21
|
+
const normalized = basePath.startsWith('/') ? basePath : `/${basePath}`;
|
|
22
|
+
return normalized.endsWith('/') ? normalized.slice(0, -1) : normalized;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=normalize-base-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-base-path.js","sourceRoot":"","sources":["../../src/utils/normalize-base-path.ts"],"names":[],"mappings":";;AAKA,sFAKC;AAMD,8CAGC;AAnBD;;;;GAIG;AACH,SAAgB,qCAAqC,CAAC,QAAgB;IACpE,MAAM,4BAA4B,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACzD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC;IACb,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IACxE,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Connect } from 'vite';
|
|
2
|
+
interface SnapDomMiddlewareOptions {
|
|
3
|
+
proxyUrl?: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function registerSnapDomProxyMiddleware(middlewares: Connect.Server, options?: SnapDomMiddlewareOptions): void;
|
|
7
|
+
export default registerSnapDomProxyMiddleware;
|
|
8
|
+
//# sourceMappingURL=snapdom-proxy.d.ts.map
|