@amaster.ai/vite-plugins 1.1.0-beta.1 → 1.1.0-beta.10

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,4 +1,4 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var crypto=require('crypto'),g=require('fs'),S=require('path'),url=require('url'),H=require('process');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var g__default=/*#__PURE__*/_interopDefault(g);var S__default=/*#__PURE__*/_interopDefault(S);var H__default=/*#__PURE__*/_interopDefault(H);function T(t,e){let n=`${t}:${e}`;return crypto.createHash("md5").update(n).digest("hex").substring(0,12)}var O=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 t=false;return {name:"vite-plugin-component-id",enforce:"pre",configResolved(e){t=e.command==="serve";},transform(e,n){if(!t||!/\.(tsx|jsx)$/.test(n)||n.includes("node_modules")||!/<[a-z]/.test(e))return null;try{let r=e,s=/<([a-z][\da-z]*)(?=[\s/>])/g,a,o=[];for(;(a=s.exec(e))!==null;){let i=a[1];if(!i)continue;let c=a.index,d=a.index+a[0].length;if(!O.has(i))continue;let l=d,p=!1,f=!1;for(;l<e.length&&!p;)e[l]===">"&&(p=!0,e.substring(c,l).includes("data-node-component-id")&&(f=!0)),l++;f||o.push({index:c,tag:i,tagEndIndex:d});}let u=e;for(let i=o.length-1;i>=0;i--){let c=o[i];if(!c)continue;let{index:d,tagEndIndex:l}=c,p=T(n,d),f=u.substring(0,l),y=u.substring(l);r=`${f} data-node-component-id="${p}"${y}`,u=r;}return {code:r,map:null}}catch{return null}}}}var P=`<script>
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var crypto=require('crypto'),m=require('fs'),w=require('path'),url=require('url'),T=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 T__default=/*#__PURE__*/_interopDefault(T);function E(n,t){let e=`${n}:${t}`;return crypto.createHash("md5").update(e).digest("hex").substring(0,12)}var R=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 v(){let n=false;return {name:"vite-plugin-component-id",enforce:"pre",configResolved(t){n=t.command==="serve";},transform(t,e){if(!n||!/\.(tsx|jsx)$/.test(e)||e.includes("node_modules")||!/<[a-z]/.test(t))return null;try{let r=t,o=/<([a-z][\da-z]*)(?=[\s/>])/g,i,s=[];for(;(i=o.exec(t))!==null;){let a=i[1];if(!a)continue;let c=i.index,d=i.index+i[0].length;if(!R.has(a))continue;let u=d,p=!1,f=!1;for(;u<t.length&&!p;)t[u]===">"&&(p=!0,t.substring(c,u).includes("data-node-component-id")&&(f=!0)),u++;f||s.push({index:c,tag:a,tagEndIndex:d});}let l=t;for(let a=s.length-1;a>=0;a--){let c=s[a];if(!c)continue;let{index:d,tagEndIndex:u}=c,p=E(e,d),f=l.substring(0,u),h=l.substring(u);r=`${f} data-node-component-id="${p}"${h}`,l=r;}return {code:r,map:null}}catch{return null}}}}var L=`<script>
2
2
  document.addEventListener("click", (e) => {
3
3
  const element = e.target;
4
4
  const noJumpOut = document.body.classList.contains("forbid-jump-out")
@@ -16,15 +16,15 @@ document.addEventListener("click", (e) => {
16
16
  e.preventDefault();
17
17
  }
18
18
  });
19
- </script>`;function q(){try{let t=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=S.dirname(t),n=S.resolve(e,"../dist/bridge.bridge.js");return `<script>
20
- ${g.readFileSync(n,"utf-8")}
21
- </script>`}catch(t){return console.warn("Failed to read bridge script:",t),""}}function v(){let t=false,e="";return {name:"vite-plugin-editor-bridge",configResolved(n){t=n.command==="serve",t&&(e=q());},transformIndexHtml(n){let s=`${P}${t?e:""}</body>`;return n.replace("</body>",s)}}}function b(t){let e=false,n=t?.routesFilePath||"src/routes.tsx";return {name:"vite-plugin-routes-expose",enforce:"post",configResolved(r){e=r.command==="serve";},transform(r,s){if(!e||!s.endsWith(n))return null;try{return r.includes("window.__APP_ROUTES__")?null:{code:`${r}
19
+ </script>`;function C(){try{let n=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))),t=w.dirname(n),e=w.resolve(t,"../dist/bridge.bridge.js");return `<script>
20
+ ${m.readFileSync(e,"utf-8")}
21
+ </script>`}catch(n){return console.warn("Failed to read bridge script:",n),""}}function S(){let n=false,t="";return {name:"vite-plugin-editor-bridge",configResolved(e){n=e.command==="serve",n&&(t=C());},transformIndexHtml(e){let o=`${L}${n?t:""}</body>`;return e.replace("</body>",o)}}}function b(n){let t=false,e=n?.routesFilePath||"src/routes.tsx";return {name:"vite-plugin-routes-expose",enforce:"post",configResolved(r){t=r.command==="serve";},transform(r,o){if(!t||!o.endsWith(e))return null;try{return r.includes("window.__APP_ROUTES__")?null:{code:`${r}
22
22
 
23
23
  // Development mode: Expose routes to window.__APP_ROUTES__
24
24
  if (typeof window !== 'undefined') {
25
25
  window.__APP_ROUTES__ = typeof routes !== 'undefined' && Array.isArray(routes) ? routes : [];
26
26
  }
27
- `,map:null}}catch{return null}}}}function _(){let t="",e=`
27
+ `,map:null}}catch{return null}}}}function _(){let n="",t=`
28
28
  <script>
29
29
  (function() {
30
30
  'use strict';
@@ -705,8 +705,315 @@ if (typeof window !== 'undefined') {
705
705
 
706
706
  originalConsole.log('[BrowserLogs] Log collection started');
707
707
  })();
708
- </script>`;return {name:"vite-plugin-browser-logs",configResolved(n){let r=n.root||H__default.default.cwd();t=S__default.default.join(r,"browser.log");},configureServer(n){n.middlewares.use((r,s,a)=>{if(r.url==="/__browser__"&&r.method==="POST"){let o=r.headers.origin||"*",u="";r.on("data",i=>{u+=i.toString();}),r.on("end",()=>{try{let i=S__default.default.dirname(t);g__default.default.existsSync(i)||g__default.default.mkdirSync(i,{recursive:!0}),g__default.default.appendFileSync(t,`${u}
709
- `,"utf-8"),s.writeHead(200,{"Content-Type":"application/json","Access-Control-Allow-Origin":o,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),s.end(JSON.stringify({success:!0}));}catch(i){console.error("[BrowserLogs] Write error:",i),s.writeHead(500,{"Content-Type":"application/json","Access-Control-Allow-Origin":o,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}),s.end(JSON.stringify({success:false,error:String(i)}));}});}else if(r.url==="/__browser__"&&r.method==="OPTIONS"){let o=r.headers.origin||"*";s.writeHead(204,{"Access-Control-Allow-Origin":o,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type","Access-Control-Max-Age":"86400"}),s.end();}else if(r.url==="/__browser__"){let o=r.headers.origin||"*";s.writeHead(405,{"Content-Type":"application/json","Access-Control-Allow-Origin":o}),s.end(JSON.stringify({error:"Method not allowed"}));}else a();}),console.log("[BrowserLogs] Logs will be written to:",t);},transformIndexHtml(n){return n.replace(/<head([^>]*)>/i,`<head$1>${e}`)}}}function m(){return {name:"vite-plugin-taro-style-adapter",apply:"serve",transformIndexHtml(t){return t.replace("</head>",`
708
+ </script>`;return {name:"vite-plugin-browser-logs",configResolved(e){let r=e.root||T__default.default.cwd();n=w__default.default.join(r,"browser.log");},configureServer(e){e.middlewares.use((r,o,i)=>{if(r.url==="/__browser__"&&r.method==="POST"){let s=r.headers.origin||"*",l="";r.on("data",a=>{l+=a.toString();}),r.on("end",()=>{try{let a=w__default.default.dirname(n);m__default.default.existsSync(a)||m__default.default.mkdirSync(a,{recursive:!0}),m__default.default.appendFileSync(n,`${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(r.url==="/__browser__"&&r.method==="OPTIONS"){let s=r.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(r.url==="/__browser__"){let s=r.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:",n);},transformIndexHtml(e){return e.replace(/<head([^>]*)>/i,`<head$1>${t}`)}}}function O(){let t=`
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
+
718
+ // ============================================
719
+ // \u72B6\u6001\u7BA1\u7406
720
+ // ============================================
721
+ var state = {
722
+ // \u662F\u5426\u5DF2\u7ECF\u62E6\u622A\u4E86 Vite HMR WebSocket
723
+ wsIntercepted: false,
724
+ // \u662F\u5426\u6B63\u5728\u7B49\u5F85\u5224\u65AD full-reload \u7C7B\u578B\uFF08300ms \u7A97\u53E3\u671F\uFF09
725
+ detectingReloadType: false,
726
+ // \u5EF6\u8FDF\u6267\u884C full-reload \u7684\u5B9A\u65F6\u5668
727
+ reloadTimer: null,
728
+ // \u662F\u5426\u662F\u670D\u52A1\u5668\u91CD\u542F\u573A\u666F
729
+ isServerRestart: false
730
+ };
731
+
732
+ // ============================================
733
+ // \u65E5\u5FD7\u5DE5\u5177
734
+ // ============================================
735
+ function log() {
736
+ var args = [PLUGIN_TAG];
737
+ for (var i = 0; i < arguments.length; i++) {
738
+ args.push(arguments[i]);
739
+ }
740
+ console.log.apply(console, args);
741
+ }
742
+
743
+ // ============================================
744
+ // \u91CD\u7F6E\u72B6\u6001
745
+ // ============================================
746
+ function resetState() {
747
+ state.detectingReloadType = false;
748
+ state.isServerRestart = false;
749
+ if (state.reloadTimer) {
750
+ clearTimeout(state.reloadTimer);
751
+ state.reloadTimer = null;
752
+ }
753
+ }
754
+
755
+ // ============================================
756
+ // \u6267\u884C\u771F\u6B63\u7684 full-reload
757
+ // ============================================
758
+ function executeFullReload() {
759
+ log('Executing full-reload');
760
+ resetState();
761
+ location.reload();
762
+ }
763
+
764
+ // ============================================
765
+ // __smartReload__\uFF1A\u66FF\u4EE3 location.reload() \u7684\u5168\u5C40\u51FD\u6570
766
+ //
767
+ // Vite \u5BA2\u6237\u7AEF\u4EE3\u7801\u4E2D\u7684 location.reload() \u5DF2\u88AB\u66FF\u6362\u4E3A
768
+ // window.__smartReload__()\u3002
769
+ //
770
+ // \u5728\u670D\u52A1\u5668\u91CD\u542F\u573A\u666F\u4E0B\uFF0C\u6B64\u51FD\u6570\u4E0D\u5237\u65B0\u9875\u9762\uFF0C
771
+ // \u800C\u662F\u8BA9 Vite \u5BA2\u6237\u7AEF\u81EA\u52A8\u91CD\u8FDE WebSocket \u6062\u590D HMR\u3002
772
+ //
773
+ // \u5728\u5176\u4ED6\u573A\u666F\u4E0B\uFF08\u5982\u6A21\u5757\u53D8\u66F4\uFF09\uFF0C\u6B63\u5E38\u6267\u884C location.reload()\u3002
774
+ // ============================================
775
+ window.__smartReload__ = function() {
776
+ if (state.isServerRestart) {
777
+ log('Server restart detected, suppressing reload. HMR will reconnect automatically.');
778
+ resetState();
779
+ // \u4E0D\u5237\u65B0\u9875\u9762\uFF01Vite \u5BA2\u6237\u7AEF\u7684 WebSocket close \u5904\u7406\u51FD\u6570
780
+ // \u5728 await waitForSuccessfulPing() \u4E4B\u540E\u8C03\u7528\u4E86\u6211\u4EEC\u7684\u51FD\u6570\uFF0C
781
+ // \u6211\u4EEC\u4E0D\u8C03\u7528 location.reload()\uFF0C\u51FD\u6570\u76F4\u63A5\u8FD4\u56DE\u3002
782
+ // Vite \u5BA2\u6237\u7AEF\u4E0D\u4F1A\u518D\u505A\u5176\u4ED6\u4E8B\u60C5\uFF0C\u4F46\u65B0\u7684 Vite \u670D\u52A1\u5668\u5DF2\u7ECF\u542F\u52A8\uFF0C
783
+ // Vite \u5BA2\u6237\u7AEF\u4F1A\u901A\u8FC7 WebSocket \u91CD\u8FDE\u673A\u5236\u81EA\u52A8\u6062\u590D HMR\u3002
784
+ return;
785
+ }
786
+ // \u975E\u670D\u52A1\u5668\u91CD\u542F\u573A\u666F\uFF0C\u6B63\u5E38\u5237\u65B0
787
+ log('Non-restart reload, executing normally');
788
+ location.reload();
789
+ };
790
+
791
+ // ============================================
792
+ // \u62E6\u622A WebSocket \u6784\u9020\u51FD\u6570
793
+ // ============================================
794
+ var OriginalWebSocket = window.WebSocket;
795
+
796
+ function isViteHmrWebSocket(url) {
797
+ if (typeof url !== 'string') return false;
798
+ return url.includes('/__vite_hmr') || url.includes('?token=');
799
+ }
800
+
801
+ function createWsProxy(ws) {
802
+ var originalAddEventListener = ws.addEventListener.bind(ws);
803
+ var originalRemoveEventListener = ws.removeEventListener.bind(ws);
804
+
805
+ ws.addEventListener = function(type, listener, options) {
806
+ if (type === 'message') {
807
+ var wrappedListener = function(event) {
808
+ var intercepted = handleWsMessage(event);
809
+ if (!intercepted) {
810
+ listener.call(ws, event);
811
+ }
812
+ };
813
+ listener.__smartReloadWrapped__ = wrappedListener;
814
+ return originalAddEventListener(type, wrappedListener, options);
815
+ }
816
+ return originalAddEventListener(type, listener, options);
817
+ };
818
+
819
+ ws.removeEventListener = function(type, listener, options) {
820
+ if (type === 'message' && listener.__smartReloadWrapped__) {
821
+ return originalRemoveEventListener(type, listener.__smartReloadWrapped__, options);
822
+ }
823
+ return originalRemoveEventListener(type, listener, options);
824
+ };
825
+
826
+ var originalOnMessage = null;
827
+ var onMessageDescriptor = Object.getOwnPropertyDescriptor(WebSocket.prototype, 'onmessage') ||
828
+ Object.getOwnPropertyDescriptor(ws, 'onmessage');
829
+
830
+ if (onMessageDescriptor) {
831
+ Object.defineProperty(ws, 'onmessage', {
832
+ get: function() {
833
+ return originalOnMessage;
834
+ },
835
+ set: function(handler) {
836
+ originalOnMessage = handler;
837
+ var wrappedHandler = function(event) {
838
+ var intercepted = handleWsMessage(event);
839
+ if (!intercepted && handler) {
840
+ handler.call(ws, event);
841
+ }
842
+ };
843
+ if (onMessageDescriptor.set) {
844
+ onMessageDescriptor.set.call(ws, wrappedHandler);
845
+ }
846
+ },
847
+ configurable: true
848
+ });
849
+ }
850
+
851
+ originalAddEventListener('close', function(event) {
852
+ handleWsClose(event);
853
+ });
854
+
855
+ originalAddEventListener('open', function() {
856
+ handleWsOpen();
857
+ });
858
+
859
+ state.wsIntercepted = true;
860
+ log('Vite HMR WebSocket intercepted');
861
+
862
+ return ws;
863
+ }
864
+
865
+ window.WebSocket = function SmartReloadWebSocket(url, protocols) {
866
+ var ws;
867
+ if (protocols !== undefined) {
868
+ ws = new OriginalWebSocket(url, protocols);
869
+ } else {
870
+ ws = new OriginalWebSocket(url);
871
+ }
872
+
873
+ if (isViteHmrWebSocket(url)) {
874
+ return createWsProxy(ws);
875
+ }
876
+
877
+ return ws;
878
+ };
879
+
880
+ window.WebSocket.prototype = OriginalWebSocket.prototype;
881
+ window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
882
+ window.WebSocket.OPEN = OriginalWebSocket.OPEN;
883
+ window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
884
+ window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
885
+
886
+ // ============================================
887
+ // WebSocket \u6D88\u606F\u5904\u7406
888
+ // ============================================
889
+ function handleWsMessage(event) {
890
+ var data;
891
+ try {
892
+ data = JSON.parse(event.data);
893
+ } catch (e) {
894
+ return false;
895
+ }
896
+
897
+ // \u5904\u7406 full-reload \u6D88\u606F
898
+ if (data.type === 'full-reload') {
899
+ // \u5982\u679C\u5728\u670D\u52A1\u5668\u91CD\u542F\u6A21\u5F0F\uFF0C\u62E6\u622A\u6240\u6709 full-reload
900
+ if (state.isServerRestart) {
901
+ log('Suppressed full-reload message during server restart');
902
+ return true;
903
+ }
904
+
905
+ log('Intercepted full-reload, path:', data.path || '(none)');
906
+
907
+ // \u8FDB\u5165\u68C0\u6D4B\u6A21\u5F0F\uFF1A\u7B49\u5F85\u770B WebSocket \u662F\u5426\u65AD\u5F00
908
+ state.detectingReloadType = true;
909
+
910
+ // \u5982\u679C\u7A97\u53E3\u671F\u5185 WebSocket \u6CA1\u6709\u65AD\u5F00\uFF0C\u8BF4\u660E\u662F\u771F\u6B63\u7684\u6A21\u5757\u53D8\u66F4
911
+ state.reloadTimer = setTimeout(function() {
912
+ if (state.detectingReloadType && !state.isServerRestart) {
913
+ log('WebSocket still connected after ' + DISCONNECT_DETECT_WINDOW + 'ms - real module change, executing reload');
914
+ state.detectingReloadType = false;
915
+ executeFullReload();
916
+ }
917
+ }, DISCONNECT_DETECT_WINDOW);
918
+
919
+ return true;
920
+ }
921
+
922
+ // \u5904\u7406 connected \u6D88\u606F
923
+ if (data.type === 'connected') {
924
+ if (state.isServerRestart) {
925
+ log('HMR reconnected after server restart! Page was NOT reloaded.');
926
+ resetState();
927
+ }
928
+ return false;
929
+ }
930
+
931
+ return false;
932
+ }
933
+
934
+ // ============================================
935
+ // WebSocket \u8FDE\u63A5\u4E8B\u4EF6\u5904\u7406
936
+ // ============================================
937
+ function handleWsClose(event) {
938
+ log('WebSocket closed, code:', event.code, 'wasClean:', event.wasClean);
939
+
940
+ // \u573A\u666F1\uFF1A\u6536\u5230 full-reload \u540E WebSocket \u65AD\u5F00 \u2192 \u670D\u52A1\u5668\u91CD\u542F
941
+ if (state.detectingReloadType) {
942
+ log('Entering server restart mode: full-reload followed by disconnect');
943
+ state.isServerRestart = true;
944
+ state.detectingReloadType = false;
945
+ if (state.reloadTimer) {
946
+ clearTimeout(state.reloadTimer);
947
+ state.reloadTimer = null;
948
+ }
949
+ return;
950
+ }
951
+
952
+ // \u573A\u666F2\uFF1AWebSocket \u76F4\u63A5\u65AD\u5F00\uFF08\u975E\u6B63\u5E38\u5173\u95ED\uFF09
953
+ if (!state.isServerRestart && !event.wasClean) {
954
+ log('Entering server restart mode: unexpected disconnect');
955
+ state.isServerRestart = true;
956
+ }
957
+ }
958
+
959
+ function handleWsOpen() {
960
+ log('WebSocket opened');
961
+ }
962
+
963
+ // ============================================
964
+ // \u66B4\u9732 API \u4F9B\u8C03\u8BD5\u4F7F\u7528
965
+ // ============================================
966
+ window.__smartReloadState__ = state;
967
+ window.__smartReloadForceReload__ = function() {
968
+ log('Force reload triggered by user');
969
+ resetState();
970
+ location.reload();
971
+ };
972
+
973
+ log('Smart Reload initialized');
974
+ })();
975
+ </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:t}]}},transform(e,r){if(!r.includes("vite/dist/client/client.mjs"))return null;let o=e.replace(/location\.reload\(\)/g,"(window.__smartReload__ ? window.__smartReload__() : location.reload())");return o!==e?{code:o,map:null}:null}}}function y(n={}){let{designWidth:t=375,maxWidth:e=750,baseFontSize:r=12,minRootSize:o=12,maxRootSize:i=24}=n;return {name:"vite-plugin-taro-style-adapter",apply:"serve",transformIndexHtml(s){let l=`
976
+ <script data-taro-flexible="true">
977
+ (function() {
978
+ var designWidth = ${t};
979
+ var maxWidth = ${e};
980
+ var baseFontSize = ${r};
981
+ var minRootSize = ${o};
982
+ var maxRootSize = ${i};
983
+
984
+ function setRootFontSize() {
985
+ var docEl = document.documentElement;
986
+ var clientWidth = docEl.clientWidth;
987
+
988
+ // \u9650\u5236\u6700\u5927\u5BBD\u5EA6
989
+ if (clientWidth > maxWidth) {
990
+ clientWidth = maxWidth;
991
+ }
992
+
993
+ // \u8BA1\u7B97\u6839\u5B57\u53F7: (\u5C4F\u5E55\u5BBD\u5EA6 / \u8BBE\u8BA1\u7A3F\u5BBD\u5EA6) * \u57FA\u51C6\u5B57\u53F7
994
+ var fontSize = (clientWidth / designWidth) * baseFontSize;
995
+
996
+ // \u5E94\u7528\u6700\u5C0F/\u6700\u5927\u9650\u5236
997
+ if (fontSize < minRootSize) {
998
+ fontSize = minRootSize;
999
+ } else if (fontSize > maxRootSize) {
1000
+ fontSize = maxRootSize;
1001
+ }
1002
+
1003
+ docEl.style.fontSize = fontSize + 'px';
1004
+ }
1005
+
1006
+ setRootFontSize();
1007
+
1008
+ // \u76D1\u542C\u7A97\u53E3\u53D8\u5316
1009
+ window.addEventListener('resize', setRootFontSize);
1010
+ window.addEventListener('orientationchange', setRootFontSize);
1011
+
1012
+ // \u9875\u9762\u663E\u793A\u65F6\u91CD\u65B0\u8BA1\u7B97\uFF08\u89E3\u51B3\u67D0\u4E9B\u6D4F\u89C8\u5668\u7684 bug\uFF09
1013
+ document.addEventListener('DOMContentLoaded', setRootFontSize);
1014
+ })();
1015
+ </script>
1016
+ `;return s.replace("</head>",`${l}
710
1017
  <style data-taro-adapter="true">
711
1018
  /* \u4EC5 H5 \u751F\u6548\uFF1A\u9690\u85CF Taro \u9875\u9762\u5BB9\u5668\u6EDA\u52A8\u6761\uFF0C\u4F46\u4ECD\u53EF\u6EDA\u52A8 */
712
1019
  .taro_page {
@@ -733,6 +1040,24 @@ if (typeof window !== 'undefined') {
733
1040
  height: 0;
734
1041
  display: none; /* Chrome/Safari */
735
1042
  }
1043
+
1044
+ /*
1045
+ * \u4FEE\u590D Taro Image \u7EC4\u4EF6\u5728 H5 \u4E0B\u7684\u5C3A\u5BF8\u95EE\u9898
1046
+ *
1047
+ * \u95EE\u9898\uFF1ATaro Image \u7EC4\u4EF6\u4F7F\u7528 aspectFit \u6A21\u5F0F\u65F6\uFF0C\u5185\u90E8 img \u4F7F\u7528 max-width/max-height: 100%
1048
+ * \u5BFC\u81F4\u5C0F\u5C3A\u5BF8\u56FE\u7247\uFF08\u5982 SVG \u56FE\u6807\uFF09\u65E0\u6CD5\u6309\u6307\u5B9A\u5C3A\u5BF8\u663E\u793A\uFF0C\u53EA\u663E\u793A\u539F\u59CB\u5C3A\u5BF8
1049
+ *
1050
+ * \u89E3\u51B3\uFF1A\u8BA9 img \u586B\u6EE1 taro-image-core \u5BB9\u5668\uFF0C\u7531\u5BB9\u5668\u63A7\u5236\u5C3A\u5BF8
1051
+ */
1052
+ taro-image-core img.taro-img__mode-aspectfit {
1053
+ width: 100%;
1054
+ height: 100%;
1055
+ max-width: none;
1056
+ max-height: none;
1057
+ position: static;
1058
+ transform: none;
1059
+ object-fit: contain;
1060
+ }
736
1061
  </style>
737
- </head>`)}}}function k(t={}){let{additional:e=[],autoInjectTaroApp:n=true,autoInjectVite:r=true}=t,s={},a=new Set(e);return n&&Object.keys(process.env).forEach(o=>{o.startsWith("TARO_APP_")&&a.add(o);}),r&&Object.keys(process.env).forEach(o=>{o.startsWith("VITE_")&&a.add(o);}),a.forEach(o=>{let u=process.env[o]||"";s[`process.env.${o}`]=JSON.stringify(u);}),s}function L(){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 B(t={}){let e=[m(),h(),v(),b()];return H__default.default.env.WORKSPACE_GIT_REPO&&e.push(_()),e}exports.componentIdPlugin=h;exports.default=B;exports.editorBridgePlugin=v;exports.injectAmasterEnv=L;exports.injectTaroEnv=k;exports.routesExposePlugin=b;exports.taroStyleAdapterPlugin=m;//# sourceMappingURL=index.cjs.map
1062
+ </head>`)}}}function g(n={}){let{ratio:t=2}=n;return {postcssPlugin:"postcss-rpx2px",Declaration(e){e.value.includes("rpx")&&(e.value=e.value.replace(/(-?\d*\.?\d+)rpx/gi,(r,o)=>{let i=parseFloat(o)/t;return i===0?"0":`${i}px`}));}}}g.postcss=true;function W(n={}){let{additional:t=[],autoInjectTaroApp:e=true,autoInjectVite:r=true}=n,o={},i=new Set(t);return e&&Object.keys(process.env).forEach(s=>{s.startsWith("TARO_APP_")&&i.add(s);}),r&&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 q(){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 D(n={}){let t=[y(n.styleAdapter),{name:"dev-postcss-rpx2px-plugin",apply:"serve",config(e){T__default.default.env.TARO_ENV==="h5"&&typeof e.css?.postcss=="object"&&e.css?.postcss.plugins?.unshift(g());}},v(),S(),b(),O()];return T__default.default.env.WORKSPACE_GIT_REPO&&t.push(_()),t}exports.componentIdPlugin=v;exports.default=D;exports.editorBridgePlugin=S;exports.injectAmasterEnv=q;exports.injectTaroEnv=W;exports.routesExposePlugin=b;exports.rpx2pxPlugin=g;exports.smartReloadPlugin=O;exports.taroStyleAdapterPlugin=y;//# sourceMappingURL=index.cjs.map
738
1063
  //# sourceMappingURL=index.cjs.map