vite-userscript-plugin 1.6.5 → 1.6.6

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/README.md CHANGED
@@ -4,14 +4,14 @@
4
4
  [![license](https://img.shields.io/github/license/crashmax-dev/vite-userscript-plugin)](./LICENCE)
5
5
  [![template](https://img.shields.io/github/package-json/v/crashmax-dev/vite-userscript-template?label=vite-userscript-template)](https://github.com/crashmax-dev/vite-userscript-template)
6
6
 
7
- > ⚡️ Tampermonkey userscript developing and build plugin based on [Vite](https://vitejs.dev).
7
+ > ⚡️ A plugin for developing and building a Tampermonkey userscript based on [Vite](https://vitejs.dev).
8
8
 
9
9
  ## Features
10
10
 
11
11
  - 🔥 Hot reloading after changing any files.
12
12
  - 🔧 Configure Tampermonkey's Userscript header.
13
- - 💨 Import all `grant` by default in development mode.
14
- - 📝 Automatically add used `grant` when building for production.
13
+ - 💨 Import all [`grant`](https://www.tampermonkey.net/documentation.php#_grant)'s to the header by default in development mode.
14
+ - 📝 Automatic addition of used [`grant`](https://www.tampermonkey.net/documentation.php#_grant)'s in the code when building for production.
15
15
  - 📦 Built-in Tampermonkey's TypeScript type definition.
16
16
 
17
17
  ## Install
@@ -43,7 +43,11 @@ export default defineConfig((config) => {
43
43
  header: {
44
44
  name,
45
45
  version,
46
- match: '*://example.com'
46
+ match: [
47
+ 'https://example.com',
48
+ 'https://example.org',
49
+ 'https://example.edu'
50
+ ]
47
51
  },
48
52
  server: {
49
53
  port: 3000
@@ -54,7 +58,7 @@ export default defineConfig((config) => {
54
58
  })
55
59
  ```
56
60
 
57
- ### Setup scripts
61
+ ### Setup NPM scripts
58
62
 
59
63
  ```json
60
64
  // package.json
@@ -66,7 +70,7 @@ export default defineConfig((config) => {
66
70
  }
67
71
  ```
68
72
 
69
- ### Setup TypeScript
73
+ ### Setup TypeScript [types](https://www.typescriptlang.org/tsconfig#types)
70
74
 
71
75
  ```json
72
76
  // tsconfig.json
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var te=Object.create;var g=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var ie=(e,t,r)=>t in e?g(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ae=(e,t)=>{for(var r in t)g(e,r,{get:t[r],enumerable:!0})},O=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ne(t))!oe.call(e,o)&&o!==r&&g(e,o,{get:()=>t[o],enumerable:!(n=re(t,o))||n.enumerable});return e};var h=(e,t,r)=>(r=e!=null?te(se(e)):{},O(t||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),le=e=>O(g({},"__esModule",{value:!0}),e);var d=(e,t,r)=>(ie(e,typeof t!="symbol"?t+"":t,r),r);var me={};ae(me,{default:()=>I});module.exports=le(me);var c=require("fs"),K=require("http"),a=require("path"),A=require("url"),H=h(require("get-port"),1),W=h(require("open"),1),_=h(require("picocolors"),1),q=h(require("sanitize-filename"),1),B=h(require("serve-handler"),1),N=require("vite"),z=require("websocket");var y=class{constructor(t){this.config=t;d(this,"header",[]);d(this,"configKeys");d(this,"maxKeyLength");this.downloadMeta(),this.configKeys=Object.keys(this.config),this.maxKeyLength=Math.max(...this.configKeys.map(r=>r.length))+1}downloadMeta(){let{name:t,homepage:r,updateURL:n,downloadURL:o}=this.config;r&&!n&&!o&&(this.config.updateURL=new URL(`${t}.meta.js`,r).href,this.config.downloadURL=new URL(`${t}.user.js`,r).href)}addSpaces(t){return" ".repeat(this.maxKeyLength-t.length)}addMetadata(t,r){let n=typeof r=="boolean";n&&!r||(r=n?"":`${this.addSpaces(t)}${r}`,this.header.push(`// @${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
- `)}};function E({entry:e,header:t}){return{build:{lib:{entry:e,name:t.name,formats:["iife"],fileName:()=>`${t.name}.js`},rollupOptions:{output:{extend:!0}}}}}var L='console.warn("__STYLE__")',k=new RegExp(/\.(t|j)sx?$/),M=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"],w=ce.map(e=>[`GM_${e}`,`GM.${e}`]).flat();w.push(...pe);var V=require("vite");function P(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function x({file:e,name:t,loader:r}){let{code:n}=await(0,V.transformWithEsbuild)(e,t,{loader:r,minify:!0,sourcemap:!1,legalComments:"none"});return n}function D(e){let t=[];for(let r of w)e.indexOf(r)!==-1&&t.push(r);return t}var G=class{constructor(){d(this,"styles",new Map)}async add(t,r){let n=await x({file:t,name:r,loader:"css"});return this.styles.set(r,n.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 o=this.styles.get(n);!o||r.push([n,o])}this.styles.clear(),r.forEach(n=>this.styles.set(...n))}},$=new G;var de={};function I(e){let t,r,n=null,o=(0,a.dirname)((0,A.fileURLToPath)(de.url)),S=(0,N.createLogger)("info",{prefix:"[vite-userscript-plugin]",allowClearScreen:!0}),v=(0,K.createServer)((s,i)=>(0,B.default)(s,i,{public:t.build.outDir})),J=z.server;return new J({httpServer:v}).on("request",s=>{n=s.accept(null,s.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return E(e)},async configResolved(s){t=s,r=s.build.watch??!1,e.entry=(0,a.resolve)(s.root,e.entry),e.header.name=(0,q.default)(e.header.name),Array.from(["match","require","include","exclude","resource","connect"]).forEach(i=>{let p=e.header[i];e.header[i]=P(p)}),e.server={port:await(0,H.default)(),open:!1,...e.server}},async transform(s,i){let p=s;return M.test(i)&&(p=await $.add(s,i)),i.includes(e.entry)&&(p=s+L),{code:p,map:null}},generateBundle(s,i){for(let[p,f]of Object.entries(i)){let u=Object.keys(f.modules).filter(C=>M.test(C));u.length&&$.merge(u)}},async writeBundle(s,i){let{open:p,port:f}=e.server,T=`${e.header.name}.user.js`,u=`${e.header.name}.proxy.user.js`,C=`${e.header.name}.meta.js`;for(let[m]of Object.entries(i))if(k.test(m)){let b=t.root,j=t.build.outDir,R=(0,a.resolve)(b,j,m),Y=(0,a.resolve)(b,j,T),Q=(0,a.resolve)(b,j,u),X=(0,a.resolve)(b,j,C),U=(0,a.resolve)(o,`ws-${e.header.name}.js`);try{let l=(0,c.readFileSync)(R,"utf8");if(l=l.replace(L,`${$.inject()}`),l=await x({file:l,name:m,loader:"js"}),e.header.grant=P(r?w:[...D(l),...e.header.grant??[]]),r){let Z=(0,c.readFileSync)((0,a.resolve)(o,"ws.js"),"utf8"),ee=await x({file:Z.replace("__WS__",`ws://localhost:${f}`),name:U,loader:"js"});(0,c.writeFileSync)(U,ee),(0,c.writeFileSync)(Q,new y({...e.header,require:[...e.header.require,"file://"+U,"file://"+R]}).generate())}let F=new y(e.header).generate();(0,c.writeFileSync)(R,l),(0,c.writeFileSync)(X,F),(0,c.writeFileSync)(Y,`${F}
1
+ "use strict";var re=Object.create;var u=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var ae=(e,t,r)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var le=(e,t)=>{for(var r in t)u(e,r,{get:t[r],enumerable:!0})},O=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of se(t))!ie.call(e,o)&&o!==r&&u(e,o,{get:()=>t[o],enumerable:!(n=ne(t,o))||n.enumerable});return e};var g=(e,t,r)=>(r=e!=null?re(oe(e)):{},O(t||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e)),ce=e=>O(u({},"__esModule",{value:!0}),e);var d=(e,t,r)=>(ae(e,typeof t!="symbol"?t+"":t,r),r);var fe={};le(fe,{default:()=>I});module.exports=ce(fe);var p=require("fs"),K=require("http"),l=require("path"),A=require("url"),H=g(require("get-port"),1),N=g(require("open"),1),T=g(require("picocolors"),1),W=g(require("sanitize-filename"),1),q=g(require("serve-handler"),1),B=require("vite"),z=require("websocket");var h=class{constructor(t){this.config=t;d(this,"header",[]);d(this,"configKeys");d(this,"maxKeyLength");this.downloadMeta(),this.configKeys=Object.keys(this.config),this.maxKeyLength=Math.max(...this.configKeys.map(r=>r.length))+1}downloadMeta(){let{name:t,homepage:r,updateURL:n,downloadURL:o}=this.config;r&&!n&&!o&&(this.config.updateURL=new URL(`${t}.meta.js`,r).href,this.config.downloadURL=new URL(`${t}.user.js`,r).href)}addSpaces(t){return" ".repeat(this.maxKeyLength-t.length)}addMetadata(t,r){let n=typeof r=="boolean";n&&!r||(r=n?"":`${this.addSpaces(t)}${r}`,this.header.push(`// @${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
+ `)}};function E({entry:e,header:t}){return{build:{lib:{entry:e,name:t.name,formats:["iife"],fileName:()=>`${t.name}.js`},rollupOptions:{output:{extend:!0}}}}}var j="vite-userscript-plugin",U='console.warn("__STYLE__")',k=new RegExp(/\.(t|j)sx?$/),L=new RegExp(/\.(s[ac]|c|le)ss$/),pe=["setValue","getValue","deleteValue","listValues","setClipboard","addStyle","addElement","addValueChangeListener","removeValueChangeListener","registerMenuCommand","unregisterMenuCommand","download","getTab","getTabs","saveTab","openInTab","notification","getResourceURL","getResourceText","xmlhttpRequest","log","info"],me=["unsafeWindow","window.onurlchange","window.focus","window.close"],y=pe.map(e=>[`GM_${e}`,`GM.${e}`]).flat();y.push(...me);var V=require("vite");function M(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function w({file:e,name:t,loader:r}){let{code:n}=await(0,V.transformWithEsbuild)(e,t,{loader:r,minify:!0,sourcemap:!1,legalComments:"none"});return n}function D(e){let t=[];for(let r of y)e.indexOf(r)!==-1&&t.push(r);return t}var G=class{constructor(){d(this,"styles",new Map)}async add(t,r){let n=await w({file:t,name:r,loader:"css"});return this.styles.set(r,n.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 o=this.styles.get(n);!o||r.push([n,o])}this.styles.clear(),r.forEach(n=>this.styles.set(...n))}},$=new G;var de={};function I(e){try{let t,r,n=null,o=(0,l.dirname)((0,A.fileURLToPath)(de.url)),C=(0,B.createLogger)("info",{prefix:`[${j}]`,allowClearScreen:!0}),x=(0,K.createServer)((s,i)=>(0,q.default)(s,i,{public:t.build.outDir})),J=z.server;return new J({httpServer:x}).on("request",s=>{n=s.accept(null,s.origin)}),{name:j,apply:"build",config(){return E(e)},async configResolved(s){t=s,r=s.build.watch??!1,e.entry=(0,l.resolve)(s.root,e.entry),e.header.name=(0,W.default)(e.header.name),Array.from(["match","require","include","exclude","resource","connect"]).forEach(i=>{let a=e.header[i];e.header[i]=M(a)}),e.server={port:await(0,H.default)(),open:!1,...e.server}},async transform(s,i){let a=s;return L.test(i)&&(a=await $.add(s,i)),i.includes(e.entry)&&(a=s+U),{code:a,map:null}},generateBundle(s,i){for(let a of Object.values(i)){if(a.type==="asset")continue;let m=Object.keys(a.modules).filter(S=>L.test(S));m.length&&$.merge(m)}},async writeBundle(s,i){let{open:a,port:m}=e.server,S=`${e.header.name}.user.js`,_=`${e.header.name}.proxy.user.js`,Y=`${e.header.name}.meta.js`;for(let[f]of Object.entries(i))if(k.test(f)){let v=t.root,b=t.build.outDir,P=(0,l.resolve)(v,b,f),Q=(0,l.resolve)(v,b,S),X=(0,l.resolve)(v,b,_),Z=(0,l.resolve)(v,b,Y),R=(0,l.resolve)(o,`ws-${e.header.name}.js`);try{let c=(0,p.readFileSync)(P,"utf8");if(c=c.replace(U,`${$.inject()}`),c=await w({file:c,name:f,loader:"js"}),e.header.grant=M(r?y:[...D(c),...e.header.grant??[]]),r){let ee=(0,p.readFileSync)((0,l.resolve)(o,"ws.js"),"utf8"),te=await w({file:ee.replace("__WS__",`ws://localhost:${m}`),name:R,loader:"js"});(0,p.writeFileSync)(R,te),(0,p.writeFileSync)(X,new h({...e.header,require:[...e.header.require,"file://"+R,"file://"+P]}).generate())}let F=new h(e.header).generate();(0,p.writeFileSync)(P,c),(0,p.writeFileSync)(Z,F),(0,p.writeFileSync)(Q,`${F}
4
4
 
5
- ${l}`)}catch(l){console.log(l)}}if(r&&!v.listening){let m=`http://localhost:${f}`;v.listen(f,()=>{S.clearScreen("info"),S.info(_.default.blue(`Running at: ${_.default.gray(m)}`))}),p&&await(0,W.default)(`${m}/${u}`)}else r||(v.close(),process.exit(0))},buildEnd(){r&&(S.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}0&&(module.exports={});
5
+ ${c}`)}catch(c){console.log(c)}}if(r&&!x.listening){let f=`http://localhost:${m}`;x.listen(m,()=>{C.clearScreen("info"),C.info(T.default.blue(`Running at: ${T.default.gray(f)}`))}),a&&await(0,N.default)(`${f}/${_}`)}else r||(x.close(),process.exit(0))},buildEnd(){r&&(C.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}catch(t){return console.error(t),{name:j}}}0&&(module.exports={});
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- var W=Object.defineProperty;var q=(e,r,t)=>r in e?W(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var m=(e,r,t)=>(q(e,typeof r!="symbol"?r+"":r,t),t);import{readFileSync as O,writeFileSync as y}from"fs";import{createServer as I}from"http";import{dirname as J,resolve as c}from"path";import{fileURLToPath as Y}from"url";import Q from"get-port";import X from"open";import E from"picocolors";import Z from"sanitize-filename";import ee from"serve-handler";import{createLogger as te}from"vite";import{server as re}from"websocket";var u=class{constructor(r){this.config=r;m(this,"header",[]);m(this,"configKeys");m(this,"maxKeyLength");this.downloadMeta(),this.configKeys=Object.keys(this.config),this.maxKeyLength=Math.max(...this.configKeys.map(t=>t.length))+1}downloadMeta(){let{name:r,homepage:t,updateURL:n,downloadURL:l}=this.config;t&&!n&&!l&&(this.config.updateURL=new URL(`${r}.meta.js`,t).href,this.config.downloadURL=new URL(`${r}.user.js`,t).href)}addSpaces(r){return" ".repeat(this.maxKeyLength-r.length)}addMetadata(r,t){let n=typeof t=="boolean";n&&!t||(t=n?"":`${this.addSpaces(r)}${t}`,this.header.push(`// @${r}${t}`))}generate(){for(let[r,t]of Object.entries(this.config))if(Array.isArray(t))t.forEach(n=>this.addMetadata(r,n));else{if(t===void 0)continue;this.addMetadata(r,t)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
- `)}};function _({entry:e,header:r}){return{build:{lib:{entry:e,name:r.name,formats:["iife"],fileName:()=>`${r.name}.js`},rollupOptions:{output:{extend:!0}}}}}var R='console.warn("__STYLE__")',T=new RegExp(/\.(t|j)sx?$/),U=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"],N=["unsafeWindow","window.onurlchange","window.focus","window.close"],g=B.map(e=>[`GM_${e}`,`GM.${e}`]).flat();g.push(...N);import{transformWithEsbuild as z}from"vite";function L(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function h({file:e,name:r,loader:t}){let{code:n}=await z(e,r,{loader:t,minify:!0,sourcemap:!1,legalComments:"none"});return n}function F(e){let r=[];for(let t of g)e.indexOf(t)!==-1&&r.push(t);return r}var M=class{constructor(){m(this,"styles",new Map)}async add(r,t){let n=await h({file:r,name:t,loader:"css"});return this.styles.set(t,n.replace(`
3
- `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(r){let t=[];for(let n of r){let l=this.styles.get(n);!l||t.push([n,l])}this.styles.clear(),t.forEach(n=>this.styles.set(...n))}},b=new M;function ne(e){let r,t,n=null,l=J(Y(import.meta.url)),j=te("info",{prefix:"[vite-userscript-plugin]",allowClearScreen:!0}),w=I((s,o)=>ee(s,o,{public:r.build.outDir})),k=re;return new k({httpServer:w}).on("request",s=>{n=s.accept(null,s.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return _(e)},async configResolved(s){r=s,t=s.build.watch??!1,e.entry=c(s.root,e.entry),e.header.name=Z(e.header.name),Array.from(["match","require","include","exclude","resource","connect"]).forEach(o=>{let a=e.header[o];e.header[o]=L(a)}),e.server={port:await Q(),open:!1,...e.server}},async transform(s,o){let a=s;return U.test(o)&&(a=await b.add(s,o)),o.includes(e.entry)&&(a=s+R),{code:a,map:null}},generateBundle(s,o){for(let[a,d]of Object.entries(o)){let f=Object.keys(d.modules).filter($=>U.test($));f.length&&b.merge(f)}},async writeBundle(s,o){let{open:a,port:d}=e.server,P=`${e.header.name}.user.js`,f=`${e.header.name}.proxy.user.js`,$=`${e.header.name}.meta.js`;for(let[p]of Object.entries(o))if(T.test(p)){let x=r.root,v=r.build.outDir,S=c(x,v,p),V=c(x,v,P),D=c(x,v,f),K=c(x,v,$),C=c(l,`ws-${e.header.name}.js`);try{let i=O(S,"utf8");if(i=i.replace(R,`${b.inject()}`),i=await h({file:i,name:p,loader:"js"}),e.header.grant=L(t?g:[...F(i),...e.header.grant??[]]),t){let A=O(c(l,"ws.js"),"utf8"),H=await h({file:A.replace("__WS__",`ws://localhost:${d}`),name:C,loader:"js"});y(C,H),y(D,new u({...e.header,require:[...e.header.require,"file://"+C,"file://"+S]}).generate())}let G=new u(e.header).generate();y(S,i),y(K,G),y(V,`${G}
1
+ var W=Object.defineProperty;var q=(e,r,t)=>r in e?W(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var f=(e,r,t)=>(q(e,typeof r!="symbol"?r+"":r,t),t);import{readFileSync as O,writeFileSync as h}from"fs";import{createServer as J}from"http";import{dirname as Y,resolve as c}from"path";import{fileURLToPath as Q}from"url";import X from"get-port";import Z from"open";import E from"picocolors";import ee from"sanitize-filename";import te from"serve-handler";import{createLogger as re}from"vite";import{server as ne}from"websocket";var d=class{constructor(r){this.config=r;f(this,"header",[]);f(this,"configKeys");f(this,"maxKeyLength");this.downloadMeta(),this.configKeys=Object.keys(this.config),this.maxKeyLength=Math.max(...this.configKeys.map(t=>t.length))+1}downloadMeta(){let{name:r,homepage:t,updateURL:n,downloadURL:l}=this.config;t&&!n&&!l&&(this.config.updateURL=new URL(`${r}.meta.js`,t).href,this.config.downloadURL=new URL(`${r}.user.js`,t).href)}addSpaces(r){return" ".repeat(this.maxKeyLength-r.length)}addMetadata(r,t){let n=typeof t=="boolean";n&&!t||(t=n?"":`${this.addSpaces(r)}${t}`,this.header.push(`// @${r}${t}`))}generate(){for(let[r,t]of Object.entries(this.config))if(Array.isArray(t))t.forEach(n=>this.addMetadata(r,n));else{if(t===void 0)continue;this.addMetadata(r,t)}return["// ==UserScript==",...this.header,"// ==/UserScript=="].join(`
2
+ `)}};function T({entry:e,header:r}){return{build:{lib:{entry:e,name:r.name,formats:["iife"],fileName:()=>`${r.name}.js`},rollupOptions:{output:{extend:!0}}}}}var v="vite-userscript-plugin",P='console.warn("__STYLE__")',_=new RegExp(/\.(t|j)sx?$/),R=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"],z=["unsafeWindow","window.onurlchange","window.focus","window.close"],u=B.map(e=>[`GM_${e}`,`GM.${e}`]).flat();u.push(...z);import{transformWithEsbuild as I}from"vite";function U(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function g({file:e,name:r,loader:t}){let{code:n}=await I(e,r,{loader:t,minify:!0,sourcemap:!1,legalComments:"none"});return n}function F(e){let r=[];for(let t of u)e.indexOf(t)!==-1&&r.push(t);return r}var L=class{constructor(){f(this,"styles",new Map)}async add(r,t){let n=await g({file:r,name:t,loader:"css"});return this.styles.set(t,n.replace(`
3
+ `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(r){let t=[];for(let n of r){let l=this.styles.get(n);!l||t.push([n,l])}this.styles.clear(),t.forEach(n=>this.styles.set(...n))}},b=new L;function se(e){try{let r,t,n=null,l=Y(Q(import.meta.url)),j=re("info",{prefix:`[${v}]`,allowClearScreen:!0}),y=J((s,o)=>te(s,o,{public:r.build.outDir})),k=ne;return new k({httpServer:y}).on("request",s=>{n=s.accept(null,s.origin)}),{name:v,apply:"build",config(){return T(e)},async configResolved(s){r=s,t=s.build.watch??!1,e.entry=c(s.root,e.entry),e.header.name=ee(e.header.name),Array.from(["match","require","include","exclude","resource","connect"]).forEach(o=>{let i=e.header[o];e.header[o]=U(i)}),e.server={port:await X(),open:!1,...e.server}},async transform(s,o){let i=s;return R.test(o)&&(i=await b.add(s,o)),o.includes(e.entry)&&(i=s+P),{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($=>R.test($));p.length&&b.merge(p)}},async writeBundle(s,o){let{open:i,port:p}=e.server,$=`${e.header.name}.user.js`,M=`${e.header.name}.proxy.user.js`,V=`${e.header.name}.meta.js`;for(let[m]of Object.entries(o))if(_.test(m)){let w=r.root,x=r.build.outDir,C=c(w,x,m),D=c(w,x,$),K=c(w,x,M),A=c(w,x,V),S=c(l,`ws-${e.header.name}.js`);try{let a=O(C,"utf8");if(a=a.replace(P,`${b.inject()}`),a=await g({file:a,name:m,loader:"js"}),e.header.grant=U(t?u:[...F(a),...e.header.grant??[]]),t){let H=O(c(l,"ws.js"),"utf8"),N=await g({file:H.replace("__WS__",`ws://localhost:${p}`),name:S,loader:"js"});h(S,N),h(K,new d({...e.header,require:[...e.header.require,"file://"+S,"file://"+C]}).generate())}let G=new d(e.header).generate();h(C,a),h(A,G),h(D,`${G}
4
4
 
5
- ${i}`)}catch(i){console.log(i)}}if(t&&!w.listening){let p=`http://localhost:${d}`;w.listen(d,()=>{j.clearScreen("info"),j.info(E.blue(`Running at: ${E.gray(p)}`))}),a&&await X(`${p}/${f}`)}else t||(w.close(),process.exit(0))},buildEnd(){t&&(j.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}export{ne as default};
5
+ ${a}`)}catch(a){console.log(a)}}if(t&&!y.listening){let m=`http://localhost:${p}`;y.listen(p,()=>{j.clearScreen("info"),j.info(E.blue(`Running at: ${E.gray(m)}`))}),i&&await Z(`${m}/${M}`)}else t||(y.close(),process.exit(0))},buildEnd(){t&&(j.clearScreen("info"),n&&n.sendUTF(JSON.stringify({message:"reload"})))}}}catch(r){return console.error(r),{name:v}}}export{se as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-userscript-plugin",
3
- "version": "1.6.5",
3
+ "version": "1.6.6",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.cjs",