@tomjs/create-app 1.0.2 → 1.2.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.js CHANGED
@@ -1,11 +1,11 @@
1
- import Ge from"meow";import w from"node:fs";import Oe from"node:os";import g from"node:path";import{fileURLToPath as Pe}from"node:url";import{copySync as Ae,mkdirSync as $e,readFileSync as ie,readJsonSync as ae,rmSync as N,writeFileSync as T,writeJsonSync as Ee}from"@tomjs/node";import x from"chalk";import{camelCase as De,cloneDeep as ce,merge as Se}from"lodash-es";import B from"node:os";import X from"node:path";import{mkdirSync as xe,readJsonSync as ve,writeJsonSync as be}from"@tomjs/node";import j from"chalk";import ke from"inquirer";import we from"@tomjs/logger";import{$ as he}from"execa";import E from"inquirer";var y=new we({directory:"create-app/logs"});function D(e,t,r){let n={message:e};return Array.isArray(t)||typeof t!="object"?n.default=t:Object.assign(n,t),Object.assign(n,r)}async function h(e,t){let r=`confirm-${Date.now()}`,n=D(e,t);return(await E.prompt([{type:"confirm",name:r,...n}]))[r]}async function _(e,t){let r=`input-${Date.now()}`,{required:n,...o}=D(e,t),i=n??!0,c=o.validate;return(i||c)&&(o.validate=s=>{let l=(s||"").trim();return i&&!l?"It's required!":c?c(s):!0}),(await E.prompt([{type:"input",name:r,...o}]))[r]}async function K(e,t,r){let n=`checkbox-${Date.now()}`,{required:o,min:i,max:c,...p}=D(e,r),s=o??!0,l=p.validate;return(s||i||c)&&(p.validate=a=>s&&a.length===0?"Please select at least one option":i&&a.length<i?`Please select at least ${i} options`:c&&a.length>c?`Please select at most ${c} options`:l?l(a):!0),(await E.prompt([{type:"checkbox",name:n,choices:t,pageSize:Math.min(t.length,10),...p}]))[n]}async function b(e,t,r){let n=`list-${Date.now()}`,o=D(e,r);return(await E.prompt([{type:"list",name:n,choices:t,pageSize:Math.min(t.length,10),...o}]))[n]}var U={cwd:"."};async function S(e,t){let{trim:r,...n}=Object.assign({stdio:"pipe",shell:!0,cwd:U.cwd},t);n.cwd??=U.cwd,Array.isArray(e)&&(e=e.join(" "));let o=i=>{U.verbose?y.debug(i):y.write(i)};o(`$ ${e}`);try{let c=(await he(n)`${e}`).stdout;return o(c),r?c.trim().replace(/\n|\r/g,""):c.trim()}catch(i){let c=i.stderr||i.message;throw o(c),new Error(c)}}function Q(e){if(e&&e.packageManager)return e.packageManager.split("@")[0];let t=process.env.npm_config_user_agent;return t?t.split(" ")[0].split("/")[0]:void 0}var Y={repo:"https://github.com",owner:B.userInfo().username};function q(e){let{repo:t,owner:r}=e;return`${t}${t.endsWith("/")?"":"/"}${r}`}async function H(e){let t=await ke.prompt([{type:"text",name:"repo",message:`${e?.repo?"Edit":"Add"} git repository url:`,default:e?.repo||Y.repo},{type:"text",name:"owner",message:`${e?.owner?"Edit":"Add"} git repository owner:`,default:e?.owner||Y.owner}]);return{id:e?.id||Date.now().toString(),repo:t.repo,owner:t.owner}}var Z=X.join(B.homedir(),".tomjs","create-app"),ee=X.join(Z,"config.json");function C(){return xe(Z),Object.assign({gitRepos:[]},ve(ee))}function je(e){let t=C();t.createTime?t.updateTime=Date.now():t.createTime=Date.now(),be(ee,Object.assign(t,e))}function G(e){je({gitRepos:e})}async function k(e,t=!1){e||(e=C().gitRepos||[]);let r=e.map(p=>({name:q(p),value:p.id})).concat([{name:j.green("+ Add"),value:"add"},{name:j.yellow("\u2190 Exit"),value:"exit"}]),n=await b(e.length===0?"You choose to add or exit:":"You can choose the repository to be operated, or choose to add or exit:",r);if(n==="exit")return;if(n==="add"){let p=await H();return e.push(p),G(e),k(e,t)}let o=e.findIndex(p=>p.id===n),i=await b("Select an action?",[{name:j.green("^ Edit"),value:"edit"},{name:j.red("- Remove"),value:"remove"},{name:j.yellow("\u2190 Exit"),value:"exit"}]);if(i==="exit")return t?k(e,t):C();if(i==="remove")return await h("Where confirm to remove?",!0)&&(e.splice(o,1),G(e)),k(e,t);let c=await H(e[o]);return e[o]=c,G(e),k(e,t)}async function te(){let e=C(),{gitRepos:t}=e;return t.length===0&&(console.log(`You need to set the ${j.blue("git remote repository")} for the first time.`),await k(t)),e}var v={},Ce=g.join(Pe(import.meta.url),"../../"),pe=g.join(Ce,"templates"),Te=ae(g.join(pe,"config.json"))||{},O=Te.list||[],I=O.map(e=>e.variants?e.variants.map(t=>({parent:e,...t})):[]).flat(),Ie=O.map(e=>e.variants&&e.variants.map(t=>t.name)||[e.name]).reduce((e,t)=>e.concat(t),[]),Re=["name","version","displayName","description","private","type","engines","packageManager","keywords","categories","author","publisher","contributors","homepage","bugs","license","files","bin","main","module","types","exports","publishConfig","repository","activationEvents","contributes","badges","icon","vsce","scripts","dependencies","devDependencies","peerDependencies","optionalDependencies"],Ne=["dev","dev:*","debug","start","build","build:*","release","clean","preview","test","lint","lint:eslint","lint:stylelint","lint:prettier"];async function ne(e){return S(`git config --get ${e}`,{trim:!0})}var se=e=>/^(?:(@[a-z0-9.+-]+(-[a-z0-9.+-]+)*\/)?([a-z0-9][a-z0-9._-]*[a-z0-9]))$/.test(e),Fe=e=>/^[a-z0-9._-]+$/.test(e),Ue=e=>e.includes("/")?e.substring(e.indexOf("/")+1):e;function R(e){return ae(g.join(e,"package.json"))||{}}function M(e,t){Ee(g.join(e,"package.json"),t)}function re(e,t,r){let n={},o=Object.keys(e).sort(),i=p(t),c=p(r);return i.concat(o.filter(s=>!i.includes(s)&&!c.includes(s))).concat(c).forEach(s=>{n[s]=e[s]}),n;function p(s){let l=Array.isArray(s)?s:[];return l.length>0&&(l=l.reduce((m,a)=>{if(a.endsWith(":*")){let u=a.replace(":*",":");console.log("sk:",u);let d=o.filter(A=>!m.includes(A)&&A.startsWith(u));return m.concat(d)}return o.includes(a)?m.concat(a):m},[])),l}}async function le(e){if(Object.assign(v,e),v.git){await k(void 0,!0);return}v.type==="project"?await Ve():await ue(v.type)}async function Ve(){let e="project",t=await me(e,v.cwd),{projectDir:r}=t.userOptions;W(e,t),await J(t);let{workspaces:n}=t,o=g.join(r,"packages");n&&await h("Do you want to create an package?")&&await ue("package",o);let{examples:i}=t,c=Array.isArray(i)&&i.length>0;if(c){let s=I.filter(m=>i.includes(m.name)),l=g.join(r,"examples");for(let m of s){let a=ce(m);a.templates=fe(a.templates).concat(a.name);let u=g.join(l,a.name);a.userOptions={projectDir:u,pkgName:a.name,gitUserUrl:"",textVars:{}},await ge(a),W("example",a),await J(a)}}let p=w.existsSync(o)&&w.readdirSync(g.join(r,"packages")).length>0;if(p||c){let s=R(r),l=Q(s)||"npm",m=[];if(p&&m.push("packages"),c&&m.push("examples"),l==="pnpm"){let u=g.join(r,"pnpm-workspace.yaml");w.existsSync(u)||T(u,`packages:
2
- ${m.map(d=>` - '${d}/*'
3
- `)}`)}else s.workspaces??=m.map(u=>`"${u}/*"`),M(r,s);let a=s.devDependencies??{};p&&"vitest"in a&&T(g.join(r,"vitest.config.ts"),'export default ["packages/*"];')}await Qe(t)}async function ue(e,t){let r=!0,n=0;for(;r;){n++;let o=await me(e,t||v.cwd,n===1?v.template:void 0),{pkgName:i}=o.userOptions;W(e,o),await J(o),y.success(`${x.green(i)} created successfully!`),r=await h(`Do you want to create another ${e}?`)}}function oe(e,...t){!Array.isArray(t)||t.length===0||t.forEach(r=>{let n=g.join(e,r);w.existsSync(n)&&N(n)})}function Le(e,t,r){if(!w.existsSync(e))return;let n=ie(e);n=n.replaceAll(t,r),T(e,n)}function _e(e,t,r){let n=r.userOptions,{textVars:o}=n;if(["scripts","dependencies","devDependencies","peerDependencies"].forEach(i=>{e[i]&&(i==="scripts"?e[i]=re(e[i],Ne,["prepare"]):e[i]=re(e[i]))}),t==="example"?(delete e.types,delete e.exports,delete e.publishConfig,delete e.repository,delete e.module,delete e.license,e.private=!0):t==="package"&&e.repository&&typeof e.repository=="object"&&(e.repository.directory=`packages/${o.pkgShortName}`),!r.test){let i=e.scripts;if(i){delete i.test;{let c=i["lint:eslint"]||"";c&&(i["lint:eslint"]=c.replace(",test",""))}}delete e.devDependencies?.vitest}e.type==="commonjs"&&delete e.type,e.private===!1&&delete e.private}function W(e,t,r){let n=r??t.userOptions.projectDir,o=g.join(n,".temp");$e(o);let i=t.templates||[];if((e!=="project"?i:["base/core",...i]).forEach((p,s)=>{let l=g.join(pe,p);if(!w.existsSync(l))return;Ae(l,n);let m=R(o)||{},a=Se(m,R(n));if(s===i.length){let u={};Re.forEach(d=>{d in a&&(u[d]=a[d],delete a[d])}),a=Object.assign(u,a),_e(a,e,t),M(n,a)}else M(o,a)}),N(o),oe(n,"tests"),Le(g.join(n,"tsconfig.json"),', "test"',""),e==="package"){let p=[".vscode"].concat(t.packages?.exclude??[]);oe(n,...p)}}async function J(e,t){let r=e.userOptions,{textVars:n}=r,o=t??r.projectDir;w.readdirSync(o).filter(p=>p.startsWith("_")).forEach(p=>{w.renameSync(g.join(o,p),g.join(o,p.replace("_",".")))});let i=R(o),c=["LICENSE","README.md","README.zh_CN.md"];i.publishConfig||c.forEach(p=>{N(g.join(o,p))}),["package.json",...c].forEach(p=>{let s=g.join(o,p);if(!w.existsSync(s))return;let l=ie(s);Object.keys(n).forEach(m=>{l=l.replace(new RegExp("{{"+m+"}}","g"),n[m])}),T(s,l)})}async function me(e,t,r){let{gitRepos:n}=await te(),o=(v.name||"").trim(),i=se(o);(!o||!i)&&(o=await _("Package name:",{validate:a=>se(a)?!0:"Please input a valid name!"}));let c=Ue(o);c!==o&&(c=await _("Project name:",{default:c,validate:a=>Fe(a)?!0:"Please input a valid name!"})),y.debug("projectName:",c);let p=g.join(t,c);w.existsSync(p)&&await h("Project already exists, overwrite?")&&N(p),y.debug("projectDir:",p);let s;r&&Ie.includes(r)&&(s=I.find(a=>a.name===r));let l=async a=>{let u=await b(!s&&a?`${x.red(a)} is invalid, please select a framework again:`:"Select a framework:",O.filter(f=>!f.variants||!f.variants.length?!1:e==="package"?f.variants.filter($=>!$.packages?.ignore).length>0:!0).map(f=>({name:f.display,value:f.name})));y.debug("framework:",u);let d=O.find(f=>f.name===u)?.variants||[],A=e==="package"?d.filter(f=>!f.packages?.ignore).map(f=>{let $=f.parent;return $?{name:`${$.display} > ${f.display}`,value:f.name}:{name:f.display,value:f.name}}):d.map(f=>({name:f.display,value:f.name})),ye=O.find(f=>f.name===u)?.display,F=await b(`Select a ${x.blue(ye)} variant:`,A.concat([{name:x.yellow("\u2190 Back"),value:"_"}]));y.debug("variant:",F),F==="_"?await l(a):s=d.find(f=>f.name===F)};if(s||await l(r),!s)throw new Error("variant not found");s=ce(s),s.templates||(s.templates=[]),s.templates=fe(s.templates).concat(s.name),y.debug("variant:",s),e==="project"&&Array.isArray(s.examples)&&(s.examples=await K("Select examples:",s.examples.map(a=>{let u=I.find(d=>d.name===a);if(!u)throw new Error(`Can't find example ${x.yellow(a)} from ${x.blue(s.name)}`);return{name:u.display,value:u.name,checked:!0}}),{required:!1}));let m="";if(e==="example"?(s.devDependencies=0,s.workspaces=!1,s.test=!1):e==="package"?s.workspaces=!1:s.git&&(m=await b("Which git repository do you want to choose?",n.map(a=>{let u=q(a);return{name:u,value:u}}).concat([{name:x.yellow("None"),value:""}]))),s.devDependencies===2){let a=await h("Whether it will be used for devDependencies?");s.devDependencies=a?1:0}return s.test&&(s.test=await h("Whether to use test?")),s.userOptions={pkgName:o,projectDir:p,gitUserUrl:m},await ge(s),s}function fe(e){let t=[],r=async n=>{if(!(!Array.isArray(n)||!n.length))for(let o of n){if(o.startsWith("base/")){t.push(o);continue}let i=I.find(c=>c.name===o);if(!i){y.warning(`Can't find template ${x.yellow(o)}`);continue}r(i.templates)}};return r(e),[...new Set(t)]}async function ge(e){let{pkgName:t,gitUserUrl:r}=e.userOptions,n=await ne("user.name"),o=await ne("user.email"),i={name:n||Oe.userInfo().username,email:o||""},c=["pnpm","yarn","npm"].map(a=>`# ${a}
1
+ import Ge from"meow";import w from"node:fs";import Oe from"node:os";import g from"node:path";import{fileURLToPath as Pe}from"node:url";import{copySync as Ae,mkdirSync as $e,readFileSync as oe,readJsonSync as ie,rmSync as R,writeFileSync as C,writeJsonSync as Ee}from"@tomjs/node";import x from"chalk";import{camelCase as Se,cloneDeep as ae,merge as De}from"lodash-es";import H from"node:os";import B from"node:path";import{mkdirSync as xe,readJsonSync as ve,writeJsonSync as be}from"@tomjs/node";import j from"chalk";import ke from"inquirer";import we from"@tomjs/logger";import{$ as he}from"execa";import $ from"inquirer";var y=new we({directory:"create-app/logs"});function E(e,t,o){let n={message:e};return Array.isArray(t)||typeof t!="object"?n.default=t:Object.assign(n,t),Object.assign(n,o)}async function h(e,t){let o=`confirm-${Date.now()}`,n=E(e,t);return(await $.prompt([{type:"confirm",name:o,...n}]))[o]}async function L(e,t){let o=`input-${Date.now()}`,{required:n,...r}=E(e,t),i=n??!0,c=r.validate;return(i||c)&&(r.validate=s=>{let u=(s||"").trim();return i&&!u?"It's required!":c?c(s):!0}),(await $.prompt([{type:"input",name:o,...r}]))[o]}async function z(e,t,o){let n=`checkbox-${Date.now()}`,{required:r,min:i,max:c,...p}=E(e,o),s=r??!0,u=p.validate;return(s||i||c)&&(p.validate=a=>s&&a.length===0?"Please select at least one option":i&&a.length<i?`Please select at least ${i} options`:c&&a.length>c?`Please select at most ${c} options`:u?u(a):!0),(await $.prompt([{type:"checkbox",name:n,choices:t,pageSize:Math.min(t.length,10),...p}]))[n]}async function b(e,t,o){let n=`list-${Date.now()}`,r=E(e,o);return(await $.prompt([{type:"list",name:n,choices:t,pageSize:Math.min(t.length,10),...r}]))[n]}var U={cwd:"."};async function S(e,t){let{trim:o,...n}=Object.assign({stdio:"pipe",shell:!0,cwd:U.cwd},t);n.cwd??=U.cwd,Array.isArray(e)&&(e=e.join(" "));let r=i=>{U.verbose?y.debug(i):y.write(i)};r(`$ ${e}`);try{let c=(await he(n)`${e}`).stdout;return r(c),o?c.trim().replace(/\n|\r/g,""):c.trim()}catch(i){let c=i.stderr||i.message;throw r(c),new Error(c)}}function _(e){if(e&&e.packageManager)return e.packageManager.split("@")[0];let t=process.env.npm_config_user_agent;return t?t.split(" ")[0].split("/")[0]:void 0}var K={repo:"https://github.com",owner:H.userInfo().username};function G(e){let{repo:t,owner:o}=e;return`${t}${t.endsWith("/")?"":"/"}${o}`}async function Y(e){let t=await ke.prompt([{type:"text",name:"repo",message:`${e?.repo?"Edit":"Add"} git repository url:`,default:e?.repo||K.repo},{type:"text",name:"owner",message:`${e?.owner?"Edit":"Add"} git repository owner:`,default:e?.owner||K.owner}]);return{id:e?.id||Date.now().toString(),repo:t.repo,owner:t.owner}}var X=B.join(H.homedir(),".tomjs","create-app"),Z=B.join(X,"config.json");function D(){return xe(X),Object.assign({gitRepos:[]},ve(Z))}function je(e){let t=D();t.createTime?t.updateTime=Date.now():t.createTime=Date.now(),be(Z,Object.assign(t,e))}function Q(e){je({gitRepos:e})}async function k(e,t=!1){e||(e=D().gitRepos||[]);let o=e.map(p=>({name:G(p),value:p.id})).concat([{name:j.green("+ Add"),value:"add"},{name:j.yellow("\u2190 Exit"),value:"exit"}]),n=await b(e.length===0?"You choose to add or exit:":"You can choose the repository to be operated, or choose to add or exit:",o);if(n==="exit")return;if(n==="add"){let p=await Y();return e.push(p),Q(e),k(e,t)}let r=e.findIndex(p=>p.id===n),i=await b("Select an action?",[{name:j.green("^ Edit"),value:"edit"},{name:j.red("- Remove"),value:"remove"},{name:j.yellow("\u2190 Exit"),value:"exit"}]);if(i==="exit")return t?k(e,t):D();if(i==="remove")return await h("Where confirm to remove?",!0)&&(e.splice(r,1),Q(e)),k(e,t);let c=await Y(e[r]);return e[r]=c,Q(e),k(e,t)}async function ee(){let e=D(),{gitRepos:t}=e;return t.length===0&&(console.log(`You need to set the ${j.blue("git remote repository")} for the first time.`),await k(t)),e}var v={},Ce=g.join(Pe(import.meta.url),"../../"),ce=g.join(Ce,"templates"),Te=ie(g.join(ce,"config.json"))||{},O=Te.list||[],T=O.map(e=>e.variants?e.variants.map(t=>({parent:e,...t})):[]).flat(),Ie=O.map(e=>e.variants&&e.variants.map(t=>t.name)||[e.name]).reduce((e,t)=>e.concat(t),[]),Re=["name","version","displayName","description","private","type","engines","packageManager","keywords","categories","author","publisher","contributors","homepage","bugs","license","files","bin","main","module","types","exports","publishConfig","repository","activationEvents","contributes","badges","icon","vsce","scripts","dependencies","devDependencies","peerDependencies","optionalDependencies"],Ne=["dev","dev:","debug","start","build","build:","release","clean","preview","test","lint","lint:eslint","lint:stylelint","lint:prettier"];async function te(e){return S(`git config --get ${e}`,{trim:!0})}var ne=e=>/^(?:(@[a-z0-9.+-]+(-[a-z0-9.+-]+)*\/)?([a-z0-9][a-z0-9._-]*[a-z0-9]))$/.test(e),Ue=e=>/^[a-z0-9._-]+$/.test(e),Fe=e=>e.includes("/")?e.substring(e.indexOf("/")+1):e;function I(e){return ie(g.join(e,"package.json"))||{}}function q(e,t){Ee(g.join(e,"package.json"),t)}function se(e,t,o){let n={},r=Object.keys(e);{let s=r.filter(l=>l.includes(":"));r=r.filter(l=>!l.includes(":")).sort().concat(s)}let i=p(t),c=p(o);return i.concat(r.filter(s=>!i.includes(s)&&!c.includes(s))).concat(c).forEach(s=>{n[s]=e[s]}),n;function p(s){let u=Array.isArray(s)?s:[];return u.length>0&&(u=u.reduce((l,a)=>{if(a.endsWith(":")){let m=r.filter(d=>!l.includes(d)&&d.startsWith(a));return l.concat(m)}return r.includes(a)?l.concat(a):l},[])),u}}async function pe(e){if(Object.assign(v,e),v.git){await k(void 0,!0);return}v.type==="project"?await Ve():await le(v.type)}async function Ve(){let e="project",t=await ue(e,v.cwd),{projectDir:o}=t.userOptions;M(e,t),await W(t);let{workspaces:n}=t,r=g.join(o,"packages");n&&await h("Do you want to create an package?")&&await le("package",r);let{examples:i}=t,c=Array.isArray(i)&&i.length>0;if(c){let s=T.filter(l=>i.includes(l.name)),u=g.join(o,"examples");for(let l of s){let a=ae(l);a.templates=me(a.templates).concat(a.name);let m=g.join(u,a.name);a.userOptions={projectDir:m,pkgName:a.name,gitUserUrl:"",textVars:{}},await fe(a),M("example",a),await W(a)}}let p=w.existsSync(r)&&w.readdirSync(g.join(o,"packages")).length>0;if(p||c){let s=I(o),u=_(s)||"npm",l=[];if(p&&l.push("packages"),c&&l.push("examples"),u==="pnpm"){let m=g.join(o,"pnpm-workspace.yaml");w.existsSync(m)||C(m,`packages:
2
+ ${l.map(d=>` - '${d}/*'
3
+ `)}`)}else s.workspaces??=l.map(m=>`"${m}/*"`),q(o,s);let a=s.devDependencies??{};p&&"vitest"in a&&C(g.join(o,"vitest.config.ts"),'export default ["packages/*"];')}await Qe(t)}async function le(e,t){let o=!0,n=0;for(;o;){n++;let r=await ue(e,t||v.cwd,n===1?v.template:void 0),{pkgName:i}=r.userOptions;M(e,r),await W(r),y.success(`${x.green(i)} created successfully!`),o=await h(`Do you want to create another ${e}?`)}}function re(e,...t){!Array.isArray(t)||t.length===0||t.forEach(o=>{let n=g.join(e,o);w.existsSync(n)&&R(n)})}function Le(e,t,o){if(!w.existsSync(e))return;let n=oe(e);n=n.replaceAll(t,o),C(e,n)}function _e(e,t,o){let n=o.userOptions,{textVars:r}=n;if(["scripts","dependencies","devDependencies","peerDependencies"].forEach(i=>{e[i]&&(i==="scripts"?e[i]=se(e[i],Ne,["prepare"]):e[i]=se(e[i]))}),t==="example"?(delete e.types,delete e.exports,delete e.publishConfig,delete e.repository,delete e.module,delete e.license,e.private=!0):t==="package"&&e.repository&&typeof e.repository=="object"&&(e.repository.directory=`packages/${r.pkgShortName}`),!o.test){let i=e.scripts;if(i){delete i.test;{let c=i["lint:eslint"]||"";c&&(i["lint:eslint"]=c.replace(",test",""))}}delete e.devDependencies?.vitest}e.type==="commonjs"&&delete e.type,e.private===!1&&delete e.private,o.userOptions.gitUserUrl||delete e.repository}function M(e,t,o){let n=o??t.userOptions.projectDir,r=g.join(n,".temp");$e(r);let i=t.templates||[];if((e!=="project"?i:["base/core",...i]).forEach((p,s)=>{let u=g.join(ce,p);if(!w.existsSync(u))return;Ae(u,n);let l=I(r)||{},a=De(l,I(n));if(s===i.length){let m={};Re.forEach(d=>{d in a&&(m[d]=a[d],delete a[d])}),a=Object.assign(m,a),_e(a,e,t),q(n,a)}else q(r,a)}),R(r),re(n,"tests"),Le(g.join(n,"tsconfig.json"),', "test"',""),e==="package"){let p=[".vscode"].concat(t.packages?.exclude??[]);re(n,...p)}}async function W(e,t){let o=e.userOptions,{textVars:n}=o,r=t??o.projectDir;w.readdirSync(r).filter(p=>p.startsWith("_")).forEach(p=>{w.renameSync(g.join(r,p),g.join(r,p.replace("_",".")))});let i=I(r),c=["LICENSE","README.md","README.zh_CN.md"];i.publishConfig||c.forEach(p=>{R(g.join(r,p))}),["package.json",...c].forEach(p=>{let s=g.join(r,p);if(!w.existsSync(s))return;let u=oe(s);Object.keys(n).forEach(l=>{u=u.replace(new RegExp("{{"+l+"}}","g"),n[l])}),C(s,u)})}async function ue(e,t,o){let{gitRepos:n}=await ee(),r=(v.name||"").trim(),i=ne(r);(!r||!i)&&(r=await L("Package name:",{validate:a=>ne(a)?!0:"Please input a valid name!"}));let c=Fe(r);c!==r&&(c=await L("Project name:",{default:c,validate:a=>Ue(a)?!0:"Please input a valid name!"})),y.debug("projectName:",c);let p=g.join(t,c);w.existsSync(p)&&await h("Project already exists, overwrite?")&&R(p),y.debug("projectDir:",p);let s;o&&Ie.includes(o)&&(s=T.find(a=>a.name===o));let u=async a=>{let m=await b(!s&&a?`${x.red(a)} is invalid, please select a framework again:`:"Select a framework:",O.filter(f=>!f.variants||!f.variants.length?!1:e==="package"?f.variants.filter(A=>!A.packages?.ignore).length>0:!0).map(f=>({name:f.display,value:f.name})));y.debug("framework:",m);let d=O.find(f=>f.name===m)?.variants||[],de=e==="package"?d.filter(f=>!f.packages?.ignore).map(f=>{let A=f.parent;return A?{name:`${A.display} > ${f.display}`,value:f.name}:{name:f.display,value:f.name}}):d.map(f=>({name:f.display,value:f.name})),ye=O.find(f=>f.name===m)?.display,N=await b(`Select a ${x.blue(ye)} variant:`,de.concat([{name:x.yellow("\u2190 Back"),value:"_"}]));y.debug("variant:",N),N==="_"?await u(a):s=d.find(f=>f.name===N)};if(s||await u(o),!s)throw new Error("variant not found");s=ae(s),s.templates||(s.templates=[]),s.templates=me(s.templates).concat(s.name),y.debug("variant:",s),e==="project"&&Array.isArray(s.examples)&&(s.examples=await z("Select examples:",s.examples.map(a=>{let m=T.find(d=>d.name===a);if(!m)throw new Error(`Can't find example ${x.yellow(a)} from ${x.blue(s.name)}`);return{name:m.display,value:m.name,checked:!0}}),{required:!1}));let l="";if(e==="example"?(s.devDependencies=0,s.workspaces=!1,s.test=!1):e==="package"?s.workspaces=!1:s.git&&(l=await b("Which git repository do you want to choose?",n.map(a=>{let m=G(a);return{name:m,value:m}}).concat([{name:x.yellow("None"),value:""}]))),s.devDependencies===2){let a=await h("Whether it will be used for devDependencies?");s.devDependencies=a?1:0}return s.test&&(s.test=await h("Whether to use test?")),s.userOptions={pkgName:r,projectDir:p,gitUserUrl:l},await fe(s),s}function me(e){let t=[],o=async n=>{if(!(!Array.isArray(n)||!n.length))for(let r of n){if(r.startsWith("base/")){t.push(r);continue}let i=T.find(c=>c.name===r);if(!i){y.warning(`Can't find template ${x.yellow(r)}`);continue}o(i.templates)}};return o(e),[...new Set(t)]}async function fe(e){let{pkgName:t,gitUserUrl:o}=e.userOptions,n=await te("user.name"),r=await te("user.email"),i={name:n||Oe.userInfo().username,email:r||""},c=["pnpm","yarn","npm"].map(a=>`# ${a}
4
4
  ${a} add ${t}${e.devDependencies?" -D":""}`).join(`
5
5
 
6
- `),p={pkgName:t,pkgShortName:t.startsWith("@")?t.split("/")[1]:t,pkgInstall:c,gitUserName:i.name,gitUserEmail:i.email,gitOrg:l(),gitUrl:s(),gitFullUrl:m(),gitFullSSHUrl:m(),dateYear:new Date().getFullYear()};function s(){return`${r||`https://github.com/${l()}`}/${t.substring(t.indexOf("/")+1)}`}function l(){return r?r.substring(r.lastIndexOf("/")+1):t.startsWith("@")?t.split("/")[0].substring(1):De(i.name)}function m(a=!1){let u=r||`https://github.com/${l()}`;return a&&(u=u.replace(/http(s):\/\//g,"git@").replace(/\//,":")),`${u}/${t.substring(t.indexOf("/")+1)}.git`}return e.userOptions.textVars=p,p}async function Qe(e){let{gitUserUrl:t,textVars:r,projectDir:n}=e.userOptions;t&&(await S("git init",{cwd:n}),await S(`git remote add origin ${r.gitFullSSHUrl}`,{cwd:n}));let o=process.cwd(),i=g.relative(o,n);console.log(`
6
+ `),p={pkgName:t,pkgShortName:t.startsWith("@")?t.split("/")[1]:t,pkgInstall:c,gitUserName:i.name,gitUserEmail:i.email,gitOrg:u(),gitUrl:s(),gitFullUrl:l(),gitFullSSHUrl:l(),dateYear:new Date().getFullYear()};function s(){return`${o||`https://github.com/${u()}`}/${t.substring(t.indexOf("/")+1)}`}function u(){return o?o.substring(o.lastIndexOf("/")+1):t.startsWith("@")?t.split("/")[0].substring(1):Se(i.name)}function l(a=!1){let m=o||`https://github.com/${u()}`;return a&&(m=m.replace(/http(s):\/\//g,"git@").replace(/\//,":")),`${m}/${t.substring(t.indexOf("/")+1)}.git`}return e.userOptions.textVars=p,p}async function Qe(e){let{gitUserUrl:t,textVars:o,projectDir:n}=e.userOptions;t&&(await S("git init",{cwd:n}),await S(`git remote add origin ${o.gitFullSSHUrl}`,{cwd:n}));let r=process.cwd(),i=g.relative(r,n);console.log(`
7
7
  Done. Now run:
8
- `),n!==o&&console.log(` cd ${i.includes(" ")?`"${i}"`:i}`);let c=Q()||"npm";switch(c){case"yarn":console.log(" yarn"),console.log(" yarn dev");break;default:console.log(` ${c} install`),console.log(` ${c} run dev`);break}}var z=Ge(`
8
+ `),n!==r&&console.log(` cd ${i.includes(" ")?`"${i}"`:i}`);let c=_()||"npm";switch(c){case"yarn":console.log(" yarn"),console.log(" yarn dev");break;default:console.log(` ${c} install`),console.log(` ${c} run dev`);break}}var J=Ge(`
9
9
  Usage
10
10
  $ create-app [name] [options]
11
11
 
@@ -23,4 +23,4 @@ Options
23
23
  Examples
24
24
  $ create-app my-project
25
25
  $ create-app my-project --template=vue
26
- `,{importMeta:import.meta,booleanDefault:void 0,helpIndent:0,flags:{cwd:{type:"string"},verbose:{type:"boolean",default:process.env.NODE_ENV==="development"},example:{shortFlag:"e",type:"boolean",default:!1},package:{shortFlag:"p",type:"boolean",default:!1},h:{type:"boolean",default:!1},v:{type:"boolean",default:!1}}}),{input:de,flags:P}=z;if(P.h)z.showHelp(0);else if(P.v)z.showVersion();else{y.enableDebug(P.verbose),y.debug("cli options:",de,P);let e=Object.assign({name:de[0],type:"project"},P);e.cwd||=process.cwd(),y.debug("final options:",e),e.type=qe(e),await le(e)}function qe(e){return e.example?"example":e.package?"package":"project"}
26
+ `,{importMeta:import.meta,booleanDefault:void 0,helpIndent:0,flags:{cwd:{type:"string"},verbose:{type:"boolean",default:process.env.NODE_ENV==="development"},example:{shortFlag:"e",type:"boolean",default:!1},package:{shortFlag:"p",type:"boolean",default:!1},h:{type:"boolean",default:!1},v:{type:"boolean",default:!1}}}),{input:ge,flags:P}=J;if(P.h)J.showHelp(0);else if(P.v)J.showVersion();else{y.enableDebug(P.verbose),y.debug("cli options:",ge,P);let e=Object.assign({name:ge[0],type:"project"},P);e.cwd||=process.cwd(),y.debug("final options:",e),e.type=qe(e),await pe(e)}function qe(e){return e.example?"example":e.package?"package":"project"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tomjs/create-app",
3
3
  "type": "module",
4
- "version": "1.0.2",
4
+ "version": "1.2.0",
5
5
  "description": "create tomjs web app",
6
6
  "keywords": [
7
7
  "tomjs",
@@ -47,7 +47,7 @@
47
47
  "@tomjs/node": "^2.1.0",
48
48
  "chalk": "^5.3.0",
49
49
  "dayjs": "^1.11.11",
50
- "execa": "^9.1.0",
50
+ "execa": "^9.2.0",
51
51
  "inquirer": "^9.2.23",
52
52
  "lodash-es": "^4.17.21",
53
53
  "meow": "^13.2.0"
@@ -69,11 +69,11 @@
69
69
  "husky": "^9.0.11",
70
70
  "lint-staged": "^15.2.5",
71
71
  "npm-run-all": "^4.1.5",
72
- "prettier": "^3.3.0",
72
+ "prettier": "^3.3.1",
73
73
  "stylelint": "^16.6.1",
74
74
  "tsup": "^8.1.0",
75
- "tsx": "^4.11.2",
76
- "type-fest": "^4.19.0",
75
+ "tsx": "^4.15.1",
76
+ "type-fest": "^4.20.0",
77
77
  "typescript": "~5.4.5"
78
78
  },
79
79
  "scripts": {
@@ -5,7 +5,7 @@
5
5
  "engines": {
6
6
  "node": ">=16"
7
7
  },
8
- "packageManager": "pnpm@9.1.4",
8
+ "packageManager": "pnpm@9.2.0",
9
9
  "scripts": {
10
10
  "lint": "run-s lint:eslint lint:prettier",
11
11
  "lint:eslint": "eslint \"src/**/*.ts\" *.{js,cjs,mjs,ts} --fix --cache",
@@ -23,7 +23,7 @@
23
23
  "husky": "^9.0.11",
24
24
  "lint-staged": "^15.2.5",
25
25
  "npm-run-all": "^4.1.5",
26
- "prettier": "^3.3.0",
26
+ "prettier": "^3.3.1",
27
27
  "rimraf": "^5.0.7",
28
28
  "typescript": "~5.4.5"
29
29
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "description": "vite + electron",
2
3
  "type": "module",
3
4
  "engines": {
4
5
  "node": ">=18"
@@ -17,9 +18,8 @@
17
18
  },
18
19
  "devDependencies": {
19
20
  "@tomjs/vite-plugin-electron": "^1.9.0",
20
- "electron": "^30.0.9",
21
+ "electron": "^30.1.0",
21
22
  "electron-builder": "^24.13.3",
22
- "vite": "^5.2.12",
23
23
  "vite-plugin-electron-renderer": "^0.14.5"
24
24
  }
25
25
  }
@@ -39,8 +39,8 @@
39
39
  "@tomjs/node": "^2.1.0"
40
40
  },
41
41
  "devDependencies": {
42
- "tsx": "^4.11.2",
43
- "type-fest": "^4.19.0",
42
+ "tsx": "^4.15.1",
43
+ "type-fest": "^4.20.0",
44
44
  "vitest": "^1.6.0"
45
45
  }
46
46
  }
@@ -14,6 +14,6 @@
14
14
  "@types/react": "^18.3.3",
15
15
  "@types/react-dom": "^18.3.0",
16
16
  "@vitejs/plugin-react-swc": "^3.7.0",
17
- "vite": "^5.2.12"
17
+ "vite": "^5.2.13"
18
18
  }
