vite-userscript-plugin 1.9.2 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var te=Object.create;var b=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var ie=(e,t)=>{for(var r in t)b(e,r,{get:t[r],enumerable:!0})},_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ne(t))!oe.call(e,s)&&s!==r&&b(e,s,{get:()=>t[s],enumerable:!(n=re(t,s))||n.enumerable});return e};var v=(e,t,r)=>(r=e!=null?te(se(e)):{},_(t||!e||!e.__esModule?b(r,"default",{value:e,enumerable:!0}):r,e)),ae=e=>_(b({},"__esModule",{value:!0}),e);var me={};ie(me,{default:()=>B});module.exports=ae(me);var c=require("fs"),N=require("http"),p=require("path"),V=v(require("get-port"),1),H=v(require("open"),1),S=v(require("picocolors"),1),W=v(require("serve-handler"),1),q=require("vite"),z=require("websocket");var f=class{constructor(t){this.config=t;this.addHomepageMeta(),this.maxKeyLength=Math.max(...Object.keys(this.config).map(r=>r.length))+1}header=[];maxKeyLength;addHomepageMeta(){let t=this.config.homepage??this.config.homepageURL;t&&(this.config.updateURL=new URL(`${this.config.name}.meta.js`,t).href,this.config.downloadURL=new URL(`${this.config.name}.user.js`,t).href)}addSpaces(t){return" ".repeat(this.maxKeyLength-t.length)}addMetadata(t,r){r=Array.isArray(r)?r.join(" "):r===!0?"":r,this.header.push(`// @${t}${this.addSpaces(t)}${r}`)}generate(){for(let[t,r]of Object.entries(this.config))if(Array.isArray(r))r.forEach(n=>this.addMetadata(t,n));else{if(r===void 0)continue;this.addMetadata(t,r)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
- `)}};var O=require("path"),E=require("url"),pe={},L=(0,O.dirname)((0,E.fileURLToPath)(pe.url)),j="vite-userscript-plugin",R='console.warn("__STYLE__")',D=new RegExp(/\.(t|j)sx?$/),C=new RegExp(/\.(s[ac]|c|le)ss$/),le=["setValue","getValue","deleteValue","listValues","setClipboard","addStyle","addElement","addValueChangeListener","removeValueChangeListener","registerMenuCommand","unregisterMenuCommand","download","getTab","getTabs","saveTab","openInTab","notification","getResourceURL","getResourceText","xmlhttpRequest","log","info"],ce=["unsafeWindow","window.onurlchange","window.focus","window.close"],g=le.map(e=>[`GM_${e}`,`GM.${e}`]).flat();g.push(...ce);var k=require("vite");function U(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function h({minify:e,file:t,name:r,loader:n}){let{code:s}=await(0,k.transformWithEsbuild)(t,r,{minify:e,loader:n,sourcemap:!1,legalComments:"none"});return s}function A(e){let t=[];for(let r of g)e.indexOf(r)!==-1&&t.push(r);return t}var G=class{styles=new Map;async add(t,r,n){let s=await h({name:t,file:r,minify:n,loader:"css"});return this.styles.set(t,s.replace(`
3
- `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(t){let r=[];for(let n of t){let s=this.styles.get(n);s&&r.push([n,s])}this.styles.clear(),r.forEach(n=>this.styles.set(...n))}},$=new G;function B(e){try{let t,r,n=null,s=(0,q.createLogger)("info",{prefix:`[${j}]`,allowClearScreen:!0}),y=(0,N.createServer)((o,i)=>(0,W.default)(o,i,{public:t.build.outDir})),K=z.server;return new K({httpServer:y}).on("request",o=>{n=o.accept(null,o.origin)}),{name:j,apply:"build",config(){return{build:{target:"esnext",minify:!1,lib:{entry:e.entry,name:e.header.name,formats:["iife"],fileName:()=>`${e.header.name}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(o){t=o,r=o.build.watch??!1,e.entry=(0,p.resolve)(o.root,e.entry),Array.from(["match","require","include","exclude","resource","connect"]).forEach(i=>{let a=e.header[i];e.header[i]=U(a)}),e.server={port:await(0,V.default)(),open:!1,...e.server}},async transform(o,i){let a=o;return C.test(i)&&(a=await $.add(i,a,!r)),i.includes(e.entry)&&(a=o+R),{code:a,map:null}},generateBundle(o,i){for(let a of Object.values(i)){if(a.type==="asset")continue;let m=Object.keys(a.modules).filter(u=>C.test(u));m.length&&$.merge(m)}},async writeBundle(o,i){let{open:a,port:m}=e.server,u=o.sanitizeFileName(e.header.name),I=`${u}.user.js`,F=`${u}.proxy.user.js`,J=`${u}.meta.js`;for(let[d]of Object.entries(i))if(D.test(d)){let w=t.root,x=t.build.outDir,M=(0,p.resolve)(w,x,d),Y=(0,p.resolve)(w,x,I),Q=(0,p.resolve)(w,x,F),X=(0,p.resolve)(w,x,J),P=(0,p.resolve)(L,`ws-${u}.js`);try{let l=(0,c.readFileSync)(M,"utf8");if(l=l.replace(R,`${$.inject()}`),l=await h({minify:!r,file:l,name:d,loader:"js"}),e.header.grant=U(r?g:[...A(l),...e.header.grant??[]]),r){let Z=(0,c.readFileSync)((0,p.resolve)(L,"ws.js"),"utf8"),ee=await h({minify:!r,file:Z.replace("__WS__",`ws://localhost:${m}`),name:P,loader:"js"});(0,c.writeFileSync)(P,ee),(0,c.writeFileSync)(Q,new f({...e.header,require:[...e.header.require??[],"file://"+P,"file://"+M]}).generate())}let T=new f(e.header).generate();(0,c.writeFileSync)(M,l),(0,c.writeFileSync)(X,T),(0,c.writeFileSync)(Y,`${T}
1
+ "use strict";var re=Object.create;var v=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var r in t)v(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ne(t))!ie.call(e,n)&&n!==r&&v(e,n,{get:()=>t[n],enumerable:!(s=se(t,n))||s.enumerable});return e};var j=(e,t,r)=>(r=e!=null?re(oe(e)):{},E(t||!e||!e.__esModule?v(r,"default",{value:e,enumerable:!0}):r,e)),le=e=>E(v({},"__esModule",{value:!0}),e);var ue={};ae(ue,{default:()=>K});module.exports=le(ue);var c=require("fs"),V=require("http"),p=require("path"),H=j(require("get-port"),1),W=j(require("open"),1),M=j(require("picocolors"),1),q=j(require("serve-handler"),1),z=require("vite"),B=require("websocket");var g=class{constructor(t){this.config=t;this.addHomepageMeta(),this.maxKeyLength=Math.max(...Object.keys(this.config).map(r=>r.length))+1}header=[];maxKeyLength;addHomepageMeta(){let t=this.config.homepage??this.config.homepageURL;t&&(this.config.updateURL=new URL(`${this.config.name}.meta.js`,t).href,this.config.downloadURL=new URL(`${this.config.name}.user.js`,t).href)}addSpaces(t){return" ".repeat(this.maxKeyLength-t.length)}addMetadata(t,r){r=Array.isArray(r)?r.join(" "):r===!0?"":r,this.header.push(`// @${t}${this.addSpaces(t)}${r}`)}generate(){for(let[t,r]of Object.entries(this.config))if(Array.isArray(r))r.forEach(s=>this.addMetadata(t,s));else{if(r===void 0)continue;this.addMetadata(t,r)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
+ `)}};var _=require("path"),D=require("url"),me={},L=(0,_.dirname)((0,D.fileURLToPath)(me.url)),$="vite-userscript-plugin",R='console.warn("__STYLE__")',N=new RegExp(/\.(t|j)sx?$/),C=new RegExp(/\.(s[ac]|c|le)ss$/),ce=["setValue","getValue","deleteValue","listValues","setClipboard","addStyle","addElement","addValueChangeListener","removeValueChangeListener","registerMenuCommand","unregisterMenuCommand","download","getTab","getTabs","saveTab","openInTab","notification","getResourceURL","getResourceText","xmlhttpRequest","log","info"],pe=["unsafeWindow","window.onurlchange","window.focus","window.close"],h=ce.map(e=>[`GM_${e}`,`GM.${e}`]).flat();h.push(...pe);var k=require("vite");function O(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function y({minify:e,file:t,name:r,loader:s},n){let{code:d}=await(0,k.transformWithEsbuild)(t,r,{minify:e,loader:s,sourcemap:!1,legalComments:"none",...n});return d}function A(e){let t=[];for(let r of h)e.indexOf(r)!==-1&&t.push(r);return t}var U=class{styles=new Map;async add(t,r,s){let n=await y({name:t,file:r,minify:s,loader:"css"});return this.styles.set(t,n.replace(`
3
+ `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(t){let r=[];for(let s of t){let n=this.styles.get(s);n&&r.push([s,n])}this.styles.clear(),r.forEach(s=>this.styles.set(...s))}},S=new U;function K(e){try{let t,r,s=null,n=e.fileName??e.header.name,d=(0,z.createLogger)("info",{prefix:`[${$}]`,allowClearScreen:!0}),w=(0,V.createServer)((o,i)=>(0,q.default)(o,i,{public:t.build.outDir})),I=B.server;return new I({httpServer:w}).on("request",o=>{s=o.accept(null,o.origin)}),{name:$,apply:"build",config(){return{build:{target:"esnext",minify:!1,lib:{name:n,entry:e.entry,formats:["iife"],fileName:()=>`${n}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(o){t=o,r=o.build.watch??!1,e.entry=(0,p.resolve)(o.root,e.entry),Array.from(["match","require","include","exclude","resource","connect"]).forEach(i=>{let a=e.header[i];e.header[i]=O(a)}),e.server={port:await(0,H.default)(),open:!1,...e.server}},async transform(o,i){let a=o;return C.test(i)&&(a=await S.add(i,a,!r)),i.includes(e.entry)&&(a=o+R),{code:a,map:null}},generateBundle(o,i){for(let a of Object.values(i)){if(a.type==="asset")continue;let m=Object.keys(a.modules).filter(u=>C.test(u));m.length&&S.merge(m)}},async writeBundle(o,i){let{open:a,port:m}=e.server,u=o.sanitizeFileName(n),J=`${u}.user.js`,G=`${u}.proxy.user.js`,Y=`${u}.meta.js`;for(let[f]of Object.entries(i))if(N.test(f)){let x=t.root,b=t.build.outDir,P=(0,p.resolve)(x,b,f),Q=(0,p.resolve)(x,b,J),X=(0,p.resolve)(x,b,G),Z=(0,p.resolve)(x,b,Y),T=(0,p.resolve)(L,`ws-${u}.js`);try{let l=(0,c.readFileSync)(P,"utf8");if(l=l.replace(R,`${S.inject()}`),l=await y({minify:!r,file:l,name:f,loader:"js"},e.esbuildTransformOptions),e.header.grant=O(r?h:[...A(l),...e.header.grant??[]]),r){let ee=(0,c.readFileSync)((0,p.resolve)(L,"ws.js"),"utf8"),te=await y({minify:!r,file:ee.replace("__WS__",`ws://localhost:${m}`),name:T,loader:"js"},e.esbuildTransformOptions);(0,c.writeFileSync)(T,te),(0,c.writeFileSync)(X,new g({...e.header,require:[...e.header.require??[],"file://"+T,"file://"+P]}).generate())}let F=new g(e.header).generate();(0,c.writeFileSync)(P,l),(0,c.writeFileSync)(Z,F),(0,c.writeFileSync)(Q,`${F}
4
4
 
5
- ${l}`)}catch(l){console.log(l)}}if(r&&!y.listening){let d=`http://localhost:${m}`;y.listen(m,()=>{s.clearScreen("info"),s.info(S.default.bold(`${S.default.cyan(">>> [vite-userscript-plugin]")} ${S.default.gray(d)}`))}),a&&await(0,H.default)(`${d}/${F}`)}else r||(y.close(),process.exit(0))},buildEnd(){r&&(s.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}catch(t){return console.error(t),{name:j}}}
5
+ ${l}`)}catch(l){console.log(l)}}if(r&&!w.listening){let f=`http://localhost:${m}`;w.listen(m,()=>{d.clearScreen("info"),d.info(M.default.bold(`${M.default.cyan(">>> [vite-userscript-plugin]")} ${M.default.gray(f)}`))}),a&&await(0,W.default)(`${f}/${G}`)}else r||(w.close(),process.exit(0))},buildEnd(){r&&(d.clearScreen("info"),s&&s.sendUTF(JSON.stringify({message:"reload"})))}}}catch(t){return console.error(t),{name:$}}}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { PluginOption } from 'vite';
1
+ import { EsbuildTransformOptions, PluginOption } from 'vite';
2
2
 
3
3
  declare const GM: readonly ["setValue", "getValue", "deleteValue", "listValues", "setClipboard", "addStyle", "addElement", "addValueChangeListener", "removeValueChangeListener", "registerMenuCommand", "unregisterMenuCommand", "download", "getTab", "getTabs", "saveTab", "openInTab", "notification", "getResourceURL", "getResourceText", "xmlhttpRequest", "log", "info"];
4
4
  declare const GMwindow: readonly ["unsafeWindow", "window.onurlchange", "window.focus", "window.close"];
@@ -154,6 +154,10 @@ interface UserscriptPluginConfig {
154
154
  * Path of userscript entry.
155
155
  */
156
156
  entry: string;
157
+ /**
158
+ * Userscript file name.
159
+ */
160
+ fileName?: string;
157
161
  /**
158
162
  * Userscript header config.
159
163
  *
@@ -164,6 +168,18 @@ interface UserscriptPluginConfig {
164
168
  * Server config.
165
169
  */
166
170
  server?: ServerConfig;
171
+ /**
172
+ * Override default esbuild transform options.
173
+ *
174
+ * @default
175
+ * ```json
176
+ * {
177
+ * "minify": true,
178
+ * "legalComments": "none"
179
+ * }
180
+ * ```
181
+ */
182
+ esbuildTransformOptions?: Omit<EsbuildTransformOptions, 'format' | 'target' | 'loader' | 'sourcemap'>;
167
183
  }
168
184
 
169
185
  declare function UserscriptPlugin(config: UserscriptPluginConfig): PluginOption;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { PluginOption } from 'vite';
1
+ import { EsbuildTransformOptions, PluginOption } from 'vite';
2
2
 
3
3
  declare const GM: readonly ["setValue", "getValue", "deleteValue", "listValues", "setClipboard", "addStyle", "addElement", "addValueChangeListener", "removeValueChangeListener", "registerMenuCommand", "unregisterMenuCommand", "download", "getTab", "getTabs", "saveTab", "openInTab", "notification", "getResourceURL", "getResourceText", "xmlhttpRequest", "log", "info"];
4
4
  declare const GMwindow: readonly ["unsafeWindow", "window.onurlchange", "window.focus", "window.close"];
@@ -154,6 +154,10 @@ interface UserscriptPluginConfig {
154
154
  * Path of userscript entry.
155
155
  */
156
156
  entry: string;
157
+ /**
158
+ * Userscript file name.
159
+ */
160
+ fileName?: string;
157
161
  /**
158
162
  * Userscript header config.
159
163
  *
@@ -164,6 +168,18 @@ interface UserscriptPluginConfig {
164
168
  * Server config.
165
169
  */
166
170
  server?: ServerConfig;
171
+ /**
172
+ * Override default esbuild transform options.
173
+ *
174
+ * @default
175
+ * ```json
176
+ * {
177
+ * "minify": true,
178
+ * "legalComments": "none"
179
+ * }
180
+ * ```
181
+ */
182
+ esbuildTransformOptions?: Omit<EsbuildTransformOptions, 'format' | 'target' | 'loader' | 'sourcemap'>;
167
183
  }
168
184
 
169
185
  declare function UserscriptPlugin(config: UserscriptPluginConfig): PluginOption;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import{readFileSync as _,writeFileSync as h}from"fs";import{createServer as I}from"http";import{resolve as c}from"path";import J from"get-port";import Y from"open";import C from"picocolors";import Q from"serve-handler";import{createLogger as X}from"vite";import{server as Z}from"websocket";var d=class{constructor(r){this.config=r;this.addHomepageMeta(),this.maxKeyLength=Math.max(...Object.keys(this.config).map(e=>e.length))+1}header=[];maxKeyLength;addHomepageMeta(){let r=this.config.homepage??this.config.homepageURL;r&&(this.config.updateURL=new URL(`${this.config.name}.meta.js`,r).href,this.config.downloadURL=new URL(`${this.config.name}.user.js`,r).href)}addSpaces(r){return" ".repeat(this.maxKeyLength-r.length)}addMetadata(r,e){e=Array.isArray(e)?e.join(" "):e===!0?"":e,this.header.push(`// @${r}${this.addSpaces(r)}${e}`)}generate(){for(let[r,e]of Object.entries(this.config))if(Array.isArray(e))e.forEach(n=>this.addMetadata(r,n));else{if(e===void 0)continue;this.addMetadata(r,e)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
- `)}};import{dirname as W}from"path";import{fileURLToPath as q}from"url";var S=W(q(import.meta.url)),b="vite-userscript-plugin",M='console.warn("__STYLE__")',F=new RegExp(/\.(t|j)sx?$/),P=new RegExp(/\.(s[ac]|c|le)ss$/),z=["setValue","getValue","deleteValue","listValues","setClipboard","addStyle","addElement","addValueChangeListener","removeValueChangeListener","registerMenuCommand","unregisterMenuCommand","download","getTab","getTabs","saveTab","openInTab","notification","getResourceURL","getResourceText","xmlhttpRequest","log","info"],B=["unsafeWindow","window.onurlchange","window.focus","window.close"],f=z.map(t=>[`GM_${t}`,`GM.${t}`]).flat();f.push(...B);import{transformWithEsbuild as K}from"vite";function L(t){return[...new Set(Array.isArray(t)?t:t?[t]:[])]}async function g({minify:t,file:r,name:e,loader:n}){let{code:a}=await K(r,e,{minify:t,loader:n,sourcemap:!1,legalComments:"none"});return a}function T(t){let r=[];for(let e of f)t.indexOf(e)!==-1&&r.push(e);return r}var R=class{styles=new Map;async add(r,e,n){let a=await g({name:r,file:e,minify:n,loader:"css"});return this.styles.set(r,a.replace(`
3
- `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(r){let e=[];for(let n of r){let a=this.styles.get(n);a&&e.push([n,a])}this.styles.clear(),e.forEach(n=>this.styles.set(...n))}},v=new R;function ee(t){try{let r,e,n=null,a=X("info",{prefix:`[${b}]`,allowClearScreen:!0}),y=I((s,o)=>Q(s,o,{public:r.build.outDir})),O=Z;return new O({httpServer:y}).on("request",s=>{n=s.accept(null,s.origin)}),{name:b,apply:"build",config(){return{build:{target:"esnext",minify:!1,lib:{entry:t.entry,name:t.header.name,formats:["iife"],fileName:()=>`${t.header.name}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(s){r=s,e=s.build.watch??!1,t.entry=c(s.root,t.entry),Array.from(["match","require","include","exclude","resource","connect"]).forEach(o=>{let i=t.header[o];t.header[o]=L(i)}),t.server={port:await J(),open:!1,...t.server}},async transform(s,o){let i=s;return P.test(o)&&(i=await v.add(o,i,!e)),o.includes(t.entry)&&(i=s+M),{code:i,map:null}},generateBundle(s,o){for(let i of Object.values(o)){if(i.type==="asset")continue;let p=Object.keys(i.modules).filter(m=>P.test(m));p.length&&v.merge(p)}},async writeBundle(s,o){let{open:i,port:p}=t.server,m=s.sanitizeFileName(t.header.name),E=`${m}.user.js`,U=`${m}.proxy.user.js`,D=`${m}.meta.js`;for(let[u]of Object.entries(o))if(F.test(u)){let w=r.root,x=r.build.outDir,j=c(w,x,u),k=c(w,x,E),A=c(w,x,U),N=c(w,x,D),$=c(S,`ws-${m}.js`);try{let l=_(j,"utf8");if(l=l.replace(M,`${v.inject()}`),l=await g({minify:!e,file:l,name:u,loader:"js"}),t.header.grant=L(e?f:[...T(l),...t.header.grant??[]]),e){let V=_(c(S,"ws.js"),"utf8"),H=await g({minify:!e,file:V.replace("__WS__",`ws://localhost:${p}`),name:$,loader:"js"});h($,H),h(A,new d({...t.header,require:[...t.header.require??[],"file://"+$,"file://"+j]}).generate())}let G=new d(t.header).generate();h(j,l),h(N,G),h(k,`${G}
1
+ import{readFileSync as E,writeFileSync as y}from"fs";import{createServer as J}from"http";import{resolve as c}from"path";import Y from"get-port";import Q from"open";import C from"picocolors";import X from"serve-handler";import{createLogger as Z}from"vite";import{server as ee}from"websocket";var d=class{constructor(r){this.config=r;this.addHomepageMeta(),this.maxKeyLength=Math.max(...Object.keys(this.config).map(e=>e.length))+1}header=[];maxKeyLength;addHomepageMeta(){let r=this.config.homepage??this.config.homepageURL;r&&(this.config.updateURL=new URL(`${this.config.name}.meta.js`,r).href,this.config.downloadURL=new URL(`${this.config.name}.user.js`,r).href)}addSpaces(r){return" ".repeat(this.maxKeyLength-r.length)}addMetadata(r,e){e=Array.isArray(e)?e.join(" "):e===!0?"":e,this.header.push(`// @${r}${this.addSpaces(r)}${e}`)}generate(){for(let[r,e]of Object.entries(this.config))if(Array.isArray(e))e.forEach(s=>this.addMetadata(r,s));else{if(e===void 0)continue;this.addMetadata(r,e)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
+ `)}};import{dirname as q}from"path";import{fileURLToPath as z}from"url";var M=q(z(import.meta.url)),v="vite-userscript-plugin",P='console.warn("__STYLE__")',G=new RegExp(/\.(t|j)sx?$/),T=new RegExp(/\.(s[ac]|c|le)ss$/),B=["setValue","getValue","deleteValue","listValues","setClipboard","addStyle","addElement","addValueChangeListener","removeValueChangeListener","registerMenuCommand","unregisterMenuCommand","download","getTab","getTabs","saveTab","openInTab","notification","getResourceURL","getResourceText","xmlhttpRequest","log","info"],K=["unsafeWindow","window.onurlchange","window.focus","window.close"],g=B.map(t=>[`GM_${t}`,`GM.${t}`]).flat();g.push(...K);import{transformWithEsbuild as I}from"vite";function L(t){return[...new Set(Array.isArray(t)?t:t?[t]:[])]}async function h({minify:t,file:r,name:e,loader:s},a){let{code:f}=await I(r,e,{minify:t,loader:s,sourcemap:!1,legalComments:"none",...a});return f}function F(t){let r=[];for(let e of g)t.indexOf(e)!==-1&&r.push(e);return r}var R=class{styles=new Map;async add(r,e,s){let a=await h({name:r,file:e,minify:s,loader:"css"});return this.styles.set(r,a.replace(`
3
+ `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(r){let e=[];for(let s of r){let a=this.styles.get(s);a&&e.push([s,a])}this.styles.clear(),e.forEach(s=>this.styles.set(...s))}},j=new R;function te(t){try{let r,e,s=null,a=t.fileName??t.header.name,f=Z("info",{prefix:`[${v}]`,allowClearScreen:!0}),w=J((n,o)=>X(n,o,{public:r.build.outDir})),_=ee;return new _({httpServer:w}).on("request",n=>{s=n.accept(null,n.origin)}),{name:v,apply:"build",config(){return{build:{target:"esnext",minify:!1,lib:{name:a,entry:t.entry,formats:["iife"],fileName:()=>`${a}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(n){r=n,e=n.build.watch??!1,t.entry=c(n.root,t.entry),Array.from(["match","require","include","exclude","resource","connect"]).forEach(o=>{let i=t.header[o];t.header[o]=L(i)}),t.server={port:await Y(),open:!1,...t.server}},async transform(n,o){let i=n;return T.test(o)&&(i=await j.add(o,i,!e)),o.includes(t.entry)&&(i=n+P),{code:i,map:null}},generateBundle(n,o){for(let i of Object.values(o)){if(i.type==="asset")continue;let p=Object.keys(i.modules).filter(m=>T.test(m));p.length&&j.merge(p)}},async writeBundle(n,o){let{open:i,port:p}=t.server,m=n.sanitizeFileName(a),D=`${m}.user.js`,O=`${m}.proxy.user.js`,N=`${m}.meta.js`;for(let[u]of Object.entries(o))if(G.test(u)){let x=r.root,b=r.build.outDir,$=c(x,b,u),k=c(x,b,D),A=c(x,b,O),V=c(x,b,N),S=c(M,`ws-${m}.js`);try{let l=E($,"utf8");if(l=l.replace(P,`${j.inject()}`),l=await h({minify:!e,file:l,name:u,loader:"js"},t.esbuildTransformOptions),t.header.grant=L(e?g:[...F(l),...t.header.grant??[]]),e){let H=E(c(M,"ws.js"),"utf8"),W=await h({minify:!e,file:H.replace("__WS__",`ws://localhost:${p}`),name:S,loader:"js"},t.esbuildTransformOptions);y(S,W),y(A,new d({...t.header,require:[...t.header.require??[],"file://"+S,"file://"+$]}).generate())}let U=new d(t.header).generate();y($,l),y(V,U),y(k,`${U}
4
4
 
5
- ${l}`)}catch(l){console.log(l)}}if(e&&!y.listening){let u=`http://localhost:${p}`;y.listen(p,()=>{a.clearScreen("info"),a.info(C.bold(`${C.cyan(">>> [vite-userscript-plugin]")} ${C.gray(u)}`))}),i&&await Y(`${u}/${U}`)}else e||(y.close(),process.exit(0))},buildEnd(){e&&(a.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}catch(r){return console.error(r),{name:b}}}export{ee as default};
5
+ ${l}`)}catch(l){console.log(l)}}if(e&&!w.listening){let u=`http://localhost:${p}`;w.listen(p,()=>{f.clearScreen("info"),f.info(C.bold(`${C.cyan(">>> [vite-userscript-plugin]")} ${C.gray(u)}`))}),i&&await Q(`${u}/${O}`)}else e||(w.close(),process.exit(0))},buildEnd(){e&&(f.clearScreen("info"),s&&s.sendUTF(JSON.stringify({message:"reload"})))}}}catch(r){return console.error(r),{name:v}}}export{te as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-userscript-plugin",
3
- "version": "1.9.2",
3
+ "version": "1.10.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.cjs",