@beeblock/svelar 0.5.0 → 0.5.1
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 +21 -1
- package/dist/cli/bin.js +30 -21
- package/dist/cli/index.js +48 -48
- package/dist/plugins/PluginInstaller.js +1 -1
- package/dist/plugins/PluginRegistry.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var w=(u=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(u,{get:(s,e)=>(typeof require<"u"?require:s)[e]}):u)(function(u){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+u+'" is not supported')});function m(u,s){let e=Symbol.for(u),n=globalThis;return n[e]||(n[e]=s()),n[e]}var P=class{plugins=new Map;enabledPlugins=new Set;async discover(){let{join:s}=await import("path"),{existsSync:e,readdirSync:n}=await import("fs"),{readFile:c}=await import("fs/promises"),o=[],t=s(process.cwd(),"node_modules");if(!e(t))return o;let g=async(r,d="")=>{if(e(r))try{let p=n(r,{withFileTypes:!0});for(let a of p){if(!a.isDirectory()||a.name.startsWith("."))continue;if(a.name.startsWith("@")){let h=s(r,a.name);await g(h,a.name+"/");continue}let i=d+a.name,l=a.name.startsWith("svelar-");if(!l)continue;let b=s(r,a.name,"package.json");if(e(b))try{let h=await c(b,"utf-8"),f=JSON.parse(h),k=f.keywords?.includes("svelar-plugin");if(!l&&!k)continue;let y={name:f.name||i,version:f.version||"0.0.0",description:f.description||"",packageName:i,installed:!0,enabled:!1,hasConfig:!!f.svelar?.config,hasMigrations:!!f.svelar?.migrations};o.push(y),this.plugins.set(y.name,y)}catch{}}}catch{}};return await g(t),o}enable(s){let e=this.plugins.get(s);if(!e)throw new Error(`Plugin "${s}" not found in registry.`);this.enabledPlugins.add(s),e.enabled=!0}disable(s){this.enabledPlugins.delete(s);let e=this.plugins.get(s);e&&(e.enabled=!1)}isEnabled(s){return this.enabledPlugins.has(s)}list(){return[...this.plugins.values()]}listEnabled(){return[...this.plugins.values()].filter(s=>this.enabledPlugins.has(s.name))}get(s){return this.plugins.get(s)}register(s){this.plugins.set(s.name,s)}},v=m("svelar.pluginRegistry",()=>new P);var M=class{async publish(s,e){let{mkdir:n,copyFile:c}=await import("fs/promises"),{join:o,dirname:t}=await import("path"),{existsSync:g}=await import("fs"),r={configs:[],migrations:[],assets:[]},d=s.publishables?.()||{};for(let[p,a]of Object.entries(d))for(let i of a){if(e?.only&&i.type!==e.only)continue;let l=o(process.cwd(),i.dest),b=t(l);if(!(g(l)&&!e?.force))try{await n(b,{recursive:!0}),await c(i.source,l),i.type==="config"?r.configs.push(l):i.type==="migration"?r.migrations.push(l):i.type==="asset"&&r.assets.push(l)}catch(h){console.warn(`Failed to publish ${i.source} to ${l}:`,h)}}return r}async preview(s){let e={configs:[],migrations:[],assets:[]},n=s.publishables?.()||{};for(let[c,o]of Object.entries(n))for(let t of o){let g=w("path").join(process.cwd(),t.dest);t.type==="config"?e.configs.push(g):t.type==="migration"?e.migrations.push(g):t.type==="asset"&&e.assets.push(g)}return e}},R=m("svelar.pluginPublisher",()=>new M);var x=class{async install(s,e){let{spawn:n}=await import("child_process"),{promisify:c}=await import("util"),{join:o}=await import("path"),{readFile:t}=await import("fs/promises"),{existsSync:g}=await import("fs");try{await this.runNpmInstall(s);let r=v,d=await r.discover(),p;for(let i of d)if(i.packageName===s||i.name===s){p=i;break}if(!p)return{success:!1,pluginName:s,version:"0.0.0",published:null,error:`Plugin not found after installation. Make sure ${s} is a valid Svelar plugin.`};r.enable(p.name);let a=null;if(e?.publish!==!1)try{let i=await this.loadPluginClass(p.packageName);i&&(a=await R.publish(new i))}catch(i){console.warn("Failed to publish plugin assets:",i)}return{success:!0,pluginName:p.name,version:p.version,published:a}}catch(r){return{success:!1,pluginName:s,version:"0.0.0",published:null,error:r?.message??String(r)}}}async uninstall(s){try{let e=v,n=e.get(s);return n?(e.disable(s),await this.runNpmUninstall(n.packageName),!0):!1}catch(e){return console.error("Failed to uninstall plugin:",e),!1}}async runNpmInstall(s){return new Promise((e,n)=>{let{spawn:c}=w("child_process"),o=c("npm",["install",s],{cwd:process.cwd(),stdio:"inherit"});o.on("close",t=>{t===0?e():n(new Error(`npm install exited with code ${t}`))}),o.on("error",n)})}async runNpmUninstall(s){return new Promise((e,n)=>{let{spawn:c}=w("child_process"),o=c("npm",["uninstall",s],{cwd:process.cwd(),stdio:"inherit"});o.on("close",t=>{t===0?e():n(new Error(`npm uninstall exited with code ${t}`))}),o.on("error",n)})}async loadPluginClass(s){try{let e=await import(s);return e.default||Object.values(e)[0]}catch{return null}}},D=m("svelar.pluginInstaller",()=>new x);export{D as PluginInstaller};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function m(c,n){let e=Symbol.for(c),s=globalThis;return s[e]||(s[e]=n()),s[e]}var g=class{plugins=new Map;enabledPlugins=new Set;async discover(){let{join:n}=await import("path"),{existsSync:e,readdirSync:s}=await import("fs"),{readFile:b}=await import("fs/promises"),o=[],u=n(process.cwd(),"node_modules");if(!e(u))return o;let d=async(a,P="")=>{if(e(a))try{let v=s(a,{withFileTypes:!0});for(let t of v){if(!t.isDirectory()||t.name.startsWith("."))continue;if(t.name.startsWith("@")){let r=n(a,t.name);await d(r,t.name+"/");continue}let p=P+t.name,h=t.name.startsWith("svelar-");if(!h)continue;let f=n(a,t.name,"package.json");if(e(f))try{let r=await b(f,"utf-8"),i=JSON.parse(r),y=i.keywords?.includes("svelar-plugin");if(!h&&!y)continue;let l={name:i.name||p,version:i.version||"0.0.0",description:i.description||"",packageName:p,installed:!0,enabled:!1,hasConfig:!!i.svelar?.config,hasMigrations:!!i.svelar?.migrations};o.push(l),this.plugins.set(l.name,l)}catch{}}}catch{}};return await d(u),o}enable(n){let e=this.plugins.get(n);if(!e)throw new Error(`Plugin "${n}" not found in registry.`);this.enabledPlugins.add(n),e.enabled=!0}disable(n){this.enabledPlugins.delete(n);let e=this.plugins.get(n);e&&(e.enabled=!1)}isEnabled(n){return this.enabledPlugins.has(n)}list(){return[...this.plugins.values()]}listEnabled(){return[...this.plugins.values()].filter(n=>this.enabledPlugins.has(n.name))}get(n){return this.plugins.get(n)}register(n){this.plugins.set(n.name,n)}},k=m("svelar.pluginRegistry",()=>new g);export{k as PluginRegistry};
|