19
19
  }
@@ -39,7 +39,8 @@
39
39
  "url": "git+{{gitUrl}}.git"
40
40
  },
41
41
  "bugs": {
42
- "url": "git+{{gitUrl}}/issues"
42
+ "url": "{{gitUrl}}/issues",
43
+ "email": "{{gitUserEmail}}"
43
44
  },
44
45
  "homepage": "{{gitUrl}}/blob/main/README.md",
45
46
  "icon": "resources/logo.png",
@@ -49,22 +50,22 @@
49
50
  },
50
51
  "scripts": {
51
52
  "dev": "run-p dev:*",
52
- "dev:i18n": "vscode-dev i18n --watch",
53
+ "dev:vsd": "vscode-dev --watch",
53
54
  "dev:dist": "vite",
54
- "build": "vscode-dev i18n && vite build",
55
+ "build": "vscode-dev && vite build",
55
56
  "lint": "run-s lint:eslint lint:stylelint lint:prettier",
56
57
  "lint:eslint": "eslint \"{src,extension}/**/*.{js,cjs,ts,tsx}\" *.{js,cjs,ts} --fix --cache"
57
58
  },
58
59
  "dependencies": {
59
60
  "@tomjs/node": "^2.1.0",
60
- "@tomjs/vscode": "^2.0.1",
61
+ "@tomjs/vscode": "^2.1.0",
61
62
  "@vscode/webview-ui-toolkit": "^1.4.0"
62
63
  },
