@amaster.ai/vite-plugins 1.1.0-beta.7 → 1.1.0-beta.71

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/index.cjs CHANGED
@@ -1,30 +1,11 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var crypto=require('crypto'),m=require('fs'),w=require('path'),url=require('url'),R=require('process');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var m__default=/*#__PURE__*/_interopDefault(m);var w__default=/*#__PURE__*/_interopDefault(w);var R__default=/*#__PURE__*/_interopDefault(R);function E(r,e){let t=`${r}:${e}`;return crypto.createHash("md5").update(t).digest("hex").substring(0,12)}var x=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]);function h(){let r=false;return {name:"vite-plugin-component-id",enforce:"pre",configResolved(e){r=e.command==="serve";},transform(e,t){if(!r||!/\.(tsx|jsx)$/.test(t)||t.includes("node_modules")||!/<[a-z]/.test(e))return null;try{let n=e,o=/<([a-z][\da-z]*)(?=[\s/>])/g,i,s=[];for(;(i=o.exec(e))!==null;){let a=i[1];if(!a)continue;let u=i.index,d=i.index+i[0].length;if(!x.has(a))continue;let c=d,p=!1,f=!1;for(;c<e.length&&!p;)e[c]===">"&&(p=!0,e.substring(u,c).includes("data-node-component-id")&&(f=!0)),c++;f||s.push({index:u,tag:a,tagEndIndex:d});}let l=e;for(let a=s.length-1;a>=0;a--){let u=s[a];if(!u)continue;let{index:d,tagEndIndex:c}=u,p=E(t,d),f=l.substring(0,c),y=l.substring(c);n=`${f} data-node-component-id="${p}"${y}`,l=n;}return {code:n,map:null}}catch{return null}}}}var L=`<script>
2
- document.addEventListener("click", (e) => {
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 T(){let r="",e=`
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
- fetch(LOG_API_PATH, {
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
- // Check if message should be filtered (contains [vite] text)
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' && arg.indexOf('[vite]') !== -1) {
170
- return true;
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,403 +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(t){let n=t.root||R__default.default.cwd();r=w__default.default.join(n,"browser.log");},configureServer(t){t.middlewares.use((n,o,i)=>{if(n.url==="/__browser__"&&n.method==="POST"){let s=n.headers.origin||"*",l="";n.on("data",a=>{l+=a.toString();}),n.on("end",()=>{try{let a=w__default.default.dirname(r);m__default.default.existsSync(a)||m__default.default.mkdirSync(a,{recursive:!0}),m__default.default.appendFileSync(r,`${l}
709
- `,"utf-8"),o.writeHead(200,{"Content-Type":"application/json","Access-Control-Allow-Origin":s,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),o.end(JSON.stringify({success:!0}));}catch(a){console.error("[BrowserLogs] Write error:",a),o.writeHead(500,{"Content-Type":"application/json","Access-Control-Allow-Origin":s,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),o.end(JSON.stringify({success:false,error:String(a)}));}});}else if(n.url==="/__browser__"&&n.method==="OPTIONS"){let s=n.headers.origin||"*";o.writeHead(204,{"Access-Control-Allow-Origin":s,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type","Access-Control-Max-Age":"86400"}),o.end();}else if(n.url==="/__browser__"){let s=n.headers.origin||"*";o.writeHead(405,{"Content-Type":"application/json","Access-Control-Allow-Origin":s}),o.end(JSON.stringify({error:"Method not allowed"}));}else i();}),console.log("[BrowserLogs] Logs will be written to:",r);},transformIndexHtml(t){return t.replace(/<head([^>]*)>/i,`<head$1>${e}`)}}}function _(){let e=`
710
- <script>
711
- (function() {
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
- // \u6291\u5236 location.reload \u540E\u7684\u6700\u5927\u7A97\u53E3\u671F\uFF08ms\uFF09\uFF0C\u8D85\u65F6\u540E\u6267\u884C soft-reload \u6062\u590D HMR
722
- var RELOAD_SUPPRESS_WINDOW = 5000;
723
- // soft-reload \u5EF6\u8FDF\uFF08ms\uFF09
724
- var SOFT_RELOAD_DELAY = 300;
725
-
726
- // ============================================
727
- // \u72B6\u6001\u7BA1\u7406
728
- // ============================================
729
- var state = {
730
- // \u662F\u5426\u5DF2\u7ECF\u62E6\u622A\u4E86 Vite HMR WebSocket
731
- wsIntercepted: false,
732
- // \u662F\u5426\u6B63\u5728\u7B49\u5F85\u5224\u65AD full-reload \u7C7B\u578B\uFF08300ms \u7A97\u53E3\u671F\uFF09
733
- detectingReloadType: false,
734
- // \u5EF6\u8FDF\u6267\u884C full-reload \u7684\u5B9A\u65F6\u5668
735
- reloadTimer: null,
736
- // \u662F\u5426\u6B63\u5728\u7B49\u5F85\u670D\u52A1\u5668\u91CD\u8FDE
737
- waitingForReconnect: false,
738
- // \u662F\u5426\u662F\u670D\u52A1\u5668\u91CD\u542F\u573A\u666F
739
- isServerRestart: false,
740
- // \u91CD\u8FDE\u8D85\u65F6\u5B9A\u65F6\u5668
741
- reconnectTimeoutTimer: null,
742
- // \u91CD\u8FDE\u540E\u7B49\u5F85\u53D8\u66F4\u7684\u5B9A\u65F6\u5668
743
- postReconnectTimer: null,
744
- // \u662F\u5426\u6B63\u5728\u6291\u5236 location.reload
745
- suppressingReload: false,
746
- // \u6291\u5236 reload \u7684\u5B9A\u65F6\u5668
747
- suppressReloadTimer: null,
748
- // \u5DF2\u62E6\u622A\u7684 reload \u6B21\u6570\uFF08\u7528\u4E8E\u8C03\u8BD5\uFF09
749
- suppressedReloadCount: 0
750
- };
751
-
752
- // ============================================
753
- // \u65E5\u5FD7\u5DE5\u5177
754
- // ============================================
755
- function log() {
756
- var args = [PLUGIN_TAG];
757
- for (var i = 0; i < arguments.length; i++) {
758
- args.push(arguments[i]);
759
- }
760
- console.log.apply(console, args);
761
- }
762
-
763
- // ============================================
764
- // \u6E05\u9664\u6240\u6709\u5B9A\u65F6\u5668
765
- // ============================================
766
- function clearAllTimers() {
767
- if (state.reloadTimer) {
768
- clearTimeout(state.reloadTimer);
769
- state.reloadTimer = null;
770
- }
771
- if (state.reconnectTimeoutTimer) {
772
- clearTimeout(state.reconnectTimeoutTimer);
773
- state.reconnectTimeoutTimer = null;
774
- }
775
- if (state.postReconnectTimer) {
776
- clearTimeout(state.postReconnectTimer);
777
- state.postReconnectTimer = null;
778
- }
779
- if (state.suppressReloadTimer) {
780
- clearTimeout(state.suppressReloadTimer);
781
- state.suppressReloadTimer = null;
782
- }
783
- }
784
-
785
- // ============================================
786
- // \u91CD\u7F6E\u72B6\u6001
787
- // ============================================
788
- function resetState() {
789
- state.detectingReloadType = false;
790
- state.isServerRestart = false;
791
- state.waitingForReconnect = false;
792
- state.suppressingReload = false;
793
- state.suppressedReloadCount = 0;
794
- clearAllTimers();
795
- }
796
-
797
- // ============================================
798
- // \u6267\u884C\u771F\u6B63\u7684 full-reload
799
- // ============================================
800
- function executeFullReload() {
801
- log('Executing full-reload');
802
- resetState();
803
- originalLocationReload.call(window.location);
804
- }
805
-
806
- // ============================================
807
- // Soft-reload\uFF1A\u5EF6\u8FDF\u5237\u65B0\uFF0C\u6062\u590D HMR \u8FDE\u63A5
808
- // \u5728\u6291\u5236 reload \u540E\uFF0CVite \u5BA2\u6237\u7AEF\u7684 WebSocket \u5DF2\u6B7B\uFF0C
809
- // \u9700\u8981\u901A\u8FC7 reload \u6062\u590D HMR\u3002
810
- // ============================================
811
- function scheduleSoftReload() {
812
- log('Scheduling soft-reload to restore HMR connection');
813
- setTimeout(function() {
814
- resetState();
815
- originalLocationReload.call(window.location);
816
- }, SOFT_RELOAD_DELAY);
817
- }
818
-
819
- // ============================================
820
- // \u62E6\u622A location.reload
821
- // Vite \u5BA2\u6237\u7AEF\u5728 HTTP ping \u6210\u529F\u540E\u4F1A\u76F4\u63A5\u8C03\u7528 location.reload()
822
- // \u6211\u4EEC\u9700\u8981\u5728\u670D\u52A1\u5668\u91CD\u542F\u671F\u95F4\u62E6\u622A\u8FD9\u4E2A\u8C03\u7528
823
- // ============================================
824
- var originalLocationReload = window.location.reload.bind(window.location);
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";
825
703
 
826
- try {
827
- Object.defineProperty(window.location, 'reload', {
828
- value: function smartReloadInterceptedReload() {
829
- if (state.suppressingReload || state.waitingForReconnect || state.isServerRestart) {
830
- state.suppressedReloadCount++;
831
- log('Suppressed location.reload() during server restart (count: ' + state.suppressedReloadCount + ')');
704
+ const _jsxDEV = ReactJSXDevRuntime.jsxDEV;
705
+ export const Fragment = ReactJSXDevRuntime.Fragment;
832
706
 
833
- // \u9632\u6296\uFF1A\u6BCF\u6B21\u88AB\u8C03\u7528\u90FD\u91CD\u7F6E\u5B9A\u65F6\u5668
834
- if (state.suppressReloadTimer) {
835
- clearTimeout(state.suppressReloadTimer);
836
- }
837
- state.suppressReloadTimer = setTimeout(function() {
838
- if (state.suppressingReload || state.isServerRestart) {
839
- log('Reload suppress window expired, performing soft-reload');
840
- scheduleSoftReload();
841
- }
842
- }, RELOAD_SUPPRESS_WINDOW);
707
+ const SOURCE_KEY = Symbol.for("__jsxSource__");
708
+ const PROJECT_ROOT = "";
843
709
 
844
- return;
845
- }
846
- return originalLocationReload.call(window.location);
847
- },
848
- writable: true,
849
- configurable: true
850
- });
851
- log('location.reload intercepted via defineProperty');
852
- } catch (e) {
853
- // \u67D0\u4E9B\u6D4F\u89C8\u5668\u73AF\u5883\u53EF\u80FD\u4E0D\u5141\u8BB8\u4FEE\u6539 location.reload
854
- // \u6B64\u65F6\u63D2\u4EF6\u7684 WebSocket \u6D88\u606F\u62E6\u622A\u4ECD\u7136\u6709\u6548\uFF0C\u53EA\u662F\u65E0\u6CD5\u62E6\u622A Vite \u7684 HTTP ping \u540E\u7684 reload
855
- log('Failed to intercept location.reload (plugin will have limited effectiveness):', e.message);
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;
856
716
  }
717
+ return fileName;
718
+ };
857
719
 
858
- // ============================================
859
- // \u8FDB\u5165\u670D\u52A1\u5668\u91CD\u542F\u7B49\u5F85\u6A21\u5F0F
860
- // ============================================
861
- function enterServerRestartMode(reason) {
862
- log('Entering server restart mode:', reason);
720
+ // Global map to track elements by source location
721
+ const sourceElementMap = new Map();
722
+ window.sourceElementMap = sourceElementMap;
863
723
 
864
- state.isServerRestart = true;
865
- state.waitingForReconnect = true;
866
- state.suppressingReload = true;
867
- state.detectingReloadType = false;
724
+ function getSourceKey(sourceInfo) {
725
+ return \`\${cleanFileName(sourceInfo.fileName)}:\${sourceInfo.lineNumber}:\${sourceInfo.columnNumber}\`;
726
+ }
868
727
 
869
- if (state.reloadTimer) {
870
- clearTimeout(state.reloadTimer);
871
- state.reloadTimer = null;
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;
736
+ }
872
737
  }
873
-
874
- // \u8D85\u65F6\u4FDD\u62A4\uFF1A\u5982\u679C\u6307\u5B9A\u65F6\u95F4\u5185\u65E0\u6CD5\u91CD\u8FDE\uFF0C\u6267\u884C full-reload
875
- if (state.reconnectTimeoutTimer) {
876
- clearTimeout(state.reconnectTimeoutTimer);
738
+ if (refs.size === 0) {
739
+ sourceElementMap.delete(key);
877
740
  }
878
- state.reconnectTimeoutTimer = setTimeout(function() {
879
- if (state.waitingForReconnect || state.isServerRestart) {
880
- log('Reconnect timeout (' + RECONNECT_TIMEOUT + 'ms), performing full-reload as fallback');
881
- executeFullReload();
882
- }
883
- }, RECONNECT_TIMEOUT);
884
741
  }
742
+ }
885
743
 
886
- // ============================================
887
- // \u62E6\u622A WebSocket \u6784\u9020\u51FD\u6570
888
- // ============================================
889
- var OriginalWebSocket = window.WebSocket;
890
-
891
- function isViteHmrWebSocket(url) {
892
- if (typeof url !== 'string') return false;
893
- // \u53EA\u5339\u914D Vite HMR \u7279\u5F81\u7684 URL
894
- 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());
895
748
  }
749
+ sourceElementMap.get(key).add(new WeakRef(node));
750
+ }
896
751
 
897
- function createWsProxy(ws) {
898
- var originalAddEventListener = ws.addEventListener.bind(ws);
899
- var originalRemoveEventListener = ws.removeEventListener.bind(ws);
900
-
901
- ws.addEventListener = function(type, listener, options) {
902
- if (type === 'message') {
903
- var wrappedListener = function(event) {
904
- var intercepted = handleWsMessage(event);
905
- if (!intercepted) {
906
- listener.call(ws, event);
907
- }
908
- };
909
- listener.__smartReloadWrapped__ = wrappedListener;
910
- return originalAddEventListener(type, wrappedListener, options);
911
- }
912
- return originalAddEventListener(type, listener, options);
913
- };
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
+ }
914
760
 
915
- ws.removeEventListener = function(type, listener, options) {
916
- if (type === 'message' && listener.__smartReloadWrapped__) {
917
- return originalRemoveEventListener(type, listener.__smartReloadWrapped__, options);
918
- }
919
- return originalRemoveEventListener(type, listener, options);
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,
920
773
  };
921
774
 
922
- var originalOnMessage = null;
923
- var onMessageDescriptor = Object.getOwnPropertyDescriptor(WebSocket.prototype, 'onmessage') ||
924
- Object.getOwnPropertyDescriptor(ws, 'onmessage');
925
-
926
- if (onMessageDescriptor) {
927
- Object.defineProperty(ws, 'onmessage', {
928
- get: function() {
929
- return originalOnMessage;
930
- },
931
- set: function(handler) {
932
- originalOnMessage = handler;
933
- var wrappedHandler = function(event) {
934
- var intercepted = handleWsMessage(event);
935
- if (!intercepted && handler) {
936
- handler.call(ws, event);
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);
937
803
  }
938
- };
939
- if (onMessageDescriptor.set) {
940
- onMessageDescriptor.set.call(ws, wrappedHandler);
804
+ }
805
+ if (typeof originalRef === "function") {
806
+ originalRef(node);
807
+ } else if (originalRef && typeof originalRef === "object") {
808
+ originalRef.current = node;
941
809
  }
942
810
  },
943
- configurable: true
944
- });
811
+ };
812
+ return _jsxDEV(type, enhancedProps, key, isStatic, source, self);
945
813
  }
946
814
 
947
- originalAddEventListener('close', function(event) {
948
- handleWsClose(event);
949
- });
950
-
951
- originalAddEventListener('open', function() {
952
- handleWsOpen();
953
- });
954
-
955
- state.wsIntercepted = true;
956
- log('Vite HMR WebSocket intercepted');
957
-
958
- return ws;
815
+ return _jsxDEV(type, props, key, isStatic, source, self);
959
816
  }
960
817
 
961
- window.WebSocket = function SmartReloadWebSocket(url, protocols) {
962
- var ws;
963
- if (protocols !== undefined) {
964
- ws = new OriginalWebSocket(url, protocols);
965
- } else {
966
- ws = new OriginalWebSocket(url);
967
- }
968
-
969
- if (!state.wsIntercepted && isViteHmrWebSocket(url)) {
970
- return createWsProxy(ws);
971
- }
972
-
973
- return ws;
974
- };
975
-
976
- window.WebSocket.prototype = OriginalWebSocket.prototype;
977
- window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
978
- window.WebSocket.OPEN = OriginalWebSocket.OPEN;
979
- window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
980
- window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
981
-
982
- // ============================================
983
- // WebSocket \u6D88\u606F\u5904\u7406
984
- // ============================================
985
- function handleWsMessage(event) {
986
- var data;
987
- try {
988
- data = JSON.parse(event.data);
989
- } catch (e) {
990
- // \u975E JSON \u6D88\u606F\uFF0C\u4E0D\u62E6\u622A
991
- 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);
992
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
+ };
993
838
 
994
- // \u5904\u7406 full-reload \u6D88\u606F
995
- if (data.type === 'full-reload') {
996
- // \u5982\u679C\u5DF2\u7ECF\u5728\u670D\u52A1\u5668\u91CD\u542F\u6A21\u5F0F\uFF0C\u62E6\u622A\u6240\u6709 full-reload
997
- if (state.isServerRestart) {
998
- log('Suppressed full-reload during server restart');
999
- return true;
1000
- }
1001
-
1002
- log('Intercepted full-reload, path:', data.path || '(none)');
1003
-
1004
- // \u8FDB\u5165\u68C0\u6D4B\u6A21\u5F0F\uFF1A\u7B49\u5F85\u770B WebSocket \u662F\u5426\u65AD\u5F00
1005
- state.detectingReloadType = true;
1006
-
1007
- // \u8BBE\u7F6E\u5B9A\u65F6\u5668\uFF1A\u5982\u679C\u7A97\u53E3\u671F\u5185 WebSocket \u6CA1\u6709\u65AD\u5F00\uFF0C\u8BF4\u660E\u662F\u771F\u6B63\u7684\u6A21\u5757\u53D8\u66F4
1008
- state.reloadTimer = setTimeout(function() {
1009
- if (state.detectingReloadType && !state.isServerRestart) {
1010
- log('WebSocket still connected after ' + DISCONNECT_DETECT_WINDOW + 'ms - real module change, executing reload');
1011
- state.detectingReloadType = false;
1012
- executeFullReload();
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
+ }
1013
869
  }
1014
- }, DISCONNECT_DETECT_WINDOW);
1015
-
1016
- // \u62E6\u622A\uFF0C\u4E0D\u4F20\u9012\u7ED9 Vite \u5BA2\u6237\u7AEF
1017
- return true;
1018
- }
1019
-
1020
- // \u5904\u7406 connected \u6D88\u606F\uFF08Vite \u670D\u52A1\u5668\u53D1\u9001\u7684\u9996\u6761\u6D88\u606F\uFF09
1021
- if (data.type === 'connected') {
1022
- if (state.isServerRestart) {
1023
- log('Reconnected to Vite server after restart');
1024
-
1025
- // \u6E05\u9664\u91CD\u8FDE\u8D85\u65F6
1026
- if (state.reconnectTimeoutTimer) {
1027
- clearTimeout(state.reconnectTimeoutTimer);
1028
- state.reconnectTimeoutTimer = null;
870
+ if (typeof originalRef === "function") {
871
+ originalRef(node);
872
+ } else if (originalRef && typeof originalRef === "object") {
873
+ originalRef.current = node;
1029
874
  }
1030
-
1031
- state.waitingForReconnect = false;
1032
-
1033
- // \u91CD\u8FDE\u540E\u7B49\u5F85\u4E00\u6BB5\u65F6\u95F4\uFF0C\u770B\u662F\u5426\u6709 full-reload \u6216 update \u6D88\u606F
1034
- // \u5982\u679C\u6CA1\u6709\uFF0C\u8BF4\u660E\u4E0D\u9700\u8981\u5237\u65B0\uFF0C\u4F46\u4ECD\u9700 soft-reload \u6062\u590D HMR
1035
- state.postReconnectTimer = setTimeout(function() {
1036
- if (state.isServerRestart) {
1037
- log('No changes detected after reconnect, performing soft-reload to restore HMR');
1038
- scheduleSoftReload();
1039
- }
1040
- }, POST_RECONNECT_WINDOW);
1041
- }
1042
- return false; // \u8BA9 connected \u6D88\u606F\u6B63\u5E38\u4F20\u9012
1043
- }
1044
-
1045
- // \u5904\u7406 update \u6D88\u606F\uFF08HMR \u70ED\u66F4\u65B0\uFF09
1046
- if (data.type === 'update' && state.isServerRestart) {
1047
- // \u91CD\u8FDE\u540E\u6536\u5230 HMR update\uFF0C\u8BF4\u660E\u6709\u6A21\u5757\u53D8\u66F4
1048
- // \u8BA9 HMR update \u6B63\u5E38\u5904\u7406
1049
- log('Received HMR update after reconnect, letting HMR handle it');
1050
- if (state.postReconnectTimer) {
1051
- clearTimeout(state.postReconnectTimer);
1052
- state.postReconnectTimer = null;
1053
- }
1054
- // \u6709 HMR update \u8BF4\u660E WebSocket \u662F\u6D3B\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6062\u590D
1055
- resetState();
1056
- return false; // \u8BA9 update \u6D88\u606F\u6B63\u5E38\u4F20\u9012\u7ED9 Vite \u5BA2\u6237\u7AEF\u5904\u7406 HMR
1057
- }
1058
-
1059
- return false;
875
+ },
876
+ };
877
+ return _jsxDEV(type, enhancedProps, key, isStatic, source, self);
1060
878
  }
1061
879
 
1062
- // ============================================
1063
- // WebSocket \u8FDE\u63A5\u4E8B\u4EF6\u5904\u7406
1064
- // ============================================
1065
- function handleWsClose(event) {
1066
- log('WebSocket closed, code:', event.code, 'wasClean:', event.wasClean);
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
+ }
1067
887
 
1068
- // \u573A\u666F1\uFF1A\u6536\u5230 full-reload \u540E WebSocket \u65AD\u5F00 \u2192 \u670D\u52A1\u5668\u91CD\u542F
1069
- if (state.detectingReloadType) {
1070
- enterServerRestartMode('full-reload followed by disconnect');
1071
- return;
1072
- }
888
+ // Always update current config with the latest from server
889
+ let tailwindConfigCurrent = ${JSON.stringify(t)};
1073
890
 
1074
- // \u573A\u666F2\uFF1A\u6CA1\u6709 full-reload \u6D88\u606F\uFF0CWebSocket \u76F4\u63A5\u65AD\u5F00
1075
- // \u53EA\u5728\u975E\u6B63\u5E38\u5173\u95ED\u65F6\u624D\u8FDB\u5165\u91CD\u542F\u6A21\u5F0F\uFF08wasClean === false \u8868\u793A\u975E\u6B63\u5E38\u65AD\u5F00\uFF09
1076
- if (!state.isServerRestart && !event.wasClean) {
1077
- enterServerRestartMode('unexpected disconnect (server process killed)');
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
+ });
1078
904
  }
1079
- }
1080
-
1081
- function handleWsOpen() {
1082
- log('WebSocket opened');
1083
- }
905
+ });
906
+ }
1084
907
 
1085
- // ============================================
1086
- // \u66B4\u9732 API \u4F9B\u8C03\u8BD5\u4F7F\u7528
1087
- // ============================================
1088
- window.__smartReloadState__ = state;
1089
- window.__smartReloadForceReload__ = function() {
1090
- log('Force reload triggered by user');
1091
- resetState();
1092
- 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
+ }
1093
915
  };
916
+ };
917
+ export default tailwindConfigCurrent;
1094
918
 
1095
- log('Smart Reload initialized');
1096
- })();
1097
- </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 v(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=`
1098
920
  <script data-taro-flexible="true">
1099
921
  (function() {
1100
- var designWidth = ${e};
1101
- var maxWidth = ${t};
1102
- var baseFontSize = ${n};
922
+ var designWidth = ${n};
923
+ var maxWidth = ${r};
924
+ var baseFontSize = ${t};
1103
925
  var minRootSize = ${o};
1104
- var maxRootSize = ${i};
926
+ var maxRootSize = ${l};
1105
927
 
1106
928
  function setRootFontSize() {
1107
929
  var docEl = document.documentElement;
@@ -1135,7 +957,7 @@ if (typeof window !== 'undefined') {
1135
957
  document.addEventListener('DOMContentLoaded', setRootFontSize);
1136
958
  })();
1137
959
  </script>
1138
- `;return s.replace("</head>",`${l}
960
+ `;return i.replace("</head>",`${c}
1139
961
  <style data-taro-adapter="true">
1140
962
  /* \u4EC5 H5 \u751F\u6548\uFF1A\u9690\u85CF Taro \u9875\u9762\u5BB9\u5668\u6EDA\u52A8\u6761\uFF0C\u4F46\u4ECD\u53EF\u6EDA\u52A8 */
1141
963
  .taro_page {
@@ -1181,5 +1003,5 @@ if (typeof window !== 'undefined') {
1181
1003
  object-fit: contain;
1182
1004
  }
1183
1005
  </style>
1184
- </head>`)}}}function g(r={}){let{ratio:e=2}=r;return {postcssPlugin:"postcss-rpx2px",Declaration(t){t.value.includes("rpx")&&(t.value=t.value.replace(/(-?\d*\.?\d+)rpx/gi,(n,o)=>{let i=parseFloat(o)/e;return i===0?"0":`${i}px`}));}}}g.postcss=true;function W(r={}){let{additional:e=[],autoInjectTaroApp:t=true,autoInjectVite:n=true}=r,o={},i=new Set(e);return t&&Object.keys(process.env).forEach(s=>{s.startsWith("TARO_APP_")&&i.add(s);}),n&&Object.keys(process.env).forEach(s=>{s.startsWith("VITE_")&&i.add(s);}),i.forEach(s=>{let l=process.env[s]||"";o[`process.env.${s}`]=JSON.stringify(l);}),o}function D(){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||"")}}function q(r={}){let e=[v(r.styleAdapter),{name:"dev-postcss-rpx2px-plugin",apply:"serve",config(t){R__default.default.env.TARO_ENV==="h5"&&typeof t.css?.postcss=="object"&&t.css?.postcss.plugins?.unshift(g());}},h(),S(),b(),_()];return R__default.default.env.WORKSPACE_GIT_REPO&&e.push(T()),e}exports.componentIdPlugin=h;exports.default=q;exports.editorBridgePlugin=S;exports.injectAmasterEnv=D;exports.injectTaroEnv=W;exports.routesExposePlugin=b;exports.rpx2pxPlugin=g;exports.smartReloadPlugin=_;exports.taroStyleAdapterPlugin=v;//# sourceMappingURL=index.cjs.map
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||"")}}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
1185
1007
  //# sourceMappingURL=index.cjs.map