@lark-apaas/coding-preset-vite-react 0.1.1-alpha.0 → 0.1.1
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 +13 -0
- package/lib/index.d.ts +52 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +410 -0
- package/lib/index.js.map +1 -0
- package/lib/plugins/capabilities.d.ts +23 -0
- package/lib/plugins/capabilities.d.ts.map +1 -0
- package/lib/plugins/capabilities.js +151 -0
- package/lib/plugins/capabilities.js.map +1 -0
- package/lib/plugins/dev-logs.d.ts +44 -0
- package/lib/plugins/dev-logs.d.ts.map +1 -0
- package/lib/plugins/dev-logs.js +544 -0
- package/lib/plugins/dev-logs.js.map +1 -0
- package/lib/plugins/error-overlay.d.ts +19 -0
- package/lib/plugins/error-overlay.d.ts.map +1 -0
- package/lib/plugins/error-overlay.js +136 -0
- package/lib/plugins/error-overlay.js.map +1 -0
- package/lib/plugins/fonts-mirror.d.ts +14 -0
- package/lib/plugins/fonts-mirror.d.ts.map +1 -0
- package/lib/plugins/fonts-mirror.js +70 -0
- package/lib/plugins/fonts-mirror.js.map +1 -0
- package/lib/plugins/health.d.ts +19 -0
- package/lib/plugins/health.d.ts.map +1 -0
- package/lib/plugins/health.js +36 -0
- package/lib/plugins/health.js.map +1 -0
- package/lib/plugins/hmr-timing.d.ts +13 -0
- package/lib/plugins/hmr-timing.d.ts.map +1 -0
- package/lib/plugins/hmr-timing.js +93 -0
- package/lib/plugins/hmr-timing.js.map +1 -0
- package/lib/plugins/html-minify.d.ts +18 -0
- package/lib/plugins/html-minify.d.ts.map +1 -0
- package/lib/plugins/html-minify.js +100 -0
- package/lib/plugins/html-minify.js.map +1 -0
- package/lib/plugins/module-alias.d.ts +12 -0
- package/lib/plugins/module-alias.d.ts.map +1 -0
- package/lib/plugins/module-alias.js +78 -0
- package/lib/plugins/module-alias.js.map +1 -0
- package/lib/plugins/og-meta.d.ts +21 -0
- package/lib/plugins/og-meta.d.ts.map +1 -0
- package/lib/plugins/og-meta.js +60 -0
- package/lib/plugins/og-meta.js.map +1 -0
- package/lib/plugins/polyfill.d.ts +11 -0
- package/lib/plugins/polyfill.d.ts.map +1 -0
- package/lib/plugins/polyfill.js +140 -0
- package/lib/plugins/polyfill.js.map +1 -0
- package/lib/plugins/routes.d.ts +26 -0
- package/lib/plugins/routes.d.ts.map +1 -0
- package/lib/plugins/routes.js +265 -0
- package/lib/plugins/routes.js.map +1 -0
- package/lib/plugins/slardar.d.ts +24 -0
- package/lib/plugins/slardar.d.ts.map +1 -0
- package/lib/plugins/slardar.js +74 -0
- package/lib/plugins/slardar.js.map +1 -0
- package/lib/plugins/static-assets.d.ts +10 -0
- package/lib/plugins/static-assets.d.ts.map +1 -0
- package/lib/plugins/static-assets.js +307 -0
- package/lib/plugins/static-assets.js.map +1 -0
- package/lib/plugins/view-context.d.ts +22 -0
- package/lib/plugins/view-context.d.ts.map +1 -0
- package/lib/plugins/view-context.js +165 -0
- package/lib/plugins/view-context.js.map +1 -0
- package/lib/plugins/vite-client-patch.d.ts +4 -0
- package/lib/plugins/vite-client-patch.d.ts.map +1 -0
- package/lib/plugins/vite-client-patch.js +37 -0
- package/lib/plugins/vite-client-patch.js.map +1 -0
- package/lib/plugins/ws-watchdog.d.ts +22 -0
- package/lib/plugins/ws-watchdog.d.ts.map +1 -0
- package/lib/plugins/ws-watchdog.js +103 -0
- package/lib/plugins/ws-watchdog.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/utils/normalize-base-path.d.ts +37 -0
- package/lib/utils/normalize-base-path.d.ts.map +1 -0
- package/lib/utils/normalize-base-path.js +57 -0
- package/lib/utils/normalize-base-path.js.map +1 -0
- package/lib/utils/snapdom-proxy.d.ts +12 -0
- package/lib/utils/snapdom-proxy.d.ts.map +1 -0
- package/lib/utils/snapdom-proxy.js +75 -0
- package/lib/utils/snapdom-proxy.js.map +1 -0
- package/package.json +9 -15
- package/dist/index.d.ts +0 -320
- package/dist/index.js +0 -1941
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.viteClientPatchPlugin = viteClientPatchPlugin;
|
|
4
|
+
/**
|
|
5
|
+
* 抑制 `@vite/client` 在 HMR WS 重连成功后的 `location.reload()`。
|
|
6
|
+
*
|
|
7
|
+
* 背景(沙箱反向代理场景):电脑休眠唤醒后 WS 断连重连。Vite 客户端走
|
|
8
|
+
* `waitForSuccessfulPing()` 用新 TCP 连接握手成功,立刻发 `location.reload()`;
|
|
9
|
+
* 但 reload 用的是浏览器 HTTP/2 连接池里复用的休眠前死连接,
|
|
10
|
+
* 导致 ~18s `ERR_CONNECTION_TIMED_OUT` 白屏。
|
|
11
|
+
*
|
|
12
|
+
* 解:transform 拦截 `vite/dist/client/client.mjs`,直接删掉 reload 那一行。
|
|
13
|
+
* 用户需要新代码时手动刷新。
|
|
14
|
+
*
|
|
15
|
+
* 仅 dev(`apply: 'serve'`)。
|
|
16
|
+
*/
|
|
17
|
+
const RECONNECT_RELOAD_PATTERN = /(await waitForSuccessfulPing\(url\.href\);)\r?\n(\s*)location\.reload\(\);/;
|
|
18
|
+
function viteClientPatchPlugin() {
|
|
19
|
+
return {
|
|
20
|
+
name: 'miaoda-vite-client-patch',
|
|
21
|
+
enforce: 'post',
|
|
22
|
+
apply: 'serve',
|
|
23
|
+
transform(code, id) {
|
|
24
|
+
if (!id.includes('vite/dist/client/client.mjs'))
|
|
25
|
+
return;
|
|
26
|
+
if (!RECONNECT_RELOAD_PATTERN.test(code)) {
|
|
27
|
+
console.warn('[miaoda-vite-client-patch] reconnect-reload pattern not found in @vite/client. ' +
|
|
28
|
+
'patch NOT applied — Vite client.mjs may have changed.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const patched = code.replace(RECONNECT_RELOAD_PATTERN, (_, pingLine) => pingLine);
|
|
32
|
+
return { code: patched };
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
exports.default = viteClientPatchPlugin;
|
|
37
|
+
//# sourceMappingURL=vite-client-patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-client-patch.js","sourceRoot":"","sources":["../../src/plugins/vite-client-patch.ts"],"names":[],"mappings":";;AAkBA,sDAqBC;AArCD;;;;;;;;;;;;GAYG;AACH,MAAM,wBAAwB,GAC5B,4EAA4E,CAAC;AAE/E,SAAgB,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,OAAO;QAEd,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;gBAAE,OAAO;YAExD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CACV,iFAAiF;oBAC/E,uDAAuD,CAC1D,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;YAClF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* 检测沙箱代理链路下的 WebSocket 僵尸连接。
|
|
4
|
+
*
|
|
5
|
+
* 客户端 5s ping 一次(通过 vite hot.send),连续 2 次拿不到 pong 判死,
|
|
6
|
+
* 向 parent window 发 `postMessage({ type: 'disconnected' })` 通知沙箱外壳。
|
|
7
|
+
*
|
|
8
|
+
* 仅 dev 期生效(`apply: 'serve'`);本地裸 dev 也开,不会有副作用——
|
|
9
|
+
* parent 不是沙箱时 postMessage 无消费者,自然丢弃。
|
|
10
|
+
*/
|
|
11
|
+
export interface WsWatchdogPluginOptions {
|
|
12
|
+
pingEvent?: string;
|
|
13
|
+
pongEvent?: string;
|
|
14
|
+
/**
|
|
15
|
+
* 客户端 base path(如 `/app/app_xxx`)。沙箱网关把完整路径透传给 Vite,
|
|
16
|
+
* middleware 匹配和注入的 `<script src>` 都必须带 base;空串退化到裸路径。
|
|
17
|
+
*/
|
|
18
|
+
clientBasePath?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function wsWatchdogPlugin(options?: WsWatchdogPluginOptions): Plugin;
|
|
21
|
+
export default wsWatchdogPlugin;
|
|
22
|
+
//# sourceMappingURL=ws-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-watchdog.d.ts","sourceRoot":"","sources":["../../src/plugins/ws-watchdog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAItD;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAUD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,MAAM,CA6D9E;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
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.wsWatchdogPlugin = wsWatchdogPlugin;
|
|
37
|
+
const fs = __importStar(require("node:fs"));
|
|
38
|
+
const path = __importStar(require("node:path"));
|
|
39
|
+
const CLIENT_RUNTIME_PATH = '/@ws-watchdog.js';
|
|
40
|
+
function resolveClientRuntimePath() {
|
|
41
|
+
const candidates = [
|
|
42
|
+
path.resolve(__dirname, '../../src/runtime/ws-watchdog-client.mjs'), // lib/plugins → src/runtime
|
|
43
|
+
path.resolve(__dirname, '../runtime/ws-watchdog-client.mjs'), // src/plugins → src/runtime
|
|
44
|
+
];
|
|
45
|
+
return candidates.find((p) => fs.existsSync(p)) ?? null;
|
|
46
|
+
}
|
|
47
|
+
function wsWatchdogPlugin(options = {}) {
|
|
48
|
+
const { pingEvent = 'ws-watchdog:ping', pongEvent = 'ws-watchdog:pong', clientBasePath = '', } = options;
|
|
49
|
+
const watchdogPath = clientBasePath + CLIENT_RUNTIME_PATH;
|
|
50
|
+
return {
|
|
51
|
+
name: 'miaoda-ws-watchdog',
|
|
52
|
+
apply: 'serve',
|
|
53
|
+
configureServer(server) {
|
|
54
|
+
server.ws.on(pingEvent, (data, client) => {
|
|
55
|
+
if (typeof data?.t !== 'number')
|
|
56
|
+
return;
|
|
57
|
+
client.send(pongEvent, { echo: data.t });
|
|
58
|
+
});
|
|
59
|
+
// 直出 plain .mjs,跳过 server.transformRequest;no-cache 让升降级即时生效
|
|
60
|
+
server.middlewares.use((req, res, next) => {
|
|
61
|
+
if (req.url !== watchdogPath)
|
|
62
|
+
return next();
|
|
63
|
+
const clientPath = resolveClientRuntimePath();
|
|
64
|
+
if (!clientPath) {
|
|
65
|
+
res.statusCode = 500;
|
|
66
|
+
res.end('// ws-watchdog client not found');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
let code = fs.readFileSync(clientPath, 'utf-8');
|
|
71
|
+
const env = {
|
|
72
|
+
'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN ?? ''),
|
|
73
|
+
'process.env.CLIENT_BASE_PATH': JSON.stringify(clientBasePath),
|
|
74
|
+
};
|
|
75
|
+
for (const [k, v] of Object.entries(env)) {
|
|
76
|
+
code = code.replace(new RegExp(k.replace(/\./g, '\\.'), 'g'), v);
|
|
77
|
+
}
|
|
78
|
+
res.setHeader('Content-Type', 'application/javascript');
|
|
79
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
80
|
+
res.end(code);
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
console.error('[miaoda-ws-watchdog] serve failed:', e);
|
|
84
|
+
res.statusCode = 500;
|
|
85
|
+
res.end(`// error: ${e instanceof Error ? e.message : String(e)}`);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
transformIndexHtml() {
|
|
90
|
+
const tags = [
|
|
91
|
+
{
|
|
92
|
+
tag: 'script',
|
|
93
|
+
attrs: { type: 'module', src: watchdogPath },
|
|
94
|
+
// head-prepend:尽早注入,避免业务代码先和外壳完成握手才出 watchdog
|
|
95
|
+
injectTo: 'head-prepend',
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
return tags;
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
exports.default = wsWatchdogPlugin;
|
|
103
|
+
//# sourceMappingURL=ws-watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-watchdog.js","sourceRoot":"","sources":["../../src/plugins/ws-watchdog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iOS 兼容性 Polyfills
|
|
3
|
+
*
|
|
4
|
+
* 使用 core-js 提供 iOS 15.4 以下版本需要的 polyfill
|
|
5
|
+
* 此文件会被单独打包成 polyfills.js,按需加载
|
|
6
|
+
*/
|
|
7
|
+
import 'core-js/actual/array/at';
|
|
8
|
+
import 'core-js/actual/string/at';
|
|
9
|
+
import 'core-js/actual/array/find-last';
|
|
10
|
+
import 'core-js/actual/array/find-last-index';
|
|
11
|
+
import 'core-js/actual/object/has-own';
|
|
12
|
+
import 'core-js/actual/promise/any';
|
|
13
|
+
import 'core-js/actual/aggregate-error';
|
|
14
|
+
import 'core-js/actual/structured-clone';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/polyfills/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* iOS 兼容性 Polyfills
|
|
4
|
+
*
|
|
5
|
+
* 使用 core-js 提供 iOS 15.4 以下版本需要的 polyfill
|
|
6
|
+
* 此文件会被单独打包成 polyfills.js,按需加载
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
// ECMAScript polyfills (core-js)
|
|
10
|
+
require("core-js/actual/array/at");
|
|
11
|
+
require("core-js/actual/string/at");
|
|
12
|
+
require("core-js/actual/array/find-last");
|
|
13
|
+
require("core-js/actual/array/find-last-index");
|
|
14
|
+
require("core-js/actual/object/has-own");
|
|
15
|
+
require("core-js/actual/promise/any");
|
|
16
|
+
require("core-js/actual/aggregate-error");
|
|
17
|
+
require("core-js/actual/structured-clone");
|
|
18
|
+
// Web Crypto API polyfill (不在 core-js 范围内)
|
|
19
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID !== 'function') {
|
|
20
|
+
Object.defineProperty(crypto, 'randomUUID', {
|
|
21
|
+
value: function randomUUID() {
|
|
22
|
+
const bytes = new Uint8Array(16);
|
|
23
|
+
crypto.getRandomValues(bytes);
|
|
24
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
25
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
26
|
+
let hex = '';
|
|
27
|
+
for (let i = 0; i < 16; i++) {
|
|
28
|
+
hex += (bytes[i] < 16 ? '0' : '') + bytes[i].toString(16);
|
|
29
|
+
}
|
|
30
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
31
|
+
},
|
|
32
|
+
writable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/polyfills/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,iCAAiC;AACjC,mCAAiC;AACjC,oCAAkC;AAClC,0CAAwC;AACxC,gDAA8C;AAC9C,yCAAuC;AACvC,sCAAoC;AACpC,0CAAwC;AACxC,2CAAyC;AAEzC,2CAA2C;AAC3C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;IAC7E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;QAC1C,KAAK,EAAE,SAAS,UAAU;YACxB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACpC,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7G,CAAC;QACD,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 标准化 base path(**路径语义**,强制 `/` 前缀):
|
|
3
|
+
* - 空 / undefined → 空字符串
|
|
4
|
+
* - 前面强制加 `/`
|
|
5
|
+
* - 去掉尾部 `/`
|
|
6
|
+
*
|
|
7
|
+
* 适用:`CLIENT_BASE_PATH` 这种部署路径(一定以 `/` 开头)。
|
|
8
|
+
* **不要**用在 `ASSETS_CDN_PATH` 上 —— CDN 是完整 URL,强加 `/` 会变成
|
|
9
|
+
* `/https://cdn.foo.com/...` 直接破掉。URL 场景用 `normalizeBasePathWithoutTrailingSlash`。
|
|
10
|
+
*
|
|
11
|
+
* 例:
|
|
12
|
+
* normalizeBasePath('') === ''
|
|
13
|
+
* normalizeBasePath('/') === ''
|
|
14
|
+
* normalizeBasePath('foo') === '/foo'
|
|
15
|
+
* normalizeBasePath('/foo/') === '/foo'
|
|
16
|
+
* normalizeBasePath('/app/x/') === '/app/x'
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizeBasePath(input: string | undefined): string;
|
|
19
|
+
/**
|
|
20
|
+
* 标准化 base path(**URL-safe**,只去尾斜杠不加首斜杠):
|
|
21
|
+
* - 空 / undefined / 单独 `/` → 空字符串
|
|
22
|
+
* - 去掉尾部 `/`
|
|
23
|
+
* - 完整 URL(含 scheme)原样保留
|
|
24
|
+
* - 相对路径不强加 `/` 前缀
|
|
25
|
+
*
|
|
26
|
+
* 适用:`ASSETS_CDN_PATH` 这种可能是完整 URL(`https://cdn.foo.com/x`)
|
|
27
|
+
* 也可能是路径(`/app/x`)的字段。
|
|
28
|
+
*
|
|
29
|
+
* 例:
|
|
30
|
+
* normalizeBasePathWithoutTrailingSlash('') === ''
|
|
31
|
+
* normalizeBasePathWithoutTrailingSlash('/') === ''
|
|
32
|
+
* normalizeBasePathWithoutTrailingSlash('/app/x/') === '/app/x'
|
|
33
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x/') === 'https://cdn.foo.com/x'
|
|
34
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x') === 'https://cdn.foo.com/x'
|
|
35
|
+
*/
|
|
36
|
+
export declare function normalizeBasePathWithoutTrailingSlash(input: string | undefined): string;
|
|
37
|
+
//# 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;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKvF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeBasePath = normalizeBasePath;
|
|
4
|
+
exports.normalizeBasePathWithoutTrailingSlash = normalizeBasePathWithoutTrailingSlash;
|
|
5
|
+
/**
|
|
6
|
+
* 标准化 base path(**路径语义**,强制 `/` 前缀):
|
|
7
|
+
* - 空 / undefined → 空字符串
|
|
8
|
+
* - 前面强制加 `/`
|
|
9
|
+
* - 去掉尾部 `/`
|
|
10
|
+
*
|
|
11
|
+
* 适用:`CLIENT_BASE_PATH` 这种部署路径(一定以 `/` 开头)。
|
|
12
|
+
* **不要**用在 `ASSETS_CDN_PATH` 上 —— CDN 是完整 URL,强加 `/` 会变成
|
|
13
|
+
* `/https://cdn.foo.com/...` 直接破掉。URL 场景用 `normalizeBasePathWithoutTrailingSlash`。
|
|
14
|
+
*
|
|
15
|
+
* 例:
|
|
16
|
+
* normalizeBasePath('') === ''
|
|
17
|
+
* normalizeBasePath('/') === ''
|
|
18
|
+
* normalizeBasePath('foo') === '/foo'
|
|
19
|
+
* normalizeBasePath('/foo/') === '/foo'
|
|
20
|
+
* normalizeBasePath('/app/x/') === '/app/x'
|
|
21
|
+
*/
|
|
22
|
+
function normalizeBasePath(input) {
|
|
23
|
+
if (!input)
|
|
24
|
+
return '';
|
|
25
|
+
let p = input.trim();
|
|
26
|
+
if (!p || p === '/')
|
|
27
|
+
return '';
|
|
28
|
+
if (!p.startsWith('/'))
|
|
29
|
+
p = '/' + p;
|
|
30
|
+
return p.replace(/\/+$/, '');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 标准化 base path(**URL-safe**,只去尾斜杠不加首斜杠):
|
|
34
|
+
* - 空 / undefined / 单独 `/` → 空字符串
|
|
35
|
+
* - 去掉尾部 `/`
|
|
36
|
+
* - 完整 URL(含 scheme)原样保留
|
|
37
|
+
* - 相对路径不强加 `/` 前缀
|
|
38
|
+
*
|
|
39
|
+
* 适用:`ASSETS_CDN_PATH` 这种可能是完整 URL(`https://cdn.foo.com/x`)
|
|
40
|
+
* 也可能是路径(`/app/x`)的字段。
|
|
41
|
+
*
|
|
42
|
+
* 例:
|
|
43
|
+
* normalizeBasePathWithoutTrailingSlash('') === ''
|
|
44
|
+
* normalizeBasePathWithoutTrailingSlash('/') === ''
|
|
45
|
+
* normalizeBasePathWithoutTrailingSlash('/app/x/') === '/app/x'
|
|
46
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x/') === 'https://cdn.foo.com/x'
|
|
47
|
+
* normalizeBasePathWithoutTrailingSlash('https://cdn.foo.com/x') === 'https://cdn.foo.com/x'
|
|
48
|
+
*/
|
|
49
|
+
function normalizeBasePathWithoutTrailingSlash(input) {
|
|
50
|
+
if (!input)
|
|
51
|
+
return '';
|
|
52
|
+
const p = input.trim();
|
|
53
|
+
if (!p || p === '/')
|
|
54
|
+
return '';
|
|
55
|
+
return p.replace(/\/+$/, '');
|
|
56
|
+
}
|
|
57
|
+
//# 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":";;AAiBA,8CAMC;AAmBD,sFAKC;AA/CD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,qCAAqC,CAAC,KAAyB;IAC7E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Connect } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* `/dev/snapdom-proxy?url=<encoded>` 转发到目标 URL,带上 request cookie。
|
|
4
|
+
* 给客户端截图(snapdom)库做跨域兜底用。仅 dev。
|
|
5
|
+
*/
|
|
6
|
+
export interface SnapDomMiddlewareOptions {
|
|
7
|
+
proxyUrl?: string;
|
|
8
|
+
baseUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function registerSnapDomProxyMiddleware(middlewares: Connect.Server, options?: SnapDomMiddlewareOptions): void;
|
|
11
|
+
export default registerSnapDomProxyMiddleware;
|
|
12
|
+
//# sourceMappingURL=snapdom-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapdom-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/snapdom-proxy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,OAAO,CAAC,MAAM,EAC3B,OAAO,GAAE,wBAA6B,GACrC,IAAI,CAsCN;AAED,eAAe,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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.registerSnapDomProxyMiddleware = registerSnapDomProxyMiddleware;
|
|
37
|
+
const path = __importStar(require("node:path"));
|
|
38
|
+
function registerSnapDomProxyMiddleware(middlewares, options = {}) {
|
|
39
|
+
const { proxyUrl = '/dev/snapdom-proxy', baseUrl = '/' } = options;
|
|
40
|
+
const targetUrl = path.join(baseUrl, proxyUrl);
|
|
41
|
+
middlewares.use(async (req, res, next) => {
|
|
42
|
+
if (req.method !== 'GET' || !req.url?.startsWith(targetUrl)) {
|
|
43
|
+
return next();
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
47
|
+
let targetParam = url.searchParams.get('url');
|
|
48
|
+
if (!targetParam) {
|
|
49
|
+
res.statusCode = 400;
|
|
50
|
+
res.setHeader('Content-Type', 'application/json');
|
|
51
|
+
res.end(JSON.stringify({ error: 'Missing url parameter' }));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
targetParam = decodeURIComponent(targetParam);
|
|
55
|
+
const response = await fetch(targetParam, {
|
|
56
|
+
headers: { cookie: req.headers.cookie || '' },
|
|
57
|
+
});
|
|
58
|
+
const contentType = response.headers.get('content-type');
|
|
59
|
+
if (contentType)
|
|
60
|
+
res.setHeader('Content-Type', contentType);
|
|
61
|
+
const buffer = await response.arrayBuffer();
|
|
62
|
+
res.end(Buffer.from(buffer));
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
res.statusCode = 500;
|
|
66
|
+
res.setHeader('Content-Type', 'application/json');
|
|
67
|
+
res.end(JSON.stringify({
|
|
68
|
+
error: 'Proxy request failed',
|
|
69
|
+
message: error.message,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
exports.default = registerSnapDomProxyMiddleware;
|
|
75
|
+
//# sourceMappingURL=snapdom-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapdom-proxy.js","sourceRoot":"","sources":["../../src/utils/snapdom-proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,wEAyCC;AArDD,gDAAkC;AAYlC,SAAgB,8BAA8B,CAC5C,WAA2B,EAC3B,UAAoC,EAAE;IAEtC,MAAM,EAAE,QAAQ,GAAG,oBAAoB,EAAE,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE/C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,IAAI,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBACxC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE;aAC9C,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,WAAW;gBAAE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAG,KAAe,CAAC,OAAO;aAClC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kBAAe,8BAA8B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/coding-preset-vite-react",
|
|
3
|
-
"version": "0.1.1
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Vite 8 preset for miaoda-coding vite-react (jsPage) templates — pure frontend, no fullstack baggage",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js"
|
|
12
|
-
},
|
|
13
|
-
"./package.json": "./package.json"
|
|
14
|
-
},
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"types": "./lib/index.d.ts",
|
|
15
7
|
"files": [
|
|
16
|
-
"
|
|
8
|
+
"lib",
|
|
17
9
|
"src/empty.css",
|
|
18
10
|
"src/inspector-stub.js",
|
|
19
11
|
"src/module-alias",
|
|
@@ -22,9 +14,12 @@
|
|
|
22
14
|
"src/runtime"
|
|
23
15
|
],
|
|
24
16
|
"scripts": {
|
|
25
|
-
"build": "
|
|
17
|
+
"build": "tsc || true",
|
|
18
|
+
"watch": "tsc --watch",
|
|
26
19
|
"typecheck": "tsc --noEmit",
|
|
27
|
-
"test": "vitest run"
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
28
23
|
},
|
|
29
24
|
"dependencies": {
|
|
30
25
|
"@babel/parser": "^7.28.0",
|
|
@@ -49,7 +44,6 @@
|
|
|
49
44
|
"@types/babel__traverse": "^7.20.0",
|
|
50
45
|
"@types/html-minifier-terser": "^7.0.2",
|
|
51
46
|
"@types/node": "^22.0.0",
|
|
52
|
-
"tsup": "^8.0.0",
|
|
53
47
|
"typescript": "^5.6.0",
|
|
54
48
|
"vite": "^8.0.0",
|
|
55
49
|
"vitest": "^3.0.0"
|