63
64
  "devDependencies": {
64
65
  "@tomjs/vite-plugin-vscode": "^2.3.1",
65
- "@tomjs/vscode-dev": "^1.2.3",
66
+ "@tomjs/vscode-dev": "^2.2.0",
66
67
  "@types/vscode": "^1.56.0",
67
68
  "@types/vscode-webview": "^1.57.5",
68
- "vite": "^5.2.12"
69
+ "vite": "^5.2.13"
69
70
  }
70
71
  }
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717641233000" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3499" width="256" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M396.24 502.47m-41.91 0a41.91 41.91 0 1 0 83.82 0 41.91 41.91 0 1 0-83.82 0Z" fill="#005ba4" p-id="3500"></path><path d="M615.18 502.47m-41.91 0a41.91 41.91 0 1 0 83.82 0 41.91 41.91 0 1 0-83.82 0Z" fill="#005ba4" p-id="3501"></path><path d="M504.6 863.45c-216.57 0-348.06-211.65-348.06-304.73 0-177.6 156.14-322.1 348.06-322.1s348.06 144.5 348.06 322.1c0 91.13-118.42 304.73-348.06 304.73z m0-577.28c-164.6 0-298.51 122.26-298.51 272.55 0 73.6 118.97 255.18 298.51 255.18 193.9 0 298.51-181.13 298.51-255.18 0-150.29-133.91-272.55-298.51-272.55z" fill="#005ba4" p-id="3502"></path><path d="M181.3 583.5c-13.19 0-24.16-10.4-24.73-23.71l-15.63-360.94c-0.4-9.23 4.37-17.9 12.37-22.52a24.7 24.7 0 0 1 25.69 0.56l166.11 105.86c11.54 7.35 14.93 22.66 7.58 34.19-7.35 11.55-22.64 14.94-34.21 7.58L192.5 244.25l13.57 313.4c0.6 13.66-10.01 25.23-23.68 25.82-0.36 0.03-0.72 0.03-1.09 0.03zM830.12 583.5c-0.36 0-0.73 0-1.09-0.02-13.67-0.6-24.27-12.16-23.68-25.82l13.57-313.4-125.98 80.27c-11.56 7.34-26.86 3.95-34.21-7.56-7.35-11.55-3.96-26.85 7.58-34.21l166.1-105.86c7.8-5 17.7-5.21 25.69-0.56 8 4.61 12.77 13.29 12.37 22.52L854.84 559.8c-0.56 13.29-11.53 23.7-24.72 23.7zM911.81 790.16c-2 0-4.04-0.24-6.06-0.76l-234.1-58.97c-13.27-3.34-21.31-16.81-17.98-30.06 3.34-13.26 16.85-21.34 30.07-17.97l234.1 58.97c13.27 3.34 21.31 16.81 17.98 30.06-2.83 11.25-12.92 18.73-24.01 18.73zM116.13 790.16c-11.09 0-21.18-7.48-24.01-18.73-3.34-13.26 4.7-26.73 17.98-30.06l234.1-58.97c13.23-3.42 26.73 4.69 30.07 17.97 3.34 13.26-4.7 26.73-17.98 30.06l-234.1 58.97c-2.02 0.52-4.06 0.76-6.06 0.76zM340.67 633.18H40.23c-13.69 0-24.77-11.1-24.77-24.77 0-13.68 11.09-24.77 24.77-24.77h300.44c13.69 0 24.77 11.1 24.77 24.77s-11.09 24.77-24.77 24.77zM984.31 633.18H683.87c-13.69 0-24.77-11.1-24.77-24.77 0-13.68 11.09-24.77 24.77-24.77h300.44c13.69 0 24.77 11.1 24.77 24.77s-11.09 24.77-24.77 24.77z" fill="#005ba4" p-id="3503"></path><path d="M510.89 576.08m-33.31 0a33.31 33.31 0 1 0 66.62 0 33.31 33.31 0 1 0-66.62 0Z" fill="#005ba4" p-id="3504"></path><path d="M454.4 690.66c-44.81 0-81.27-36.45-81.27-81.27 0-13.68 11.09-24.77 24.77-24.77 13.69 0 24.77 11.1 24.77 24.77 0 17.5 14.23 31.73 31.73 31.73s31.72-14.23 31.72-31.73c0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0.01 44.82-36.45 81.27-81.26 81.27z" fill="#005ba4" p-id="3505"></path><path d="M567.39 690.66c-44.81 0-81.27-36.45-81.27-81.27 0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0 17.5 14.23 31.73 31.73 31.73s31.72-14.23 31.72-31.73c0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0.01 44.82-36.45 81.27-81.26 81.27z" fill="#005ba4" p-id="3506"></path></svg>
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "devDependencies": {
13
13
  "@vitejs/plugin-vue": "^5.0.5",
14
- "vite": "^5.2.12",
15
- "vue-tsc": "^2.0.19"
14
+ "vite": "^5.2.13",
15
+ "vue-tsc": "^2.0.21"
16
16
  }
