@amaster.ai/vite-plugins 1.1.0-beta.9 → 1.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/dist/bridge-module.global.js +14 -0
- package/dist/index.cjs +208 -399
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +68 -34
- package/dist/index.d.ts +68 -34
- package/dist/index.js +208 -399
- package/dist/index.js.map +1 -1
- package/package.json +25 -5
- package/dist/bridge.bridge.js +0 -24
package/dist/index.cjs
CHANGED
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var
|
|
2
|
-
|
|
3
|
-
const element = e.target;
|
|
4
|
-
const noJumpOut = document.body.classList.contains("forbid-jump-out")
|
|
5
|
-
if (element.hasAttribute("data-link-href") && !noJumpOut) {
|
|
6
|
-
const href = element.getAttribute("data-link-href");
|
|
7
|
-
const target = element.getAttribute("data-link-target");
|
|
8
|
-
if (href) {
|
|
9
|
-
if (target === "_blank") {
|
|
10
|
-
window.open(href, "_blank");
|
|
11
|
-
} else {
|
|
12
|
-
window.location.href = href;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
} else if(noJumpOut && element.tagName === "A") {
|
|
16
|
-
e.preventDefault();
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
</script>`;function C(){try{let r=url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),e=w.dirname(r),t=w.resolve(e,"../dist/bridge.bridge.js");return `<script>
|
|
20
|
-
${m.readFileSync(t,"utf-8")}
|
|
21
|
-
</script>`}catch(r){return console.warn("Failed to read bridge script:",r),""}}function S(){let r=false,e="";return {name:"vite-plugin-editor-bridge",configResolved(t){r=t.command==="serve",r&&(e=C());},transformIndexHtml(t){let o=`${L}${r?e:""}</body>`;return t.replace("</body>",o)}}}function b(r){let e=false,t=r?.routesFilePath||"src/routes.tsx";return {name:"vite-plugin-routes-expose",enforce:"post",configResolved(n){e=n.command==="serve";},transform(n,o){if(!e||!o.endsWith(t))return null;try{return n.includes("window.__APP_ROUTES__")?null:{code:`${n}
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var y=require('fs'),d=require('path'),url=require('url'),A=require('process'),w=require('fs/promises'),k=require('@babel/generator'),parser=require('@babel/parser'),L=require('@babel/traverse');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var y__default=/*#__PURE__*/_interopDefault(y);var d__default=/*#__PURE__*/_interopDefault(d);var A__default=/*#__PURE__*/_interopDefault(A);var w__default=/*#__PURE__*/_interopDefault(w);var k__default=/*#__PURE__*/_interopDefault(k);var L__default=/*#__PURE__*/_interopDefault(L);var F=url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),U=d.dirname(F),P="@amaster/bridge-monitor",T="\0"+P,m=null;function z(){if(m)return m;try{let e=d.resolve(U,"../dist/bridge-module.global.js");return m=y.readFileSync(e,"utf-8"),m}catch(e){return console.warn("[editor-bridge] Failed to load pre-built bridge module:",e),""}}function W(){return '<script type="module" src="/@id/@amaster/bridge-monitor"></script>'}function X(e){return z().replace(/__SESSION_KEY__/g,e)+`
|
|
2
|
+
export default {};`}function C(){let e=false;return {name:"vite-plugin-editor-bridge",configResolved(n){e=n.command==="serve";},resolveId(n){if(n===P)return T},load(n){if(n===T){let r=process.env.VITE_AMASTER_KEY||"";return X(r)}},transformIndexHtml(n){if(!e)return n;let r=W();return n.replace("</body>",`${r}</body>`)}}}function I(e){let n=false,r=e?.routesFilePath||"src/routes.tsx";return {name:"vite-plugin-routes-expose",enforce:"post",configResolved(t){n=t.command==="serve";},transform(t,o){if(!n||!o.endsWith(r))return null;try{return t.includes("window.__APP_ROUTES__")?null:{code:`${t}
|
|
22
3
|
|
|
23
4
|
// Development mode: Expose routes to window.__APP_ROUTES__
|
|
24
5
|
if (typeof window !== 'undefined') {
|
|
25
6
|
window.__APP_ROUTES__ = typeof routes !== 'undefined' && Array.isArray(routes) ? routes : [];
|
|
26
7
|
}
|
|
27
|
-
`,map:null}}catch{return null}}}}function
|
|
8
|
+
`,map:null}}catch{return null}}}}function j(){let e="",n=`
|
|
28
9
|
<script>
|
|
29
10
|
(function() {
|
|
30
11
|
'use strict';
|
|
@@ -32,6 +13,9 @@ if (typeof window !== 'undefined') {
|
|
|
32
13
|
// Log API path (provided by Vite dev server)
|
|
33
14
|
var LOG_API_PATH = '/__browser__';
|
|
34
15
|
|
|
16
|
+
// Save original fetch before any interception, used exclusively for log writing
|
|
17
|
+
var __originalFetch__ = window.fetch.bind(window);
|
|
18
|
+
|
|
35
19
|
// Write queue to ensure sequential writes
|
|
36
20
|
var writeQueue = [];
|
|
37
21
|
var isWriting = false;
|
|
@@ -44,7 +28,7 @@ if (typeof window !== 'undefined') {
|
|
|
44
28
|
var entry = writeQueue.shift();
|
|
45
29
|
var logText = JSON.stringify(entry);
|
|
46
30
|
|
|
47
|
-
|
|
31
|
+
__originalFetch__(LOG_API_PATH, {
|
|
48
32
|
method: 'POST',
|
|
49
33
|
headers: { 'Content-Type': 'application/json' },
|
|
50
34
|
body: logText
|
|
@@ -162,12 +146,19 @@ if (typeof window !== 'undefined') {
|
|
|
162
146
|
};
|
|
163
147
|
}
|
|
164
148
|
|
|
165
|
-
//
|
|
149
|
+
// Keywords to filter from console log collection
|
|
150
|
+
var FILTERED_CONSOLE_KEYWORDS = ['[vite]', '[BrowserLogs]'];
|
|
151
|
+
|
|
152
|
+
// Check if message should be filtered
|
|
166
153
|
function shouldFilterConsoleLog(args) {
|
|
167
154
|
for (var i = 0; i < args.length; i++) {
|
|
168
155
|
var arg = args[i];
|
|
169
|
-
if (typeof arg === 'string'
|
|
170
|
-
|
|
156
|
+
if (typeof arg === 'string') {
|
|
157
|
+
for (var j = 0; j < FILTERED_CONSOLE_KEYWORDS.length; j++) {
|
|
158
|
+
if (arg.indexOf(FILTERED_CONSOLE_KEYWORDS[j]) !== -1) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
171
162
|
}
|
|
172
163
|
}
|
|
173
164
|
return false;
|
|
@@ -705,416 +696,234 @@ if (typeof window !== 'undefined') {
|
|
|
705
696
|
|
|
706
697
|
originalConsole.log('[BrowserLogs] Log collection started');
|
|
707
698
|
})();
|
|
708
|
-
</script>`;return {name:"vite-plugin-browser-logs",configResolved(
|
|
709
|
-
`,"utf-8"),o.writeHead(200,{"Content-Type":"application/json","Access-Control-Allow-Origin":
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
'use strict';
|
|
713
|
-
|
|
714
|
-
var PLUGIN_TAG = '[SmartReload]';
|
|
715
|
-
// full-reload \u540E\u7B49\u5F85 WebSocket \u65AD\u5F00\u7684\u7A97\u53E3\u671F\uFF08ms\uFF09
|
|
716
|
-
var DISCONNECT_DETECT_WINDOW = 300;
|
|
717
|
-
// WebSocket \u65AD\u5F00\u540E\u7B49\u5F85\u91CD\u8FDE\u7684\u8D85\u65F6\u65F6\u95F4\uFF08ms\uFF09\uFF0C\u8D85\u65F6\u540E fallback \u5230 full-reload
|
|
718
|
-
var RECONNECT_TIMEOUT = 5000;
|
|
719
|
-
// \u91CD\u8FDE\u6210\u529F\u540E\uFF0C\u7B49\u5F85\u662F\u5426\u6709 full-reload/update \u6D88\u606F\u7684\u7A97\u53E3\u671F\uFF08ms\uFF09
|
|
720
|
-
var POST_RECONNECT_WINDOW = 2000;
|
|
721
|
-
// soft-reload \u5EF6\u8FDF\uFF08ms\uFF09
|
|
722
|
-
var SOFT_RELOAD_DELAY = 300;
|
|
723
|
-
|
|
724
|
-
// ============================================
|
|
725
|
-
// \u72B6\u6001\u7BA1\u7406
|
|
726
|
-
// ============================================
|
|
727
|
-
var state = {
|
|
728
|
-
// \u662F\u5426\u5DF2\u7ECF\u62E6\u622A\u4E86 Vite HMR WebSocket
|
|
729
|
-
wsIntercepted: false,
|
|
730
|
-
// \u662F\u5426\u6B63\u5728\u7B49\u5F85\u5224\u65AD full-reload \u7C7B\u578B\uFF08300ms \u7A97\u53E3\u671F\uFF09
|
|
731
|
-
detectingReloadType: false,
|
|
732
|
-
// \u5EF6\u8FDF\u6267\u884C full-reload \u7684\u5B9A\u65F6\u5668
|
|
733
|
-
reloadTimer: null,
|
|
734
|
-
// \u662F\u5426\u6B63\u5728\u7B49\u5F85\u670D\u52A1\u5668\u91CD\u8FDE
|
|
735
|
-
waitingForReconnect: false,
|
|
736
|
-
// \u662F\u5426\u662F\u670D\u52A1\u5668\u91CD\u542F\u573A\u666F
|
|
737
|
-
isServerRestart: false,
|
|
738
|
-
// \u91CD\u8FDE\u8D85\u65F6\u5B9A\u65F6\u5668
|
|
739
|
-
reconnectTimeoutTimer: null,
|
|
740
|
-
// \u91CD\u8FDE\u540E\u7B49\u5F85\u53D8\u66F4\u7684\u5B9A\u65F6\u5668
|
|
741
|
-
postReconnectTimer: null,
|
|
742
|
-
// \u662F\u5426\u6B63\u5728\u6291\u5236 fetch ping\uFF08\u963B\u6B62 Vite \u7684 HTTP ping \u89E6\u53D1 reload\uFF09
|
|
743
|
-
suppressingReload: false,
|
|
744
|
-
// \u5DF2\u62E6\u622A\u7684 fetch ping \u6B21\u6570\uFF08\u7528\u4E8E\u8C03\u8BD5\uFF09
|
|
745
|
-
suppressedReloadCount: 0
|
|
746
|
-
};
|
|
747
|
-
|
|
748
|
-
// ============================================
|
|
749
|
-
// \u65E5\u5FD7\u5DE5\u5177
|
|
750
|
-
// ============================================
|
|
751
|
-
function log() {
|
|
752
|
-
var args = [PLUGIN_TAG];
|
|
753
|
-
for (var i = 0; i < arguments.length; i++) {
|
|
754
|
-
args.push(arguments[i]);
|
|
755
|
-
}
|
|
756
|
-
console.log.apply(console, args);
|
|
757
|
-
}
|
|
699
|
+
</script>`;return {name:"vite-plugin-browser-logs",configResolved(r){let t=A__default.default.env.WORKSPACE_DIR;if(t)e=d__default.default.join(t,"browser.log");else {let o=r.root||A__default.default.cwd();for(;o!==d__default.default.dirname(o)&&!y__default.default.existsSync(d__default.default.join(o,"package.json"));)o=d__default.default.dirname(o);e=d__default.default.join(o,"browser.log");}},configureServer(r){r.middlewares.use((t,o,l)=>{if(t.url==="/__browser__"&&t.method==="POST"){let i=t.headers.origin||"*",c="";t.on("data",u=>{c+=u.toString();}),t.on("end",()=>{try{let u=d__default.default.dirname(e);y__default.default.existsSync(u)||y__default.default.mkdirSync(u,{recursive:!0}),y__default.default.appendFileSync(e,`${c}
|
|
700
|
+
`,"utf-8"),o.writeHead(200,{"Content-Type":"application/json","Access-Control-Allow-Origin":i,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),o.end(JSON.stringify({success:!0}));}catch(u){console.error("[BrowserLogs] Write error:",u),o.writeHead(500,{"Content-Type":"application/json","Access-Control-Allow-Origin":i,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),o.end(JSON.stringify({success:false,error:String(u)}));}});}else if(t.url==="/__browser__"&&t.method==="OPTIONS"){let i=t.headers.origin||"*";o.writeHead(204,{"Access-Control-Allow-Origin":i,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type","Access-Control-Max-Age":"86400"}),o.end();}else if(t.url==="/__browser__"){let i=t.headers.origin||"*";o.writeHead(405,{"Content-Type":"application/json","Access-Control-Allow-Origin":i}),o.end(JSON.stringify({error:"Method not allowed"}));}else l();}),console.log("[BrowserLogs] Logs will be written to:",e);},transformIndexHtml(r){return r.replace(/<head([^>]*)>/i,`<head$1>${n}`)}}}var J=`
|
|
701
|
+
import * as React from "react";
|
|
702
|
+
import * as ReactJSXDevRuntime from "react/jsx-dev-runtime";
|
|
758
703
|
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
// ============================================
|
|
762
|
-
function clearAllTimers() {
|
|
763
|
-
if (state.reloadTimer) {
|
|
764
|
-
clearTimeout(state.reloadTimer);
|
|
765
|
-
state.reloadTimer = null;
|
|
766
|
-
}
|
|
767
|
-
if (state.reconnectTimeoutTimer) {
|
|
768
|
-
clearTimeout(state.reconnectTimeoutTimer);
|
|
769
|
-
state.reconnectTimeoutTimer = null;
|
|
770
|
-
}
|
|
771
|
-
if (state.postReconnectTimer) {
|
|
772
|
-
clearTimeout(state.postReconnectTimer);
|
|
773
|
-
state.postReconnectTimer = null;
|
|
774
|
-
}
|
|
775
|
-
}
|
|
704
|
+
const _jsxDEV = ReactJSXDevRuntime.jsxDEV;
|
|
705
|
+
export const Fragment = ReactJSXDevRuntime.Fragment;
|
|
776
706
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
// ============================================
|
|
780
|
-
function resetState() {
|
|
781
|
-
state.detectingReloadType = false;
|
|
782
|
-
state.isServerRestart = false;
|
|
783
|
-
state.waitingForReconnect = false;
|
|
784
|
-
state.suppressingReload = false;
|
|
785
|
-
state.suppressedReloadCount = 0;
|
|
786
|
-
clearAllTimers();
|
|
787
|
-
}
|
|
707
|
+
const SOURCE_KEY = Symbol.for("__jsxSource__");
|
|
708
|
+
const PROJECT_ROOT = "";
|
|
788
709
|
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
//
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
originalLocationReload.call(window.location);
|
|
710
|
+
const cleanFileName = (fileName) => {
|
|
711
|
+
if (!fileName) return "";
|
|
712
|
+
// Remove project root prefix to get relative path
|
|
713
|
+
if (PROJECT_ROOT && fileName.startsWith(PROJECT_ROOT)) {
|
|
714
|
+
const relative = fileName.slice(PROJECT_ROOT.length);
|
|
715
|
+
return relative.startsWith("/") ? relative.slice(1) : relative;
|
|
796
716
|
}
|
|
717
|
+
return fileName;
|
|
718
|
+
};
|
|
797
719
|
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
// \u9700\u8981\u901A\u8FC7 reload \u6062\u590D HMR\u3002
|
|
802
|
-
// ============================================
|
|
803
|
-
function scheduleSoftReload() {
|
|
804
|
-
log('Scheduling soft-reload to restore HMR connection');
|
|
805
|
-
setTimeout(function() {
|
|
806
|
-
resetState();
|
|
807
|
-
originalLocationReload.call(window.location);
|
|
808
|
-
}, SOFT_RELOAD_DELAY);
|
|
809
|
-
}
|
|
720
|
+
// Global map to track elements by source location
|
|
721
|
+
const sourceElementMap = new Map();
|
|
722
|
+
window.sourceElementMap = sourceElementMap;
|
|
810
723
|
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
// \u6240\u4EE5\u6211\u4EEC\u901A\u8FC7\u62E6\u622A fetch \u6765\u963B\u6B62 Vite \u7684 HTTP ping \u6210\u529F\uFF0C
|
|
815
|
-
// \u4ECE\u800C\u963B\u6B62 Vite \u5BA2\u6237\u7AEF\u8C03\u7528 location.reload()\u3002
|
|
816
|
-
//
|
|
817
|
-
// Vite \u5BA2\u6237\u7AEF\u5728 WebSocket \u65AD\u5F00\u540E\u4F1A\u901A\u8FC7 fetch ping \u670D\u52A1\u5668\uFF0C
|
|
818
|
-
// ping \u6210\u529F\u540E\u8C03\u7528 location.reload()\u3002
|
|
819
|
-
// \u6211\u4EEC\u5728\u670D\u52A1\u5668\u91CD\u542F\u671F\u95F4\u8BA9 ping \u8BF7\u6C42\u8FD4\u56DE\u5931\u8D25\uFF0C
|
|
820
|
-
// \u8FD9\u6837 Vite \u5BA2\u6237\u7AEF\u4F1A\u4E00\u76F4\u8F6E\u8BE2\u800C\u4E0D\u4F1A\u89E6\u53D1 reload\u3002
|
|
821
|
-
// \u5F53\u6211\u4EEC\u7684 WebSocket \u91CD\u8FDE\u903B\u8F91\u68C0\u6D4B\u5230\u91CD\u8FDE\u6210\u529F\u540E\uFF0C
|
|
822
|
-
// \u6062\u590D fetch \u5E76\u7531\u6211\u4EEC\u81EA\u5DF1\u63A7\u5236\u662F\u5426\u9700\u8981 reload\u3002
|
|
823
|
-
// ============================================
|
|
824
|
-
var originalLocationReload = window.location.reload.bind(window.location);
|
|
825
|
-
var originalFetch = window.fetch.bind(window);
|
|
826
|
-
|
|
827
|
-
window.fetch = function smartReloadInterceptedFetch(input, init) {
|
|
828
|
-
var url = '';
|
|
829
|
-
if (typeof input === 'string') {
|
|
830
|
-
url = input;
|
|
831
|
-
} else if (input instanceof Request) {
|
|
832
|
-
url = input.url;
|
|
833
|
-
} else if (input instanceof URL) {
|
|
834
|
-
url = input.href;
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
// \u5728\u670D\u52A1\u5668\u91CD\u542F\u671F\u95F4\uFF0C\u8BB0\u5F55\u6240\u6709 fetch \u8BF7\u6C42\u5E76\u62E6\u622A Vite \u7684 ping
|
|
838
|
-
if (state.suppressingReload || state.waitingForReconnect || state.isServerRestart) {
|
|
839
|
-
log('fetch during restart:', url, 'mode:', init && init.mode);
|
|
840
|
-
|
|
841
|
-
// Vite \u7684 ping \u8BF7\u6C42\u7279\u5F81\uFF1A
|
|
842
|
-
// 1. mode: 'no-cors' \u2014 Vite 5.x \u4F7F\u7528 no-cors \u6A21\u5F0F ping
|
|
843
|
-
// 2. \u8BF7\u6C42\u5F53\u524D\u9875\u9762 URL\u3001\u6839\u8DEF\u5F84\u3001\u6216 /__vite_ping
|
|
844
|
-
var currentOrigin = window.location.origin;
|
|
845
|
-
var isVitePing = false;
|
|
846
|
-
|
|
847
|
-
// \u68C0\u67E5 mode: 'no-cors'\uFF08Vite ping \u7684\u7279\u5F81\uFF09
|
|
848
|
-
if (init && init.mode === 'no-cors') {
|
|
849
|
-
isVitePing = true;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
// \u4E5F\u68C0\u67E5 URL \u7279\u5F81
|
|
853
|
-
if (url === window.location.href ||
|
|
854
|
-
url === currentOrigin + '/' ||
|
|
855
|
-
url.indexOf('/__vite_ping') !== -1 ||
|
|
856
|
-
url.indexOf('/__vite_hmr') !== -1) {
|
|
857
|
-
isVitePing = true;
|
|
858
|
-
}
|
|
724
|
+
function getSourceKey(sourceInfo) {
|
|
725
|
+
return \`\${cleanFileName(sourceInfo.fileName)}:\${sourceInfo.lineNumber}:\${sourceInfo.columnNumber}\`;
|
|
726
|
+
}
|
|
859
727
|
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
728
|
+
function unregisterElement(node, sourceInfo) {
|
|
729
|
+
const key = getSourceKey(sourceInfo);
|
|
730
|
+
const refs = sourceElementMap.get(key);
|
|
731
|
+
if (refs) {
|
|
732
|
+
for (const ref of refs) {
|
|
733
|
+
if (ref.deref() === node) {
|
|
734
|
+
refs.delete(ref);
|
|
735
|
+
break;
|
|
865
736
|
}
|
|
866
737
|
}
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
log('fetch intercepted for Vite ping suppression');
|
|
870
|
-
|
|
871
|
-
// ============================================
|
|
872
|
-
// \u8FDB\u5165\u670D\u52A1\u5668\u91CD\u542F\u7B49\u5F85\u6A21\u5F0F
|
|
873
|
-
// ============================================
|
|
874
|
-
function enterServerRestartMode(reason) {
|
|
875
|
-
log('Entering server restart mode:', reason);
|
|
876
|
-
|
|
877
|
-
state.isServerRestart = true;
|
|
878
|
-
state.waitingForReconnect = true;
|
|
879
|
-
state.suppressingReload = true;
|
|
880
|
-
state.detectingReloadType = false;
|
|
881
|
-
|
|
882
|
-
if (state.reloadTimer) {
|
|
883
|
-
clearTimeout(state.reloadTimer);
|
|
884
|
-
state.reloadTimer = null;
|
|
738
|
+
if (refs.size === 0) {
|
|
739
|
+
sourceElementMap.delete(key);
|
|
885
740
|
}
|
|
886
|
-
|
|
887
|
-
// \u8D85\u65F6\u4FDD\u62A4\uFF1A\u5982\u679C\u6307\u5B9A\u65F6\u95F4\u5185\u65E0\u6CD5\u91CD\u8FDE\uFF0C\u6267\u884C full-reload
|
|
888
|
-
if (state.reconnectTimeoutTimer) {
|
|
889
|
-
clearTimeout(state.reconnectTimeoutTimer);
|
|
890
|
-
}
|
|
891
|
-
state.reconnectTimeoutTimer = setTimeout(function() {
|
|
892
|
-
if (state.waitingForReconnect || state.isServerRestart) {
|
|
893
|
-
log('Reconnect timeout (' + RECONNECT_TIMEOUT + 'ms), performing full-reload as fallback');
|
|
894
|
-
executeFullReload();
|
|
895
|
-
}
|
|
896
|
-
}, RECONNECT_TIMEOUT);
|
|
897
741
|
}
|
|
742
|
+
}
|
|
898
743
|
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
function isViteHmrWebSocket(url) {
|
|
905
|
-
if (typeof url !== 'string') return false;
|
|
906
|
-
// \u53EA\u5339\u914D Vite HMR \u7279\u5F81\u7684 URL
|
|
907
|
-
return url.includes('/__vite_hmr') || url.includes('?token=');
|
|
744
|
+
function registerElement(node, sourceInfo) {
|
|
745
|
+
const key = getSourceKey(sourceInfo);
|
|
746
|
+
if (!sourceElementMap.has(key)) {
|
|
747
|
+
sourceElementMap.set(key, new Set());
|
|
908
748
|
}
|
|
749
|
+
sourceElementMap.get(key).add(new WeakRef(node));
|
|
750
|
+
}
|
|
909
751
|
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
if (!intercepted) {
|
|
919
|
-
listener.call(ws, event);
|
|
920
|
-
}
|
|
921
|
-
};
|
|
922
|
-
listener.__smartReloadWrapped__ = wrappedListener;
|
|
923
|
-
return originalAddEventListener(type, wrappedListener, options);
|
|
924
|
-
}
|
|
925
|
-
return originalAddEventListener(type, listener, options);
|
|
926
|
-
};
|
|
752
|
+
function getTypeName(type) {
|
|
753
|
+
if (typeof type === "string") return type;
|
|
754
|
+
if (typeof type === "function") return type.displayName || type.name || "Unknown";
|
|
755
|
+
if (typeof type === "object" && type !== null) {
|
|
756
|
+
return type.displayName || type.render?.displayName || type.render?.name || "Unknown";
|
|
757
|
+
}
|
|
758
|
+
return "Unknown";
|
|
759
|
+
}
|
|
927
760
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
761
|
+
export function jsxDEV(type, props, key, isStatic, source, self) {
|
|
762
|
+
// For custom components, tag their rendered output
|
|
763
|
+
if (source?.fileName && typeof type !== "string" && type !== Fragment) {
|
|
764
|
+
const typeName = getTypeName(type);
|
|
765
|
+
const fileName = cleanFileName(source.fileName);
|
|
766
|
+
|
|
767
|
+
const jsxSourceInfo = {
|
|
768
|
+
fileName,
|
|
769
|
+
lineNumber: source.lineNumber,
|
|
770
|
+
columnNumber: source.columnNumber,
|
|
771
|
+
displayName: typeName,
|
|
772
|
+
isComponent: true,
|
|
933
773
|
};
|
|
934
774
|
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
775
|
+
const originalRef = props?.ref;
|
|
776
|
+
|
|
777
|
+
// Check if component can safely receive refs
|
|
778
|
+
// - forwardRef components have $$typeof symbol
|
|
779
|
+
// - Class components have prototype.isReactComponent
|
|
780
|
+
// - If there's already a ref, the component expects it
|
|
781
|
+
const isForwardRef = type.$$typeof === Symbol.for('react.forward_ref');
|
|
782
|
+
const isClassComponent = typeof type === 'function' && type.prototype?.isReactComponent;
|
|
783
|
+
const hasExistingRef = originalRef !== undefined;
|
|
784
|
+
|
|
785
|
+
const canReceiveRef = isForwardRef || isClassComponent || hasExistingRef;
|
|
786
|
+
|
|
787
|
+
if (canReceiveRef) {
|
|
788
|
+
const enhancedProps = {
|
|
789
|
+
...props,
|
|
790
|
+
ref: (node) => {
|
|
791
|
+
if (node) {
|
|
792
|
+
const existingSource = node[SOURCE_KEY];
|
|
793
|
+
if (existingSource) {
|
|
794
|
+
// \u7EC4\u4EF6\u7EA7\u7684 source \u603B\u662F\u8986\u76D6\u5143\u7D20\u7EA7\u7684 source
|
|
795
|
+
if (!existingSource.isComponent) {
|
|
796
|
+
unregisterElement(node, existingSource);
|
|
797
|
+
node[SOURCE_KEY] = jsxSourceInfo;
|
|
798
|
+
registerElement(node, jsxSourceInfo);
|
|
799
|
+
}
|
|
800
|
+
} else {
|
|
801
|
+
node[SOURCE_KEY] = jsxSourceInfo;
|
|
802
|
+
registerElement(node, jsxSourceInfo);
|
|
950
803
|
}
|
|
951
|
-
}
|
|
952
|
-
if (
|
|
953
|
-
|
|
804
|
+
}
|
|
805
|
+
if (typeof originalRef === "function") {
|
|
806
|
+
originalRef(node);
|
|
807
|
+
} else if (originalRef && typeof originalRef === "object") {
|
|
808
|
+
originalRef.current = node;
|
|
954
809
|
}
|
|
955
810
|
},
|
|
956
|
-
|
|
957
|
-
|
|
811
|
+
};
|
|
812
|
+
return _jsxDEV(type, enhancedProps, key, isStatic, source, self);
|
|
958
813
|
}
|
|
959
814
|
|
|
960
|
-
|
|
961
|
-
handleWsClose(event);
|
|
962
|
-
});
|
|
963
|
-
|
|
964
|
-
originalAddEventListener('open', function() {
|
|
965
|
-
handleWsOpen();
|
|
966
|
-
});
|
|
967
|
-
|
|
968
|
-
state.wsIntercepted = true;
|
|
969
|
-
log('Vite HMR WebSocket intercepted');
|
|
970
|
-
|
|
971
|
-
return ws;
|
|
815
|
+
return _jsxDEV(type, props, key, isStatic, source, self);
|
|
972
816
|
}
|
|
973
817
|
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
return ws;
|
|
987
|
-
};
|
|
988
|
-
|
|
989
|
-
window.WebSocket.prototype = OriginalWebSocket.prototype;
|
|
990
|
-
window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
|
|
991
|
-
window.WebSocket.OPEN = OriginalWebSocket.OPEN;
|
|
992
|
-
window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
|
|
993
|
-
window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
|
|
994
|
-
|
|
995
|
-
// ============================================
|
|
996
|
-
// WebSocket \u6D88\u606F\u5904\u7406
|
|
997
|
-
// ============================================
|
|
998
|
-
function handleWsMessage(event) {
|
|
999
|
-
var data;
|
|
1000
|
-
try {
|
|
1001
|
-
data = JSON.parse(event.data);
|
|
1002
|
-
} catch (e) {
|
|
1003
|
-
// \u975E JSON \u6D88\u606F\uFF0C\u4E0D\u62E6\u622A
|
|
1004
|
-
return false;
|
|
818
|
+
// For host elements (div, span, etc.), tag with source info
|
|
819
|
+
if (source?.fileName && typeof type === "string") {
|
|
820
|
+
const fileName = cleanFileName(source.fileName);
|
|
821
|
+
|
|
822
|
+
// \u5224\u65AD\u5F53\u524D\u5143\u7D20\u662F\u5426\u5728\u7EC4\u4EF6\u5E93\u4E2D\u5B9A\u4E49
|
|
823
|
+
const isInLibrary = fileName.includes('src/components/ui/') ||
|
|
824
|
+
fileName.includes('node_modules');
|
|
825
|
+
|
|
826
|
+
// \u7EC4\u4EF6\u5E93\u5185\u90E8\u7684\u5143\u7D20\u4E0D\u6807\u8BB0\uFF0C\u4E0D\u652F\u6301\u53EF\u89C6\u5316\u7F16\u8F91
|
|
827
|
+
if (isInLibrary) {
|
|
828
|
+
return _jsxDEV(type, props, key, isStatic, source, self);
|
|
1005
829
|
}
|
|
830
|
+
|
|
831
|
+
const sourceInfo = {
|
|
832
|
+
fileName,
|
|
833
|
+
lineNumber: source.lineNumber,
|
|
834
|
+
columnNumber: source.columnNumber,
|
|
835
|
+
displayName: type,
|
|
836
|
+
isComponent: false, // \u6807\u8BB0\u8FD9\u662F\u5143\u7D20\u7EA7\u522B\u7684 source
|
|
837
|
+
};
|
|
1006
838
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
839
|
+
const originalRef = props?.ref;
|
|
840
|
+
|
|
841
|
+
const enhancedProps = {
|
|
842
|
+
...props,
|
|
843
|
+
ref: (node) => {
|
|
844
|
+
if (node) {
|
|
845
|
+
const existingSource = node[SOURCE_KEY];
|
|
846
|
+
// \u5982\u679C\u5DF2\u6709 source\uFF0C\u68C0\u67E5\u662F\u5426\u5E94\u8BE5\u4FDD\u7559\u5916\u5C42\u7684
|
|
847
|
+
if (existingSource) {
|
|
848
|
+
// \u5982\u679C\u5DF2\u6709\u7684\u662F\u7EC4\u4EF6\u7EA7\u522B\u7684 source\uFF08isComponent: true\uFF09\uFF0C\u4FDD\u7559\u5B83
|
|
849
|
+
if (existingSource.isComponent) {
|
|
850
|
+
// \u4E0D\u66F4\u65B0\uFF0C\u4FDD\u7559\u7EC4\u4EF6\u7EA7\u522B\u7684 source
|
|
851
|
+
if (typeof originalRef === "function") {
|
|
852
|
+
originalRef(node);
|
|
853
|
+
} else if (originalRef && typeof originalRef === "object") {
|
|
854
|
+
originalRef.current = node;
|
|
855
|
+
}
|
|
856
|
+
return;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
// \u5426\u5219\u6309\u6B63\u5E38\u903B\u8F91\u66F4\u65B0
|
|
860
|
+
if (getSourceKey(existingSource) !== getSourceKey(sourceInfo)) {
|
|
861
|
+
unregisterElement(node, existingSource);
|
|
862
|
+
node[SOURCE_KEY] = sourceInfo;
|
|
863
|
+
registerElement(node, sourceInfo);
|
|
864
|
+
}
|
|
865
|
+
} else {
|
|
866
|
+
node[SOURCE_KEY] = sourceInfo;
|
|
867
|
+
registerElement(node, sourceInfo);
|
|
868
|
+
}
|
|
1026
869
|
}
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
// \u5904\u7406 connected \u6D88\u606F\uFF08Vite \u670D\u52A1\u5668\u53D1\u9001\u7684\u9996\u6761\u6D88\u606F\uFF09
|
|
1034
|
-
if (data.type === 'connected') {
|
|
1035
|
-
if (state.isServerRestart) {
|
|
1036
|
-
log('Reconnected to Vite server after restart');
|
|
1037
|
-
|
|
1038
|
-
// \u6E05\u9664\u91CD\u8FDE\u8D85\u65F6
|
|
1039
|
-
if (state.reconnectTimeoutTimer) {
|
|
1040
|
-
clearTimeout(state.reconnectTimeoutTimer);
|
|
1041
|
-
state.reconnectTimeoutTimer = null;
|
|
870
|
+
if (typeof originalRef === "function") {
|
|
871
|
+
originalRef(node);
|
|
872
|
+
} else if (originalRef && typeof originalRef === "object") {
|
|
873
|
+
originalRef.current = node;
|
|
1042
874
|
}
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
// \u91CD\u8FDE\u540E\u7B49\u5F85\u4E00\u6BB5\u65F6\u95F4\uFF0C\u770B\u662F\u5426\u6709 full-reload \u6216 update \u6D88\u606F
|
|
1047
|
-
// \u5982\u679C\u6CA1\u6709\uFF0C\u8BF4\u660E\u4E0D\u9700\u8981\u5237\u65B0\uFF0C\u4F46\u4ECD\u9700 soft-reload \u6062\u590D HMR
|
|
1048
|
-
state.postReconnectTimer = setTimeout(function() {
|
|
1049
|
-
if (state.isServerRestart) {
|
|
1050
|
-
log('No changes detected after reconnect, performing soft-reload to restore HMR');
|
|
1051
|
-
scheduleSoftReload();
|
|
1052
|
-
}
|
|
1053
|
-
}, POST_RECONNECT_WINDOW);
|
|
1054
|
-
}
|
|
1055
|
-
return false; // \u8BA9 connected \u6D88\u606F\u6B63\u5E38\u4F20\u9012
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
|
-
// \u5904\u7406 update \u6D88\u606F\uFF08HMR \u70ED\u66F4\u65B0\uFF09
|
|
1059
|
-
if (data.type === 'update' && state.isServerRestart) {
|
|
1060
|
-
// \u91CD\u8FDE\u540E\u6536\u5230 HMR update\uFF0C\u8BF4\u660E\u6709\u6A21\u5757\u53D8\u66F4
|
|
1061
|
-
// \u8BA9 HMR update \u6B63\u5E38\u5904\u7406
|
|
1062
|
-
log('Received HMR update after reconnect, letting HMR handle it');
|
|
1063
|
-
if (state.postReconnectTimer) {
|
|
1064
|
-
clearTimeout(state.postReconnectTimer);
|
|
1065
|
-
state.postReconnectTimer = null;
|
|
1066
|
-
}
|
|
1067
|
-
// \u6709 HMR update \u8BF4\u660E WebSocket \u662F\u6D3B\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6062\u590D
|
|
1068
|
-
resetState();
|
|
1069
|
-
return false; // \u8BA9 update \u6D88\u606F\u6B63\u5E38\u4F20\u9012\u7ED9 Vite \u5BA2\u6237\u7AEF\u5904\u7406 HMR
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
return false;
|
|
875
|
+
},
|
|
876
|
+
};
|
|
877
|
+
return _jsxDEV(type, enhancedProps, key, isStatic, source, self);
|
|
1073
878
|
}
|
|
1074
879
|
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
880
|
+
return _jsxDEV(type, props, key, isStatic, source, self);
|
|
881
|
+
}
|
|
882
|
+
`;function S(){let e=false,n="";return {name:"vite-plugin-jsx-source-tagger",enforce:"pre",configResolved(r){e=r.command==="serve",n=r.root;},resolveId(r,t){return e&&r==="react/jsx-dev-runtime"&&!t?.includes("\0jsx-source")?"\0jsx-source/jsx-dev-runtime":null},load(r){return e&&r==="\0jsx-source/jsx-dev-runtime"?J.replace('const PROJECT_ROOT = "";',`const PROJECT_ROOT = ${JSON.stringify(n)};`):null}}}function b(e){let n="",r=false,t=null,o=null,l=e?.configPath||"./tailwind.config.ts",i="@amaster/tailwind-config",c="\0"+i,u=async()=>{let a=d__default.default.resolve(n,l);try{return await w__default.default.access(a),a}catch{if(l.endsWith(".ts")){let s=a.replace(/\.ts$/,".js");try{return await w__default.default.access(s),s}catch{return null}}else if(l.endsWith(".js")){let s=a.replace(/\.js$/,".ts");try{return await w__default.default.access(s),s}catch{return null}}return null}},v=async a=>{try{let s=await u();if(!s)return null;if(a){let O=await a.ssrLoadModule(s);return t=O.default||O,t}let f=await import(`file://${s}?t=${Date.now()}`);return t=f.default||f,t}catch(s){return console.error("[tailwind-config-sync] Failed to generate config:",s),null}};return {name:"vite-plugin-tailwind-config-sync",configResolved(a){n=a.root,r=a.command==="serve";},async buildStart(){r&&await v();},resolveId(a){if(a===i)return c},async load(a){if(a===c)return await v(o),t?`
|
|
883
|
+
// Use global variable to persist callbacks and current config across HMR updates
|
|
884
|
+
if (!window.__tailwindConfigCallbacks) {
|
|
885
|
+
window.__tailwindConfigCallbacks = [];
|
|
886
|
+
}
|
|
1080
887
|
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
enterServerRestartMode('full-reload followed by disconnect');
|
|
1084
|
-
return;
|
|
1085
|
-
}
|
|
888
|
+
// Always update current config with the latest from server
|
|
889
|
+
let tailwindConfigCurrent = ${JSON.stringify(t)};
|
|
1086
890
|
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
891
|
+
if (import.meta.hot) {
|
|
892
|
+
// Accept self updates
|
|
893
|
+
import.meta.hot.accept((newModule) => {
|
|
894
|
+
if (newModule && newModule.default) {
|
|
895
|
+
// Call all update callbacks with the new config from window
|
|
896
|
+
window.__tailwindConfigCallbacks.forEach((callback) => {
|
|
897
|
+
try {
|
|
898
|
+
// Pass the actual config object, not the Proxy
|
|
899
|
+
callback(newModule.default);
|
|
900
|
+
} catch (e) {
|
|
901
|
+
console.error('[TailwindConfig] Callback error:', e);
|
|
902
|
+
}
|
|
903
|
+
});
|
|
1091
904
|
}
|
|
1092
|
-
}
|
|
1093
|
-
|
|
1094
|
-
function handleWsOpen() {
|
|
1095
|
-
log('WebSocket opened');
|
|
1096
|
-
}
|
|
905
|
+
});
|
|
906
|
+
}
|
|
1097
907
|
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
originalLocationReload.call(window.location);
|
|
908
|
+
export function onUpdate(fn) {
|
|
909
|
+
window.__tailwindConfigCallbacks.push(fn);
|
|
910
|
+
return () => {
|
|
911
|
+
const index = window.__tailwindConfigCallbacks.indexOf(fn);
|
|
912
|
+
if (index > -1) {
|
|
913
|
+
window.__tailwindConfigCallbacks.splice(index, 1);
|
|
914
|
+
}
|
|
1106
915
|
};
|
|
916
|
+
};
|
|
917
|
+
export default tailwindConfigCurrent;
|
|
1107
918
|
|
|
1108
|
-
|
|
1109
|
-
})();
|
|
1110
|
-
</script>`.replace(/^\s*<script>\s*/i,"").replace(/\s*<\/script>\s*$/i,"");return {name:"vite-plugin-smart-reload",apply:"serve",transformIndexHtml:{order:"pre",handler(){return [{tag:"script",injectTo:"head-prepend",children:e}]}}}}function h(r={}){let{designWidth:e=375,maxWidth:t=750,baseFontSize:n=12,minRootSize:o=12,maxRootSize:i=24}=r;return {name:"vite-plugin-taro-style-adapter",apply:"serve",transformIndexHtml(s){let l=`
|
|
919
|
+
`:"export default null;"},configureServer(a){r&&(o=a,(async()=>{try{let s=await u();s&&a.watcher.add(s);}catch{}})());},async handleHotUpdate({file:a,server:s}){let p=await u();if(!p||d__default.default.normalize(a)!==d__default.default.normalize(p))return;let f=s.moduleGraph.getModuleById(p);f&&s.moduleGraph.invalidateModule(f),await v(s);let g=s.moduleGraph.getModuleById(c);return g?(s.moduleGraph.invalidateModule(g),[g]):[]}}}function x(e={}){let{designWidth:n=375,maxWidth:r=750,baseFontSize:t=12,minRootSize:o=12,maxRootSize:l=24}=e;return {name:"vite-plugin-taro-style-adapter",apply:"serve",transformIndexHtml(i){let c=`
|
|
1111
920
|
<script data-taro-flexible="true">
|
|
1112
921
|
(function() {
|
|
1113
|
-
var designWidth = ${
|
|
1114
|
-
var maxWidth = ${
|
|
1115
|
-
var baseFontSize = ${
|
|
922
|
+
var designWidth = ${n};
|
|
923
|
+
var maxWidth = ${r};
|
|
924
|
+
var baseFontSize = ${t};
|
|
1116
925
|
var minRootSize = ${o};
|
|
1117
|
-
var maxRootSize = ${
|
|
926
|
+
var maxRootSize = ${l};
|
|
1118
927
|
|
|
1119
928
|
function setRootFontSize() {
|
|
1120
929
|
var docEl = document.documentElement;
|
|
@@ -1148,7 +957,7 @@ if (typeof window !== 'undefined') {
|
|
|
1148
957
|
document.addEventListener('DOMContentLoaded', setRootFontSize);
|
|
1149
958
|
})();
|
|
1150
959
|
</script>
|
|
1151
|
-
`;return
|
|
960
|
+
`;return i.replace("</head>",`${c}
|
|
1152
961
|
<style data-taro-adapter="true">
|
|
1153
962
|
/* \u4EC5 H5 \u751F\u6548\uFF1A\u9690\u85CF Taro \u9875\u9762\u5BB9\u5668\u6EDA\u52A8\u6761\uFF0C\u4F46\u4ECD\u53EF\u6EDA\u52A8 */
|
|
1154
963
|
.taro_page {
|
|
@@ -1194,5 +1003,5 @@ if (typeof window !== 'undefined') {
|
|
|
1194
1003
|
object-fit: contain;
|
|
1195
1004
|
}
|
|
1196
1005
|
</style>
|
|
1197
|
-
</head>`)}}}function
|
|
1006
|
+
</head>`)}}}function h(e={}){let{ratio:n=2}=e;return {postcssPlugin:"postcss-rpx2px",Declaration(r){r.value?.includes("rpx")&&(r.value=r.value.replace(/(-?\d*\.?\d+)rpx/gi,(t,o)=>{let l=parseFloat(o)/n;return l===0?"0":`${l}px`}));}}}h.postcss=true;var $=/(-?\d*\.?\d+)rpx/gi,K=k__default.default.default??k__default.default,Y=L__default.default.default??L__default.default;function E(e,n){return e.replace($,(r,t)=>{let o=Number.parseFloat(t)/n;return o===0?"0":`${o}px`})}function G(e,n){if(!e.value.includes("rpx"))return false;let r=E(e.value,n);return r===e.value?false:(e.value=r,e.extra?.raw&&(e.extra.rawValue=r,e.extra.raw=JSON.stringify(r)),true)}function Q(e,n){let r=e.value.raw;if(!r.includes("rpx"))return false;let t=E(r,n),o=e.value.cooked==null?void 0:E(e.value.cooked,n);return t===r&&o===e.value.cooked?false:(e.value.raw=t,e.value.cooked=o,true)}function Z(e){return e.name.type==="JSXIdentifier"&&e.name.name==="style"}function ee(e,n){let r=false;return e.traverse({StringLiteral(t){G(t.node,n)&&(r=true);},TemplateElement(t){Q(t.node,n)&&(r=true);}}),r}function D(e,n=2){let r=parser.parse(e,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:true}),t=false;return Y(r,{JSXAttribute(o){if(!Z(o.node)||o.node.value?.type!=="JSXExpressionContainer")return;let l=o.get("value");l.isJSXExpressionContainer()&&ee(l,n)&&(t=true);}}),t?{changed:true,code:K(r,{retainLines:true,decoratorsBeforeExport:true,jsescOption:{minimal:true}},e).code}:{changed:false,code:e}}function R(e={}){let{ratio:n=2}=e;return {name:"vite-plugin-jsx-inline-style-rpx",enforce:"pre",transform(r,t){if(process.env.TARO_ENV!=="h5"||!/\.[jt]sx($|\?)/.test(t))return null;let o=D(r,n);return o.changed?{code:o.code,map:null}:null}}}function re(e={}){let{additional:n=[],autoInjectTaroApp:r=true,autoInjectVite:t=true}=e,o={},l=new Set(n);return r&&Object.keys(process.env).forEach(i=>{i.startsWith("TARO_APP_")&&l.add(i);}),t&&Object.keys(process.env).forEach(i=>{i.startsWith("VITE_")&&l.add(i);}),l.forEach(i=>{let c=process.env[i]||"";o[`process.env.${i}`]=JSON.stringify(c);}),o}function te(){return {"process.env.TARO_APP_API_BASE_URL":JSON.stringify(process.env.TARO_APP_API_BASE_URL||""),"process.env.VITE_API_BASE_URL":JSON.stringify(process.env.VITE_API_BASE_URL||""),"process.env.API_BASE_URL":JSON.stringify(process.env.API_BASE_URL||"")}}function ne(e={}){let n=e.isTaro??A__default.default.env.TARO_ENV==="h5",r=[C(),I()];return e.jsxSourceTagger!==false&&r.push(S()),e.tailwindConfigSync!==false&&r.push(b({configPath:e.tailwindConfigPath})),n&&(r.unshift(R()),r.unshift(x(e.styleAdapter)),r.unshift({name:"dev-postcss-rpx2px-plugin",apply:"serve",config(t){typeof t.css?.postcss=="object"&&t.css?.postcss.plugins?.unshift(h());}})),A__default.default.env.WORKSPACE_GIT_REPO&&r.push(j()),r}exports.default=ne;exports.editorBridgePlugin=C;exports.injectAmasterEnv=te;exports.injectTaroEnv=re;exports.jsxInlineStyleRpxPlugin=R;exports.jsxSourceTaggerPlugin=S;exports.routesExposePlugin=I;exports.rpx2pxPlugin=h;exports.tailwindConfigSyncPlugin=b;exports.taroStyleAdapterPlugin=x;exports.transformJsxInlineStyleRpx=D;//# sourceMappingURL=index.cjs.map
|
|
1198
1007
|
//# sourceMappingURL=index.cjs.map
|