vite-userscript-plugin 1.0.0 → 1.1.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/README.md CHANGED
@@ -39,7 +39,7 @@ export default defineConfig({
39
39
  plugins: [
40
40
  Userscript({
41
41
  entry: 'src/index.ts',
42
- metadata: {
42
+ header: {
43
43
  name,
44
44
  version,
45
45
  match: [
@@ -67,22 +67,35 @@ export default defineConfig({
67
67
  ## Plugin Configuration
68
68
 
69
69
  ```ts
70
- export interface UserscriptPluginConfig {
71
- /**
72
- * Path of userscript entry.
73
- */
74
- entry: string
75
-
76
- /**
77
- * Userscript header config.
78
- */
79
- metadata: MetadataConfig
80
-
81
- /**
82
- * Import all `@grant` in development mode.
83
- * @default true
84
- */
85
- autoGrants?: boolean
70
+ interface ServerConfig {
71
+ /**
72
+ * {@link https://github.com/sindresorhus/get-port}
73
+ */
74
+ port?: number;
75
+ /**
76
+ * @default true
77
+ */
78
+ open?: boolean;
79
+ }
80
+
81
+ interface UserscriptPluginConfig {
82
+ /**
83
+ * Path of userscript entry.
84
+ */
85
+ entry: string;
86
+ /**
87
+ * Userscript header config.
88
+ */
89
+ header: HeaderConfig;
90
+ /**
91
+ * Server config.
92
+ */
93
+ server?: ServerConfig;
94
+ /**
95
+ * Import all `@grant` in development mode.
96
+ * @default true
97
+ */
98
+ autoGrants?: boolean;
86
99
  }
87
100
  ```
88
101
 
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var A=Object.create;var M=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var Y=(e,t)=>{for(var r in t)M(e,r,{get:t[r],enumerable:!0})},R=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of N(t))!K.call(e,o)&&o!==r&&M(e,o,{get:()=>t[o],enumerable:!(s=B(t,o))||s.enumerable});return e};var C=(e,t,r)=>(r=e!=null?A(z(e)):{},R(t||!e||!e.__esModule?M(r,"default",{value:e,enumerable:!0}):r,e)),I=e=>R(M({},"__esModule",{value:!0}),e);var J={};Y(J,{default:()=>F});module.exports=I(J);var U=C(require("get-port"),1),f=require("fs"),L=require("http"),m=require("path"),P=require("url"),k=C(require("sanitize-filename"),1),q=require("websocket");function S(e){let t=[],r=Object.keys(e),s=Math.max(...r.map(a=>a.length))+1,o=a=>" ".repeat(s-a.length),_=(a,i)=>{let n=typeof i=="boolean";n&&!i||(i=n?"":o(a)+i.toString(),t.push(`// @${a}${i}`))};for(let[a,i]of Object.entries(e))if(Array.isArray(i))i.forEach(n=>_(a,n));else{if(i===void 0)continue;_(a,i)}return["// ==UserScript==",...t,"// ==/UserScript=="].join(`
2
- `)}var $=new RegExp(/.(t|j)sx?/),j=new RegExp(/\.(s?css|sass)$/),w=["unsafeWindow","window.onurlchange","window.focus","window.close","GM_setValue","GM_getValue","GM_deleteValue","GM_listValues","GM_setClipboard","GM_addStyle","GM_addElement","GM_addValueChangeListener","GM_removeValueChangeListener","GM_registerMenuCommand","GM_unregisterMenuCommand","GM_download","GM_getTab","GM_getTabs","GM_saveTab","GM_openInTab","GM_notification","GM_getResourceURL","GM_getResourceText","GM_xmlhttpRequest","GM_webRequest","GM_log","GM_info"];var T=require("vite");function p(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function G({file:e,name:t,loader:r}){let{code:s}=await(0,T.transformWithEsbuild)(e,t,{loader:r,minify:!0});return s}function O(e){let t=[];for(let r of w)e.indexOf(r)!==-1&&t.push(r);return t}var v=class{styles=new Map;async add(t,r){let s=await G({file:t,name:r,loader:"css"});return this.styles.set(r,s.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 o=this.styles.get(s);!o||r.push([s,o])}this.styles.clear(),r.forEach(s=>this.styles.set(...s))}},x=new v;var E={};function F(e){let t,r,s=null,o=null,_=(0,L.createServer)(),a=q.server;return new a({httpServer:_}).on("request",n=>{o=n.accept(null,n.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return{build:{lib:{entry:e.entry,name:e.metadata.name,formats:["iife"],fileName:()=>`${e.metadata.name}.js`},rollupOptions:{output:{extend:!0}}}}},configResolved(n){t=n,r=n.build.watch??!1;let{name:u,match:l,require:y,include:h,exclude:c,resource:g,connect:b}=e.metadata;e.entry=(0,m.resolve)(n.root,e.entry),e.metadata.name=(0,k.default)(u),e.metadata.match=p(l),e.metadata.require=p(y),e.metadata.include=p(h),e.metadata.exclude=p(c),e.metadata.resource=p(g),e.metadata.connect=p(b),e.autoGrants=e.autoGrants??!0},async transform(n,u){let l=n;return j.test(u)&&(l=await x.add(n,u)),u.includes(e.entry)&&(l=n+"__STYLE__"),{code:l,map:null}},generateBundle(n,u){for(let[l,y]of Object.entries(u)){let c=Object.keys(y.modules).filter(g=>j.test(g));c.length>0&&x.merge(c)}},async writeBundle(n,u){!s&&r&&(s=await(0,U.default)(),_.listen(s));for(let[l]of Object.entries(u))if($.test(l)){let y=t.root,h=t.build.outDir||"dist",c=(0,m.resolve)(y,h,l),g=(0,m.resolve)((0,m.dirname)((0,P.fileURLToPath)(E.url)),`hot-reload-${e.metadata.name}.js`),b=(0,m.resolve)(y,h,`${e.metadata.name}.proxy.user.js`),V=(0,m.resolve)(y,h,`${e.metadata.name}.user.js`);try{let d=(0,f.readFileSync)(c,"utf8");if(e.metadata.grant=p(r?w:e.autoGrants??!0?O(d):[...e.metadata.grant??[],"GM_addStyle","GM_info"]),r){let D=(0,f.readFileSync)((0,m.resolve)((0,m.dirname)((0,P.fileURLToPath)(E.url)),"hot-reload.js"),"utf8"),W=await G({file:D.replace("__WS__",`ws://localhost:${s}`),name:g,loader:"js"});(0,f.writeFileSync)(g,W),(0,f.writeFileSync)(b,S({...e.metadata,require:[...e.metadata.require,"file://"+g,"file://"+c]}))}d=d.replace("__STYLE__",`${x.inject()}`),d=await G({file:d,name:l,loader:"js"}),(0,f.writeFileSync)(c,d),(0,f.writeFileSync)(V,`${S(e.metadata)}
1
+ "use strict";var J=Object.create;var x=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(e,t)=>{for(var r in t)x(e,r,{get:t[r],enumerable:!0})},O=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of X(t))!ee.call(e,o)&&o!==r&&x(e,o,{get:()=>t[o],enumerable:!(s=Q(t,o))||s.enumerable});return e};var M=(e,t,r)=>(r=e!=null?J(Z(e)):{},O(t||!e||!e.__esModule?x(r,"default",{value:e,enumerable:!0}):r,e)),re=e=>O(x({},"__esModule",{value:!0}),e);var ne={};te(ne,{default:()=>H});module.exports=re(ne);var F=M(require("get-port"),1),f=require("fs"),q=require("http"),d=require("path"),P=require("url"),D=M(require("open"),1),T=M(require("picocolors"),1),V=M(require("sanitize-filename"),1),W=M(require("serve-handler"),1),A=require("vite"),B=require("websocket");function $(e){let t=[],r=Object.keys(e),s=Math.max(...r.map(i=>i.length))+1,o=i=>" ".repeat(s-i.length),g=(i,a)=>{let n=typeof a=="boolean";n&&!a||(a=n?"":o(i)+a.toString(),t.push(`// @${i}${a}`))};for(let[i,a]of Object.entries(e))if(Array.isArray(a))a.forEach(n=>g(i,n));else{if(a===void 0)continue;g(i,a)}return["// ==UserScript==",...t,"// ==/UserScript=="].join(`
2
+ `)}var E=new RegExp(/.(t|j)sx?/),R=new RegExp(/\.(s?css|sass)$/),b=["unsafeWindow","window.onurlchange","window.focus","window.close","GM_setValue","GM_getValue","GM_deleteValue","GM_listValues","GM_setClipboard","GM_addStyle","GM_addElement","GM_addValueChangeListener","GM_removeValueChangeListener","GM_registerMenuCommand","GM_unregisterMenuCommand","GM_download","GM_getTab","GM_getTabs","GM_saveTab","GM_openInTab","GM_notification","GM_getResourceURL","GM_getResourceText","GM_xmlhttpRequest","GM_webRequest","GM_log","GM_info"];var L=require("vite");function p(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function w({file:e,name:t,loader:r}){let{code:s}=await(0,L.transformWithEsbuild)(e,t,{loader:r,minify:!0});return s}function U(e){let t=[];for(let r of b)e.indexOf(r)!==-1&&t.push(r);return t}var C=class{styles=new Map;async add(t,r){let s=await w({file:t,name:r,loader:"css"});return this.styles.set(r,s.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 o=this.styles.get(s);!o||r.push([s,o])}this.styles.clear(),r.forEach(s=>this.styles.set(...s))}},S=new C;var k={};function H(e){let t,r,s=null,o=(0,A.createLogger)("info",{prefix:"[vite-userscript-plugin]",allowClearScreen:!0}),g=(0,q.createServer)((n,l)=>(0,W.default)(n,l,{public:t.build.outDir})),i=B.server;return new i({httpServer:g}).on("request",n=>{s=n.accept(null,n.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return{build:{lib:{entry:e.entry,name:e.header.name,formats:["iife"],fileName:()=>`${e.header.name}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(n){t=n,r=n.build.watch??!1;let{name:l,match:m,require:y,include:_,exclude:u,resource:h,connect:G}=e.header;e.entry=(0,d.resolve)(n.root,e.entry),e.header.name=(0,V.default)(l),e.header.match=p(m),e.header.require=p(y),e.header.include=p(_),e.header.exclude=p(u),e.header.resource=p(h),e.header.connect=p(G),e.autoGrants=e.autoGrants??!0,e.server={port:await(0,F.default)(),open:!0,...e.server}},async transform(n,l){let m=n;return R.test(l)&&(m=await S.add(n,l)),l.includes(e.entry)&&(m=n+"__STYLE__"),{code:m,map:null}},generateBundle(n,l){for(let[m,y]of Object.entries(l)){let u=Object.keys(y.modules).filter(h=>R.test(h));u.length>0&&S.merge(u)}},async writeBundle(n,l){let{open:m,port:y}=e.server,_=`${e.header.name}.proxy.user.js`;for(let[u]of Object.entries(l))if(E.test(u)){let h=t.root,G=t.build.outDir,N=`${e.header.name}.user.js`,j=(0,d.resolve)(h,G,u),z=(0,d.resolve)(h,G,_),K=(0,d.resolve)(h,G,N),v=(0,d.resolve)((0,d.dirname)((0,P.fileURLToPath)(k.url)),`hot-reload-${e.header.name}.js`);try{let c=(0,f.readFileSync)(j,"utf8");if(e.header.grant=p(r?b:e.autoGrants??!0?U(c):[...e.header.grant??[],"GM_addStyle","GM_info"]),r){let Y=(0,f.readFileSync)((0,d.resolve)((0,d.dirname)((0,P.fileURLToPath)(k.url)),"hot-reload.js"),"utf8"),I=await w({file:Y.replace("__WS__",`ws://localhost:${y}`),name:v,loader:"js"});(0,f.writeFileSync)(v,I),(0,f.writeFileSync)(z,$({...e.header,require:[...e.header.require,"file://"+v,"file://"+j]}))}c=c.replace("__STYLE__",`${S.inject()}`),c=await w({file:c,name:u,loader:"js"}),(0,f.writeFileSync)(j,c),(0,f.writeFileSync)(K,`${$(e.header)}
4
4
 
5
- ${d}`)}catch(d){console.log(d)}}r||(_.close(),process.exit(0))},buildEnd(){o&&o.sendUTF(JSON.stringify({message:"reload"}))}}}0&&(module.exports={});
5
+ ${c}`)}catch(c){console.log(c)}}if(r&&!g.listening){let u=`http://localhost:${y}`;g.listen(y,()=>{o.clearScreen("info"),o.info(T.default.blue(`Running at: ${T.default.gray(u)}`))}),m&&await(0,D.default)(`${u}/${_}`)}else r||(g.close(),process.exit(0))},buildEnd(){r&&(o.clearScreen("info"),s&&s.sendUTF(JSON.stringify({message:"reload"})))}}}0&&(module.exports={});
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ declare const grants: readonly ["unsafeWindow", "window.onurlchange", "window.fo
4
4
 
5
5
  declare type RunAt = 'document-start' | 'document-body' | 'document-end' | 'document-idle' | 'context-menu';
6
6
  declare type Grants = typeof grants[number];
7
- declare type MetadataConfig = {
7
+ declare type HeaderConfig = {
8
8
  [property: string]: string | boolean | number | string[] | undefined;
9
9
  /**
10
10
  * The name of the script.
@@ -187,6 +187,16 @@ declare type MetadataConfig = {
187
187
  */
188
188
  'run-at'?: RunAt;
189
189
  };
190
+ interface ServerConfig {
191
+ /**
192
+ * {@link https://github.com/sindresorhus/get-port}
193
+ */
194
+ port?: number;
195
+ /**
196
+ * @default true
197
+ */
198
+ open?: boolean;
199
+ }
190
200
  interface UserscriptPluginConfig {
191
201
  /**
192
202
  * Path of userscript entry.
@@ -195,7 +205,11 @@ interface UserscriptPluginConfig {
195
205
  /**
196
206
  * Userscript header config.
197
207
  */
198
- metadata: MetadataConfig;
208
+ header: HeaderConfig;
209
+ /**
210
+ * Server config.
211
+ */
212
+ server?: ServerConfig;
199
213
  /**
200
214
  * Import all `@grant` in development mode.
201
215
  * @default true
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import L from"get-port";import{readFileSync as R,writeFileSync as w}from"fs";import{createServer as k}from"http";import{dirname as C,resolve as _}from"path";import{fileURLToPath as $}from"url";import q from"sanitize-filename";import{server as F}from"websocket";function b(e){let s=[],t=Object.keys(e),n=Math.max(...t.map(o=>o.length))+1,u=o=>" ".repeat(n-o.length),y=(o,a)=>{let r=typeof a=="boolean";r&&!a||(a=r?"":u(o)+a.toString(),s.push(`// @${o}${a}`))};for(let[o,a]of Object.entries(e))if(Array.isArray(a))a.forEach(r=>y(o,r));else{if(a===void 0)continue;y(o,a)}return["// ==UserScript==",...s,"// ==/UserScript=="].join(`
2
- `)}var v=new RegExp(/.(t|j)sx?/),S=new RegExp(/\.(s?css|sass)$/),G=["unsafeWindow","window.onurlchange","window.focus","window.close","GM_setValue","GM_getValue","GM_deleteValue","GM_listValues","GM_setClipboard","GM_addStyle","GM_addElement","GM_addValueChangeListener","GM_removeValueChangeListener","GM_registerMenuCommand","GM_unregisterMenuCommand","GM_download","GM_getTab","GM_getTabs","GM_saveTab","GM_openInTab","GM_notification","GM_getResourceURL","GM_getResourceText","GM_xmlhttpRequest","GM_webRequest","GM_log","GM_info"];import{transformWithEsbuild as U}from"vite";function c(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function h({file:e,name:s,loader:t}){let{code:n}=await U(e,s,{loader:t,minify:!0});return n}function P(e){let s=[];for(let t of G)e.indexOf(t)!==-1&&s.push(t);return s}var j=class{styles=new Map;async add(s,t){let n=await h({file:s,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(s){let t=[];for(let n of s){let u=this.styles.get(n);!u||t.push([n,u])}this.styles.clear(),t.forEach(n=>this.styles.set(...n))}},M=new j;function V(e){let s,t,n=null,u=null,y=k(),o=F;return new o({httpServer:y}).on("request",r=>{u=r.accept(null,r.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return{build:{lib:{entry:e.entry,name:e.metadata.name,formats:["iife"],fileName:()=>`${e.metadata.name}.js`},rollupOptions:{output:{extend:!0}}}}},configResolved(r){s=r,t=r.build.watch??!1;let{name:l,match:i,require:p,include:g,exclude:d,resource:f,connect:x}=e.metadata;e.entry=_(r.root,e.entry),e.metadata.name=q(l),e.metadata.match=c(i),e.metadata.require=c(p),e.metadata.include=c(g),e.metadata.exclude=c(d),e.metadata.resource=c(f),e.metadata.connect=c(x),e.autoGrants=e.autoGrants??!0},async transform(r,l){let i=r;return S.test(l)&&(i=await M.add(r,l)),l.includes(e.entry)&&(i=r+"__STYLE__"),{code:i,map:null}},generateBundle(r,l){for(let[i,p]of Object.entries(l)){let d=Object.keys(p.modules).filter(f=>S.test(f));d.length>0&&M.merge(d)}},async writeBundle(r,l){!n&&t&&(n=await L(),y.listen(n));for(let[i]of Object.entries(l))if(v.test(i)){let p=s.root,g=s.build.outDir||"dist",d=_(p,g,i),f=_(C($(import.meta.url)),`hot-reload-${e.metadata.name}.js`),x=_(p,g,`${e.metadata.name}.proxy.user.js`),T=_(p,g,`${e.metadata.name}.user.js`);try{let m=R(d,"utf8");if(e.metadata.grant=c(t?G:e.autoGrants??!0?P(m):[...e.metadata.grant??[],"GM_addStyle","GM_info"]),t){let O=R(_(C($(import.meta.url)),"hot-reload.js"),"utf8"),E=await h({file:O.replace("__WS__",`ws://localhost:${n}`),name:f,loader:"js"});w(f,E),w(x,b({...e.metadata,require:[...e.metadata.require,"file://"+f,"file://"+d]}))}m=m.replace("__STYLE__",`${M.inject()}`),m=await h({file:m,name:i,loader:"js"}),w(d,m),w(T,`${b(e.metadata)}
1
+ import V from"get-port";import{readFileSync as P,writeFileSync as x}from"fs";import{createServer as W}from"http";import{dirname as T,resolve as y}from"path";import{fileURLToPath as O}from"url";import A from"open";import E from"picocolors";import B from"sanitize-filename";import H from"serve-handler";import{createLogger as N}from"vite";import{server as z}from"websocket";function j(e){let n=[],t=Object.keys(e),s=Math.max(...t.map(o=>o.length))+1,d=o=>" ".repeat(s-o.length),p=(o,i)=>{let r=typeof i=="boolean";r&&!i||(i=r?"":d(o)+i.toString(),n.push(`// @${o}${i}`))};for(let[o,i]of Object.entries(e))if(Array.isArray(i))i.forEach(r=>p(o,r));else{if(i===void 0)continue;p(o,i)}return["// ==UserScript==",...n,"// ==/UserScript=="].join(`
2
+ `)}var R=new RegExp(/.(t|j)sx?/),v=new RegExp(/\.(s?css|sass)$/),M=["unsafeWindow","window.onurlchange","window.focus","window.close","GM_setValue","GM_getValue","GM_deleteValue","GM_listValues","GM_setClipboard","GM_addStyle","GM_addElement","GM_addValueChangeListener","GM_removeValueChangeListener","GM_registerMenuCommand","GM_unregisterMenuCommand","GM_download","GM_getTab","GM_getTabs","GM_saveTab","GM_openInTab","GM_notification","GM_getResourceURL","GM_getResourceText","GM_xmlhttpRequest","GM_webRequest","GM_log","GM_info"];import{transformWithEsbuild as D}from"vite";function m(e){return[...new Set(Array.isArray(e)?e:e?[e]:[])]}async function G({file:e,name:n,loader:t}){let{code:s}=await D(e,n,{loader:t,minify:!0});return s}function C(e){let n=[];for(let t of M)e.indexOf(t)!==-1&&n.push(t);return n}var $=class{styles=new Map;async add(n,t){let s=await G({file:n,name:t,loader:"css"});return this.styles.set(t,s.replace(`
3
+ `,"")),""}inject(){return this.styles.size?`GM_addStyle(\`${[...this.styles.values()].join("")}\`)`:void 0}merge(n){let t=[];for(let s of n){let d=this.styles.get(s);!d||t.push([s,d])}this.styles.clear(),t.forEach(s=>this.styles.set(...s))}},w=new $;function K(e){let n,t,s=null,d=N("info",{prefix:"[vite-userscript-plugin]",allowClearScreen:!0}),p=W((r,a)=>H(r,a,{public:n.build.outDir})),o=z;return new o({httpServer:p}).on("request",r=>{s=r.accept(null,r.origin)}),{name:"vite-userscript-plugin",apply:"build",config(){return{build:{lib:{entry:e.entry,name:e.header.name,formats:["iife"],fileName:()=>`${e.header.name}.js`},rollupOptions:{output:{extend:!0}}}}},async configResolved(r){n=r,t=r.build.watch??!1;let{name:a,match:c,require:f,include:h,exclude:l,resource:g,connect:_}=e.header;e.entry=y(r.root,e.entry),e.header.name=B(a),e.header.match=m(c),e.header.require=m(f),e.header.include=m(h),e.header.exclude=m(l),e.header.resource=m(g),e.header.connect=m(_),e.autoGrants=e.autoGrants??!0,e.server={port:await V(),open:!0,...e.server}},async transform(r,a){let c=r;return v.test(a)&&(c=await w.add(r,a)),a.includes(e.entry)&&(c=r+"__STYLE__"),{code:c,map:null}},generateBundle(r,a){for(let[c,f]of Object.entries(a)){let l=Object.keys(f.modules).filter(g=>v.test(g));l.length>0&&w.merge(l)}},async writeBundle(r,a){let{open:c,port:f}=e.server,h=`${e.header.name}.proxy.user.js`;for(let[l]of Object.entries(a))if(R.test(l)){let g=n.root,_=n.build.outDir,L=`${e.header.name}.user.js`,b=y(g,_,l),U=y(g,_,h),k=y(g,_,L),S=y(T(O(import.meta.url)),`hot-reload-${e.header.name}.js`);try{let u=P(b,"utf8");if(e.header.grant=m(t?M:e.autoGrants??!0?C(u):[...e.header.grant??[],"GM_addStyle","GM_info"]),t){let F=P(y(T(O(import.meta.url)),"hot-reload.js"),"utf8"),q=await G({file:F.replace("__WS__",`ws://localhost:${f}`),name:S,loader:"js"});x(S,q),x(U,j({...e.header,require:[...e.header.require,"file://"+S,"file://"+b]}))}u=u.replace("__STYLE__",`${w.inject()}`),u=await G({file:u,name:l,loader:"js"}),x(b,u),x(k,`${j(e.header)}
4
4
 
5
- ${m}`)}catch(m){console.log(m)}}t||(y.close(),process.exit(0))},buildEnd(){u&&u.sendUTF(JSON.stringify({message:"reload"}))}}}export{V as default};
5
+ ${u}`)}catch(u){console.log(u)}}if(t&&!p.listening){let l=`http://localhost:${f}`;p.listen(f,()=>{d.clearScreen("info"),d.info(E.blue(`Running at: ${E.gray(l)}`))}),c&&await A(`${l}/${h}`)}else t||(p.close(),process.exit(0))},buildEnd(){t&&(d.clearScreen("info"),s&&s.sendUTF(JSON.stringify({message:"reload"})))}}}export{K as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-userscript-plugin",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.cjs",
@@ -36,18 +36,22 @@
36
36
  "dependencies": {
37
37
  "@types/tampermonkey": "^4.0.5",
38
38
  "get-port": "^6.1.2",
39
+ "open": "^8.4.0",
40
+ "picocolors": "^1.0.0",
39
41
  "sanitize-filename": "^1.6.3",
42
+ "serve-handler": "^6.1.3",
40
43
  "websocket": "^1.0.34"
41
44
  },
42
45
  "devDependencies": {
43
46
  "@crashmax/prettier-config": "^2.0.3",
44
47
  "@crashmax/tsconfig": "^1.0.2",
45
48
  "@types/node": "^18.7.13",
49
+ "@types/serve-handler": "^6.1.1",
46
50
  "@types/websocket": "^1.0.5",
47
51
  "@vitest/ui": "^0.22.1",
48
- "tsup": "^6.2.2",
52
+ "tsup": "^6.2.3",
49
53
  "turbo": "^1.4.3",
50
- "typescript": "^4.7.4",
54
+ "typescript": "^4.8.2",
51
55
  "vite": "^3.0.9",
52
56
  "vite-plugin-dts": "^1.4.1",
53
57
  "vitest": "^0.22.1"