17
17
  }
@@ -87,17 +87,20 @@
87
87
  "variants": [
88
88
  {
89
89
  "name": "vscode",
90
- "display": "Base"
90
+ "display": "Base",
91
+ "git": 2
91
92
  },
92
93
  {
93
94
  "name": "vscode-vue",
94
95
  "display": "Vue",
95
- "templates": ["base/style", "base/vue", "base/vscode"]
96
+ "templates": ["base/style", "base/vue", "base/vscode"],
97
+ "git": 2
96
98
  },
97
99
  {
98
100
  "name": "vscode-react",
99
101
  "display": "React",
100
- "templates": ["base/style", "base/react", "base/vscode"]
102
+ "templates": ["base/style", "base/react", "base/vscode"],
103
+ "git": 2
101
104
  }
102
105
  ]
103
106
  }
@@ -1,26 +1,3 @@
1
1
  {
2
- "description": "vite + electron + vue",
3
- "type": "module",
4
- "engines": {
5
- "node": ">=18"
6
- },
7
- "main": "dist/main/index.mjs",
8
- "scripts": {
9
- "dev": "vite",
10
- "debug": "cross-env VITE_ELECTRON_DEBUG=1 npm run dev",
11
- "build": "npm run clean && vite build",
12
- "release": "cross-env VITE_ELECTRON_BUILDER=1 npm run build",
13
- "clean": "rimraf ./dist",
14
- "lint:eslint": "eslint \"{src,electron}/**/*.{ts,tsx}\" *.{js,cjs,mjs,ts} --fix --cache"
15
- },
16
- "dependencies": {
17
- "@tomjs/electron-devtools-installer": "^2.2.1"
18
- },
19
- "devDependencies": {
20
- "@tomjs/vite-plugin-electron": "^1.9.0",
21
- "electron": "^30.0.9",
22
- "electron-builder": "^24.13.3",
23
- "vite": "^5.2.12",
24
- "vite-plugin-electron-renderer": "^0.14.5"
25
- }
2
+ "description": "vite + electron + react"
26
3
  }
@@ -11,7 +11,7 @@
11
11
  "dependencies": {},
12
12
  "devDependencies": {
13
13
  "tsup": "^8.1.0",
14
- "vite": "^5.2.12"
14
+ "vite": "^5.2.13"
15
15
  },
16
16
  "peerDependencies": {
17
17
  "vite": ">=2"
@@ -1,5 +1,4 @@
1
1
  {
2
- "name": "vscode-extension",
3
2
  "displayName": "%displayName%",
4
3
  "description": "%description%",
5
4
  "version": "0.0.0",
@@ -31,7 +30,8 @@
31
30
  "url": "git+{{gitUrl}}.git"
32
31
  },
33
32
  "bugs": {
34
- "url": "git+{{gitUrl}}/issues"
33
+ "url": "{{gitUrl}}/issues",
34
+ "email": "{{gitUserEmail}}"
35
35
  },
36
36
  "homepage": "{{gitUrl}}/blob/main/README.md",
37
37
  "icon": "resources/logo.png",
@@ -41,16 +41,16 @@
41
41
  },
42
42
  "scripts": {
43
43
  "dev": "run-p dev:*",
44
- "dev:i18n": "vscode-dev i18n --watch",
44
+ "dev:vsd": "vscode-dev --watch",
45
45
  "dev:dist": "tsup --watch",
46
- "build": "vscode-dev i18n && tsup --minify"
46
+ "build": "vscode-dev && tsup --minify"
47
47
  },
48
48
  "dependencies": {
49
49
  "@tomjs/node": "^2.1.0",
50
- "@tomjs/vscode": "^2.0.1"
50
+ "@tomjs/vscode": "^2.1.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@tomjs/vscode-dev": "^1.2.3",
53
+ "@tomjs/vscode-dev": "^2.2.0",
54
54
  "@types/vscode": "^1.56.0",
55
55
  "tsup": "^8.1.0"
56
56
  }
Binary file
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717641233000" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3499" width="256" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M396.24 502.47m-41.91 0a41.91 41.91 0 1 0 83.82 0 41.91 41.91 0 1 0-83.82 0Z" fill="#005ba4" p-id="3500"></path><path d="M615.18 502.47m-41.91 0a41.91 41.91 0 1 0 83.82 0 41.91 41.91 0 1 0-83.82 0Z" fill="#005ba4" p-id="3501"></path><path d="M504.6 863.45c-216.57 0-348.06-211.65-348.06-304.73 0-177.6 156.14-322.1 348.06-322.1s348.06 144.5 348.06 322.1c0 91.13-118.42 304.73-348.06 304.73z m0-577.28c-164.6 0-298.51 122.26-298.51 272.55 0 73.6 118.97 255.18 298.51 255.18 193.9 0 298.51-181.13 298.51-255.18 0-150.29-133.91-272.55-298.51-272.55z" fill="#005ba4" p-id="3502"></path><path d="M181.3 583.5c-13.19 0-24.16-10.4-24.73-23.71l-15.63-360.94c-0.4-9.23 4.37-17.9 12.37-22.52a24.7 24.7 0 0 1 25.69 0.56l166.11 105.86c11.54 7.35 14.93 22.66 7.58 34.19-7.35 11.55-22.64 14.94-34.21 7.58L192.5 244.25l13.57 313.4c0.6 13.66-10.01 25.23-23.68 25.82-0.36 0.03-0.72 0.03-1.09 0.03zM830.12 583.5c-0.36 0-0.73 0-1.09-0.02-13.67-0.6-24.27-12.16-23.68-25.82l13.57-313.4-125.98 80.27c-11.56 7.34-26.86 3.95-34.21-7.56-7.35-11.55-3.96-26.85 7.58-34.21l166.1-105.86c7.8-5 17.7-5.21 25.69-0.56 8 4.61 12.77 13.29 12.37 22.52L854.84 559.8c-0.56 13.29-11.53 23.7-24.72 23.7zM911.81 790.16c-2 0-4.04-0.24-6.06-0.76l-234.1-58.97c-13.27-3.34-21.31-16.81-17.98-30.06 3.34-13.26 16.85-21.34 30.07-17.97l234.1 58.97c13.27 3.34 21.31 16.81 17.98 30.06-2.83 11.25-12.92 18.73-24.01 18.73zM116.13 790.16c-11.09 0-21.18-7.48-24.01-18.73-3.34-13.26 4.7-26.73 17.98-30.06l234.1-58.97c13.23-3.42 26.73 4.69 30.07 17.97 3.34 13.26-4.7 26.73-17.98 30.06l-234.1 58.97c-2.02 0.52-4.06 0.76-6.06 0.76zM340.67 633.18H40.23c-13.69 0-24.77-11.1-24.77-24.77 0-13.68 11.09-24.77 24.77-24.77h300.44c13.69 0 24.77 11.1 24.77 24.77s-11.09 24.77-24.77 24.77zM984.31 633.18H683.87c-13.69 0-24.77-11.1-24.77-24.77 0-13.68 11.09-24.77 24.77-24.77h300.44c13.69 0 24.77 11.1 24.77 24.77s-11.09 24.77-24.77 24.77z" fill="#005ba4" p-id="3503"></path><path d="M510.89 576.08m-33.31 0a33.31 33.31 0 1 0 66.62 0 33.31 33.31 0 1 0-66.62 0Z" fill="#005ba4" p-id="3504"></path><path d="M454.4 690.66c-44.81 0-81.27-36.45-81.27-81.27 0-13.68 11.09-24.77 24.77-24.77 13.69 0 24.77 11.1 24.77 24.77 0 17.5 14.23 31.73 31.73 31.73s31.72-14.23 31.72-31.73c0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0.01 44.82-36.45 81.27-81.26 81.27z" fill="#005ba4" p-id="3505"></path><path d="M567.39 690.66c-44.81 0-81.27-36.45-81.27-81.27 0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0 17.5 14.23 31.73 31.73 31.73s31.72-14.23 31.72-31.73c0-13.68 11.09-24.77 24.77-24.77s24.77 11.1 24.77 24.77c0.01 44.82-36.45 81.27-81.26 81.27z" fill="#005ba4" p-id="3506"></path></svg>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "scripts": {
3
- "build": "vscode-dev i18n && vue-tsc --noEmit && vite build",
3
+ "build": "vscode-dev && vue-tsc --noEmit && vite build",
4
4
  "lint:eslint": "eslint \"{src,extension}/**/*.{js,cjs,ts,tsx,vue}\" *.{js,cjs,ts} --fix --cache"
5
5
  }
6
6
  }