wbfy 1.71.3 → 1.71.5

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.
@@ -1,8 +1,8 @@
1
- "use strict";var Ut=Object.create;var $e=Object.defineProperty;var Gt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Yt=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of zt(t))!Ht.call(e,a)&&a!==i&&$e(e,a,{get:()=>t[a],enumerable:!(n=Gt(t,a))||n.enumerable});return e};var c=(e,t,i)=>(i=e!=null?Ut(Mt(e)):{},Yt(t||!e||!e.__esModule?$e(i,"default",{value:e,enumerable:!0}):i,e));var Wt=c(require("node:path")),It=c(require("glob")),Jt=c(require("yargs"));var G=c(require("node:fs")),q=c(require("node:path"));var ae=class{isVerbose;constructor(){this.isVerbose=!1}},j=new ae;var le=class{async function(t,i){j.isVerbose&&console.info(`--------- ${t} start ---------`),await i(),j.isVerbose&&console.info(`---------- ${t} end ----------`)}},u=new le;var Re=require("minimal-promise-pool"),p=new Re.PromisePool;var ce=c(require("node:child_process"));function v(e,t,i,n=0){do{let[a,r,s]=Te(e,t,i);if(console.log(`$ ${a} ${r.join(" ")} at ${s.cwd}`),ce.default.spawnSync(a,r,s).status===0)break}while(--n>=0)}function U(e,t,i){let[n,a,r]=Te(e,t,i);r.stdio="pipe";let s=ce.default.spawnSync(n,a,r),o=s.stderr.toString().trim();return o&&console.error(`${n} [${a.map(l=>`"${l}"`)}] caused the following error:
2
- ${o}`),s.stdout.toString().trim()}function Te(e,t,i){let n={...process.env};return n.PATH&&n.BERRY_BIN_FOLDER&&(n.PATH=n.PATH.replace(`${n.BERRY_BIN_FOLDER}:`,"")),n.ASDF_DIR&&(t=["-l","-c",`. ${n.ASDF_DIR}/asdf.sh && ${e} ${t.join(" ")}`],e="bash"),[e,t,{cwd:i,env:n,shell:!1,stdio:"inherit"}]}async function je(e){return u.function("generateVersionConfigs",async()=>{await Kt(e)})}async function Kt(e){if(!e.versionsText)return;let t=[];for(let n of e.versionsText.trim().split(`
3
- `)){let a=n.trim();if(a&&a.split(/\s+/)[0]!=="nodejs"){t.push(a);continue}let[,r]=a.split(/\s+/);await p.run(()=>G.default.promises.writeFile(q.default.resolve(e.dirPath,".node-version"),r))}if(e.containingPoetryLock&&(K("poetry 1.2.2",0,t),G.default.existsSync(q.default.resolve(e.dirPath,".python-version"))||K("python 3.9.15",0,t)),e.depending.firebase&&K("java adoptopenjdk-17.0.5+8",0,t),e.containingPackageJson){let n=U("npm",["show","yarn","version"],e.dirPath);K(`yarn ${n}`,t.length,t)}let i=q.default.resolve(e.dirPath,".tool-versions");await(t.length>0?p.run(()=>G.default.promises.writeFile(i,t.join(`
1
+ "use strict";var Ut=Object.create;var Re=Object.defineProperty;var Gt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Yt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of zt(t))!Ht.call(e,a)&&a!==r&&Re(e,a,{get:()=>t[a],enumerable:!(n=Gt(t,a))||n.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Ut(Mt(e)):{},Yt(t||!e||!e.__esModule?Re(r,"default",{value:e,enumerable:!0}):r,e));var Wt=c(require("node:path")),It=c(require("glob")),Jt=c(require("yargs"));var G=c(require("node:fs")),q=c(require("node:path"));var ae=class{isVerbose;constructor(){this.isVerbose=!1}},j=new ae;var le=class{async function(t,r){j.isVerbose&&console.info(`--------- ${t} start ---------`),await r(),j.isVerbose&&console.info(`---------- ${t} end ----------`)}},d=new le;var Te=require("minimal-promise-pool"),p=new Te.PromisePool;var ce=c(require("node:child_process"));function v(e,t,r,n=0){do{let[a,i,s]=je(e,t,r);if(console.log(`$ ${a} ${i.join(" ")} at ${s.cwd}`),ce.default.spawnSync(a,i,s).status===0)break}while(--n>=0)}function U(e,t,r){let[n,a,i]=je(e,t,r);i.stdio="pipe";let s=ce.default.spawnSync(n,a,i),o=s.stderr.toString().trim();return o&&console.error(`${n} [${a.map(l=>`"${l}"`)}] caused the following error:
2
+ ${o}`),s.stdout.toString().trim()}function je(e,t,r){let n={...process.env};return n.PATH&&n.BERRY_BIN_FOLDER&&(n.PATH=n.PATH.replace(`${n.BERRY_BIN_FOLDER}:`,"")),n.ASDF_DIR&&(t=["-l","-c",`. ${n.ASDF_DIR}/asdf.sh && ${e} ${t.join(" ")}`],e="bash"),[e,t,{cwd:r,env:n,shell:!1,stdio:"inherit"}]}async function Ee(e){return d.function("generateVersionConfigs",async()=>{await Kt(e)})}async function Kt(e){if(!e.versionsText)return;let t=[];for(let n of e.versionsText.trim().split(`
3
+ `)){let a=n.trim();if(a&&a.split(/\s+/)[0]!=="nodejs"){t.push(a);continue}let[,i]=a.split(/\s+/);await p.run(()=>G.default.promises.writeFile(q.default.resolve(e.dirPath,".node-version"),i))}if(e.containingPoetryLock&&(K("poetry 1.2.2",0,t),G.default.existsSync(q.default.resolve(e.dirPath,".python-version"))||K("python 3.9.15",0,t)),e.depending.firebase&&K("java adoptopenjdk-17.0.5+8",0,t),e.containingPackageJson){let n=U("npm",["show","yarn","version"],e.dirPath);K(`yarn ${n}`,t.length,t)}let r=q.default.resolve(e.dirPath,".tool-versions");await(t.length>0?p.run(()=>G.default.promises.writeFile(r,t.join(`
4
4
  `)+`
5
- `)):p.run(()=>G.default.promises.rm(i,{force:!0}))),await p.promiseAll(),v("asdf",["plugin","update","--all"],e.dirPath),v("asdf",["install"],e.dirPath)}function K(e,t,i){let[n]=e.split(" "),a=i.findIndex(r=>r.split(/\s+/)[0]===n);a>=0?i[a]=e:i.splice(t,0,e)}var Ee=c(require("node:path"));var k={codeWith2IndentSize:["cjs","mjs","js","jsx","cts","mts","ts","tsx","json","json5","cpp","dart","htm","html","pu","puml","rb","vue","yaml","yml"].sort(),codeWith4IndentSize:["go","gradle","py"].sort(),codeWith8IndentSize:["sh"].sort(),markdownLike:["md"].sort(),eslint:["cjs","mjs","js","cts","mts","ts","tsx","jsx"].sort(),prettier:["cjs","mjs","js","jsx","cts","mts","ts","tsx","json","json5","css","htm","html","md","scss","vue","yaml","yml"].sort()};var pe=c(require("node:fs/promises")),h={async readFileIgnoringError(e){try{return await pe.default.readFile(e,"utf8")}catch{}},async generateFile(e,t){await pe.default.writeFile(e,t),console.log(`Generated ${e}`)}};var qt=`root = true
5
+ `)):p.run(()=>G.default.promises.rm(r,{force:!0}))),await p.promiseAll(),v("asdf",["plugin","update","--all"],e.dirPath),v("asdf",["install"],e.dirPath)}function K(e,t,r){let[n]=e.split(" "),a=r.findIndex(i=>i.split(/\s+/)[0]===n);a>=0?r[a]=e:r.splice(t,0,e)}var Oe=c(require("node:path"));var k={codeWith2IndentSize:["cjs","mjs","js","jsx","cts","mts","ts","tsx","json","json5","cpp","dart","htm","html","pu","puml","rb","vue","yaml","yml"].sort(),codeWith4IndentSize:["go","gradle","py"].sort(),codeWith8IndentSize:["sh"].sort(),markdownLike:["md"].sort(),eslint:["cjs","mjs","js","cts","mts","ts","tsx","jsx"].sort(),prettier:["cjs","mjs","js","jsx","cts","mts","ts","tsx","json","json5","css","htm","html","md","scss","vue","yaml","yml"].sort()};var pe=c(require("node:fs/promises")),h={async readFileIgnoringError(e){try{return await pe.default.readFile(e,"utf8")}catch{}},async generateFile(e,t){await pe.default.writeFile(e,t),console.log(`Generated ${e}`)}};var qt=`root = true
6
6
 
7
7
  [*]
8
8
  charset = utf-8
@@ -28,19 +28,19 @@ trim_trailing_whitespace = false
28
28
 
29
29
  [{Makefile,*.mk}]
30
30
  indent_style = tab
31
- `;async function Oe(e){return u.function("generateEditorconfig",async()=>{let t=Ee.default.resolve(e.dirPath,".editorconfig");await p.run(()=>h.generateFile(t,qt))})}function V(e){return e.length>1?`[*.{${e.join(",")}}]`:`[*.${e[0]}]`}var ue=c(require("node:path"));var me=c(require("node:fs")),z="# Project-specific settings",De=/# Project-specific settings[^\n]*\n/gm,Ie="# Generated by wbfy",Vt="# Generated by ",Be=`${z} (head)
31
+ `;async function De(e){return d.function("generateEditorconfig",async()=>{let t=Oe.default.resolve(e.dirPath,".editorconfig");await p.run(()=>h.generateFile(t,qt))})}function V(e){return e.length>1?`[*.{${e.join(",")}}]`:`[*.${e[0]}]`}var de=c(require("node:path"));var me=c(require("node:fs")),z="# Project-specific settings",Be=/# Project-specific settings[^\n]*\n/gm,Je="# Generated by wbfy",Vt="# Generated by ",Ne=`${z} (head)
32
32
 
33
33
 
34
- ${Ie}
35
- `,Ne=`
34
+ ${Je}
35
+ `,We=`
36
36
  ${z} (tail)
37
- `,b={separator:Ie,separatorPrefix:Vt,defaultHeadUserContent:Be,defaultTailUserContent:Ne,async readGitignoreWithoutSeparators(e){try{let t=await me.default.promises.readFile(e,"utf8"),i=We(t);return i>0&&(t=t.slice(0,i-1)),t.replace(De,"").replace(/# Generated by [^\n]*\n/gm,"").replace(/\r?\n\r?\n(\r?\n)+/gm,`
37
+ `,b={separator:Je,separatorPrefix:Vt,defaultHeadUserContent:Ne,defaultTailUserContent:We,async readGitignoreWithoutSeparators(e){try{let t=await me.default.promises.readFile(e,"utf8"),r=Ie(t);return r>0&&(t=t.slice(0,r-1)),t.replace(Be,"").replace(/# Generated by [^\n]*\n/gm,"").replace(/\r?\n\r?\n(\r?\n)+/gm,`
38
38
 
39
39
  `).trim()+`
40
40
  `}catch{}},getHeadUserContent(e){let t=e.indexOf(this.separatorPrefix);return t>=0?e.slice(0,e.indexOf(`
41
- `,t)+1).replace(De,`${z} (head)
42
- `):Be},getTailUserContent(e){let t=We(e);return t>0?e.slice(t-1):Ne},async isBerryZeroInstallEnabled(e){try{return(await me.default.promises.readFile(e,"utf8")).includes(`
43
- !.yarn/cache`)}catch{return!1}}};function We(e){let t=e.indexOf(z),i=e.lastIndexOf(z);return i>t?i:-1}var Je=`
41
+ `,t)+1).replace(Be,`${z} (head)
42
+ `):Ne},getTailUserContent(e){let t=Ie(e);return t>0?e.slice(t-1):We},async isBerryZeroInstallEnabled(e){try{return(await me.default.promises.readFile(e,"utf8")).includes(`
43
+ !.yarn/cache`)}catch{return!1}}};function Ie(e){let t=e.indexOf(z),r=e.lastIndexOf(z);return r>t?r:-1}var Le=`
44
44
  3rd-party/
45
45
  @types/
46
46
  __generated__/
@@ -53,20 +53,21 @@ test-fixtures/
53
53
  *.min.*js
54
54
  .yarn/
55
55
  .pnp.js
56
- `;async function Le(e){return u.function("generateEslintignore",async()=>{let t=ue.default.resolve(e.dirPath,".eslintignore"),i=await h.readFileIgnoringError(t)??"",n=b.getHeadUserContent(i)+Je,a=b.getTailUserContent(i),r=ue.default.resolve(e.dirPath,".gitignore"),s=await b.readGitignoreWithoutSeparators(r)||"",o=n+Je+s+a;await p.run(()=>h.generateFile(t,o))})}var Ge=c(require("node:fs")),ze=c(require("node:path")),Me=c(require("deepmerge"));var Ae=c(require("deepmerge"));function W(e,t){return t}function X(e,t,i){let n=[...e];for(let[a,r]of t.entries())n[a]===void 0?n[a]=i.cloneUnlessOtherwiseSpecified(r,i):i.isMergeableObject(r)?n[a]=(0,Ae.default)(e[a],r,i):e.includes(r)||n.push(r);return n}async function He(e,t){return u.function("generateEslintrc",async()=>{if(t.depending.blitz==="2")return;let i=[];e.eslintBase&&i.push(e.eslintBase),e!==t&&i.push("../../.eslintrc.json");let n={root:!0,extends:i},a=ze.default.resolve(e.dirPath,".eslintrc.json");try{let s=await Ge.default.promises.readFile(a,"utf8"),o=JSON.parse(s);o.extends&&(o.extends=o.extends.filter(g=>!g.startsWith("@willbooster/")&&g!=="../../.eslintrc.json")),i.length===0&&(o.extends=[]);let l=n.extends;n.extends=o.extends,o.extends=l,n=Me.default.all([n,o,n],{arrayMerge:X}),e.depending.blitz==="0"?Ue(n,"blitz"):e.depending.blitz==="2"&&Ue(n,"@blitzjs/next/eslint")}catch{}let r=JSON.stringify(n);await p.run(()=>h.generateFile(a,r))})}function Ue(e,t){e.extends=[t,...e.extends.filter(i=>i!==t)]}var Ye=c(require("node:path"));var Xt=`* text=auto
56
+ `;async function Ae(e){return d.function("generateEslintignore",async()=>{let t=de.default.resolve(e.dirPath,".eslintignore"),r=await h.readFileIgnoringError(t)??"",n=b.getHeadUserContent(r)+Le,a=b.getTailUserContent(r),i=de.default.resolve(e.dirPath,".gitignore"),s=await b.readGitignoreWithoutSeparators(i)||"",o=n+Le+s+a;await p.run(()=>h.generateFile(t,o))})}var ze=c(require("node:fs")),Me=c(require("node:path")),He=c(require("deepmerge"));var Ue=c(require("deepmerge"));function W(e,t){return t}function X(e,t,r){let n=[...e];for(let[a,i]of t.entries())n[a]===void 0?n[a]=r.cloneUnlessOtherwiseSpecified(i,r):r.isMergeableObject(i)?n[a]=(0,Ue.default)(e[a],i,r):e.includes(i)||n.push(i);return n}async function Ye(e,t){return d.function("generateEslintrc",async()=>{if(t.depending.blitz==="2")return;let r=[];e.eslintBase&&r.push(e.eslintBase),e!==t&&r.push("../../.eslintrc.json");let n={root:!0,extends:r},a=Me.default.resolve(e.dirPath,".eslintrc.json");try{let s=await ze.default.promises.readFile(a,"utf8"),o=JSON.parse(s);o.extends&&(o.extends=o.extends.filter(g=>!g.startsWith("@willbooster/")&&g!=="../../.eslintrc.json")),r.length===0&&(o.extends=[]);let l=n.extends;n.extends=o.extends,o.extends=l,n=He.default.all([n,o,n],{arrayMerge:X}),e.depending.blitz==="0"?Ge(n,"blitz"):e.depending.blitz==="2"&&Ge(n,"@blitzjs/next/eslint")}catch{}let i=JSON.stringify(n);await p.run(()=>h.generateFile(a,i))})}function Ge(e,t){e.extends=[t,...e.extends.filter(r=>r!==t)]}var Ke=c(require("node:path"));var Xt=`* text=auto
57
57
 
58
58
  *.vcproj text eol=crlf
59
59
 
60
60
  ${[...k.codeWith2IndentSize,...k.codeWith4IndentSize,...k.markdownLike].map(e=>`*.${e} text eol=lf`).join(`
61
61
  `)}
62
- `;async function Ke(e){return u.function("generateGitattributes",async()=>{let t=Ye.default.resolve(e.dirPath,".gitattributes");await p.run(()=>h.generateFile(t,Xt))})}var M=c(require("node:fs")),qe=c(require("node:os")),I=c(require("node:path"));var Zt=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],Qt=`
62
+ `;async function qe(e){return d.function("generateGitattributes",async()=>{let t=Ke.default.resolve(e.dirPath,".gitattributes");await p.run(()=>h.generateFile(t,Xt))})}var M=c(require("node:fs")),Ve=c(require("node:os")),I=c(require("node:path"));var Zt=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],Qt=`
63
63
  .devcontainer/
64
+ .venv/
64
65
  dist/
65
66
  temp/
66
67
  Icon[\r]
67
68
  *.sqlite3
68
69
  *.sqlite3-journal
69
- `;async function Ve(e,t){return u.function("generateGitignore",async()=>{let i=I.default.resolve(e.dirPath,".gitignore"),n=await h.readFileIgnoringError(i)??"",a=b.getHeadUserContent(n)+Qt,r=b.getTailUserContent(n),s=[...Zt];e.containingGemfile&&s.push("ruby"),e.containingGoMod&&(s.push("go"),a+=`${I.default.basename(e.dirPath)}
70
+ `;async function Xe(e,t){return d.function("generateGitignore",async()=>{let r=I.default.resolve(e.dirPath,".gitignore"),n=await h.readFileIgnoringError(r)??"",a=b.getHeadUserContent(n)+Qt,i=b.getTailUserContent(n),s=[...Zt];e.containingGemfile&&s.push("ruby"),e.containingGoMod&&(s.push("go"),a+=`${I.default.basename(e.dirPath)}
70
71
  `),e.containingPackageJson&&s.push("node"),e.containingPomXml&&(s.push("maven"),a+=`.idea/google-java-format.xml
71
72
  `),e.containingPubspecYaml&&(s.push("flutter","AndroidStudio","ruby"),a+=`.flutter-plugins-dependencies
72
73
  android/key.properties
@@ -78,11 +79,11 @@ packaged.yaml
78
79
  android/app/src/main/assets/
79
80
  `),t.depending.storybook&&s.push("storybookjs"),t.depending.blitz&&(s.push("nextjs"),a+=`.blitz/
80
81
  .blitz**
81
- `);let o="";for(let g of s){let f=await ti(g)??"";if(!f){let y=`https://www.toptal.com/developers/gitignore/api/${g}`,w=await(await fetch(y)).text();if(w.includes("Attention Required!")){console.error(`Failed to fetch ${y}`);return}f=w.trim(),await p.run(()=>ei(g,f)),j.isVerbose&&console.info(`Fetched ${y}`)}o&&(o+=`
82
+ `);let o="";for(let g of s){let f=await tr(g)??"";if(!f){let y=`https://www.toptal.com/developers/gitignore/api/${g}`,w=await(await fetch(y)).text();if(w.includes("Attention Required!")){console.error(`Failed to fetch ${y}`);return}f=w.trim(),await p.run(()=>er(g,f)),j.isVerbose&&console.info(`Fetched ${y}`)}o&&(o+=`
82
83
  `),o+=f+`
83
- `}await b.isBerryZeroInstallEnabled(i)||(o=o.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*")),(e.containingPomXml||e.containingPubspecYaml)&&(o=o.replace(/^# .idea\/artifacts$/gm,".idea/artifacts").replace(/^# .idea\/compiler.xml$/gm,".idea/compiler.xml").replace(/^# .idea\/jarRepositories.xml$/gm,".idea/jarRepositories.xml").replace(/^# .idea\/modules.xml$/gm,".idea/modules.xml").replace(/^# .idea\/*.iml$/gm,".idea/*.iml").replace(/^# .idea\/modules$/gm,".idea/modules").replace(/^# *.iml$/gm,"*.iml").replace(/^# *.ipr$/gm,"*.ipr"),e.containingPubspecYaml&&(o=o.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),o=o.replace(/^.idea\/?$/gm,"# .idea"),(t.depending.reactNative||e.depending.reactNative||e.containingPubspecYaml)&&(o=o.replace(/^(.idea\/.+)$/gm,`$1
84
- android/$1`));let l=a+o+r;await p.run(()=>h.generateFile(i,l))})}var Z=I.default.join(qe.default.homedir(),".cache","wbfy","gitignore");async function ei(e,t){await M.default.promises.mkdir(Z,{recursive:!0}),await M.default.promises.writeFile(I.default.join(Z,e),t)}async function ti(e){try{let t=await M.default.promises.stat(I.default.join(Z,e));return Date.now()-t.mtimeMs>6*60*60*1e3?void 0:await M.default.promises.readFile(I.default.join(Z,e),"utf8")}catch{}}var $=c(require("node:fs")),J=c(require("node:path"));var O=c(require("node:fs")),A=c(require("node:path")),ge=c(require("deepmerge"));var Q={getLintFixSuffix(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""}};var Xe=require("@octokit/core"),Ze=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,ee=!!Ze,C=new Xe.Octokit({auth:Ze}),de=class{getOrgAndName(t){var s;let i=t.split(":").at(-1),n=i==null?void 0:i.split("/"),a=(n==null?void 0:n.at(-2))??"",r=((s=n==null?void 0:n.at(-1))==null?void 0:s.replace(/.git$/,""))??"";return[a,r]}},E=new de;var Qe={node:["src","__tests__","scripts"].sort(),blitz:["__tests__","scripts","app","db","integrations","mailers","pages","test"].sort()};function te(e){return e.depending.blitz?Qe.blitz:Qe.node}var fe=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],et=[...fe,"@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"],tt=["eslint-plugin-react","eslint-plugin-react-hooks"],it={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js",...fe],"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react",...fe,...tt],"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts",...et],"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react",...et,...tt],"../../.eslintrc.json":[]};async function rt(e,t,i){return u.function("generatePackageJson",async()=>{await ii(e,t,i)})}async function ii(e,t,i){var f,y;let n=A.default.resolve(e.dirPath,"package.json"),a=await O.default.promises.readFile(n,"utf8"),r=JSON.parse(a);r.scripts=r.scripts||{},r.dependencies=r.dependencies||{},r.devDependencies=r.devDependencies||{},r.peerDependencies=r.peerDependencies||{},await ri(r),r.name!=="@willbooster/prettier-config"&&(r.prettier="@willbooster/prettier-config");for(let m of Object.keys(r.scripts))r.scripts[m].includes("git clone")||(r.scripts[m]=r.scripts[m].replace(/yarn\s*&&\s*/,"").replace(/yarn\s*install\s*&&\s*/,""));r.scripts=(0,ge.default)(r.scripts,ye(e)),r.scripts.prettify+=await ni(e.dirPath);let s=[],o=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],l=[];e.root&&(o.push("husky","@willbooster/renovate-config"),(e.publicRepo||e.referred)&&(o.push("pinst"),r.scripts.prepack="pinst --disable",r.scripts.postpack="pinst --enable"),e.depending.semanticRelease&&(o.push("conventional-changelog-conventionalcommits"),!r.devDependencies["semantic-release"]&&!r.devDependencies["multi-semantic-release"]&&!r.devDependencies["@qiwi/multi-semantic-release"]&&o.push("semantic-release"),r.version="0.0.0-semantically-released"),e.containingSubPackageJsons?r.workspaces=["packages/*"]:delete r.workspaces),(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages)&&(o.push("eslint","micromatch"),e.containingTypeScriptInPackages&&o.push("@typescript-eslint/parser")),(e.containingTypeScript||e.containingTypeScriptInPackages)&&o.push("typescript"),e.eslintBase&&o.push(...it[e.eslintBase]),e.willBoosterConfigs&&(s=s.filter(m=>!m.includes("@willbooster/")),o=o.filter(m=>!m.includes("@willbooster/"))),r.name||(r.name=A.default.basename(e.dirPath)),e.containingSubPackageJsons&&(r.private=!0),r.license||(r.license="UNLICENSED"),!r.private&&r.license!=="UNLICENSED"&&t.publicRepo&&(r.publishConfig??={},r.publishConfig.access??="public");let[g]=E.getOrgAndName(e.repository??"");if((g==="WillBooster"||g==="WillBoosterLab")&&(r.author="WillBooster Inc."),!e.containingTypeScript&&!e.containingTypeScriptInPackages&&delete r.scripts.typecheck,e.depending.semanticRelease&&e.release.npm&&(r.resolutions||={},r.resolutions["npm/chalk"]="^4.1.2"),!e.containingSubPackageJsons){if(!e.containingJavaScript&&!e.containingTypeScript?(delete r.scripts.lint,delete r.scripts["lint-fix"],r.scripts.cleanup=r.scripts.cleanup.replace(" && yarn lint-fix","")):r.scripts["lint-fix"]+=Q.getLintFixSuffix(e),e.containingPubspecYaml){r.scripts.lint="flutter analyze",r.scripts["lint-fix"]="yarn lint";let m=["lib","test","test_driver"].filter(w=>O.default.existsSync(A.default.resolve(e.dirPath,w)));m.length>0&&(r.scripts["format-code"]=`flutter format $(find ${m.join(" ")} -name generated -prune -o -name '*.freezed.dart' -prune -o -name '*.g.dart' -prune -o -name '*.dart' -print)`,r.scripts.format+=" && yarn format-code")}if(e.containingPoetryLock){r.scripts.postinstall==="poetry install"&&delete r.scripts.postinstall;let m=await O.default.promises.readdir(e.dirPath,{withFileTypes:!0}),F=(await Promise.all(m.map(async x=>{if(!x.isDirectory())return"";let Lt=A.default.resolve(e.dirPath,x.name);return(await O.default.promises.readdir(Lt)).some(At=>At.endsWith(".py"))?x.name:""}))).filter(Boolean);F.length>0&&(r.scripts["format-code"]=`poetry run isort --profile black ${F.join(" ")} && poetry run black ${F.join(" ")}`,r.scripts.lint=`poetry run flake8 ${F.join(" ")}`,r.scripts["lint-fix"]="yarn lint",r.scripts.format+=" && yarn format-code",l.push("black","isort","flake8"))}e.repository&&(r.repository=e.repository)}e.depending.blitz?(e.depending.blitz==="0"&&(o=o.filter(m=>!m.includes("@typescript-eslint/")),o=o.filter(m=>m!=="eslint-plugin-react"&&m!=="eslint-import-resolver-typescript"&&m!=="eslint-plugin-import"&&m!=="eslint-plugin-react-hooks")),(f=r.scripts["gen-code"])!=null&&f.startsWith("blitz codegen")||(r.scripts["gen-code"]="blitz codegen")):e.depending.prisma&&!((y=r.scripts["gen-code"])!=null&&y.startsWith("prisma generate"))&&(r.scripts["gen-code"]="prisma generate"),Object.keys(r.dependencies).length===0&&delete r.dependencies,Object.keys(r.devDependencies).length===0&&delete r.devDependencies,Object.keys(r.peerDependencies).length===0&&delete r.peerDependencies,await O.default.promises.writeFile(n,JSON.stringify(r)),i||(s=s.filter(m=>{var w;return!((w=r.devDependencies)!=null&&w[m])}),s.length>0&&v("yarn",["add",...new Set(s)],e.dirPath),o=o.filter(m=>{var w;return!((w=r.dependencies)!=null&&w[m])}),o.length>0&&v("yarn",["add","-D",...new Set(o)],e.dirPath),l.length>0&&v("poetry",["add",...new Set(l)],e.dirPath))}async function ri(e){e.author==="WillBooster LLC"&&(e.author="WillBooster Inc."),delete e.scripts["sort-package-json"],delete e.scripts["sort-all-package-json"],delete e.scripts["typecheck:codegen"],delete e.dependencies.tslib,delete e.devDependencies["@willbooster/eslint-config"],delete e.devDependencies["@willbooster/eslint-config-react"],delete e.devDependencies["@willbooster/tsconfig"],delete e.devDependencies["eslint-import-resolver-node"],delete e.devDependencies["eslint-plugin-prettier"],delete e.devDependencies.lerna,delete e.devDependencies.pinst,delete e.scripts["flutter-format"],delete e.scripts["format-flutter"],delete e.scripts["python-format"],delete e.scripts["format-python"],delete e.scripts.prettier;for(let t of Object.values(it))for(let i of t)delete e.devDependencies[i];await p.run(()=>O.default.promises.rm("lerna.json",{force:!0}))}function ye(e){let t={cleanup:"yarn format && yarn lint-fix",format:"sort-package-json && yarn prettify",lint:`eslint --color "./{${te(e)}}/**/*.{${k.eslint.join(",")}}"`,"lint-fix":"yarn lint --fix",prettify:`prettier --cache --color --write "**/{.*/,}*.{${k.prettier.join(",")}}" "!**/test-fixtures/**"`,typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(t=(0,ge.default)({...t},{format:"sort-package-json && yarn prettify && yarn workspaces foreach --parallel --verbose run format",lint:"yarn workspaces foreach --parallel --verbose run lint","lint-fix":"yarn workspaces foreach --parallel --verbose run lint-fix",prettify:`prettier --cache --color --write "**/{.*/,}*.{${k.prettier.join(",")}}" "!**/packages/**" "!**/test-fixtures/**"`,test:"yarn workspaces foreach --verbose run test",typecheck:"yarn workspaces foreach --parallel --verbose run typecheck"})),e.depending.blitz&&(t.typecheck=`${t.typecheck} || yarn run typecheck/warn`,t["typecheck/warn"]=`echo 'Please try "yarn gen-code" if you face unknown type errors.' && exit 1`,t["typecheck:gen-code"]="yarn gen-code && tsc --noEmit --Pretty"),t}async function ni(e){let t=A.default.resolve(e,".prettierignore"),i=await O.default.promises.readFile(t,"utf8"),n=i.indexOf(b.separatorPrefix);return n<0?"":i.slice(0,n).split(`
85
- `).map(s=>{let o=s.trim();return o.endsWith("/")?o.slice(0,-1):o}).filter(s=>s&&!s.startsWith("#")&&!s.includes("/")).map(s=>` "!**/${s}/**"`).join("")}var he="npm test",ie={preCommit:"node node_modules/.bin/lint-staged",prePush:"yarn typecheck",prePushForLab:`
84
+ `}await b.isBerryZeroInstallEnabled(r)||(o=o.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*")),(e.containingPomXml||e.containingPubspecYaml)&&(o=o.replace(/^# .idea\/artifacts$/gm,".idea/artifacts").replace(/^# .idea\/compiler.xml$/gm,".idea/compiler.xml").replace(/^# .idea\/jarRepositories.xml$/gm,".idea/jarRepositories.xml").replace(/^# .idea\/modules.xml$/gm,".idea/modules.xml").replace(/^# .idea\/*.iml$/gm,".idea/*.iml").replace(/^# .idea\/modules$/gm,".idea/modules").replace(/^# *.iml$/gm,"*.iml").replace(/^# *.ipr$/gm,"*.ipr"),e.containingPubspecYaml&&(o=o.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),o=o.replace(/^.idea\/?$/gm,"# .idea"),(t.depending.reactNative||e.depending.reactNative||e.containingPubspecYaml)&&(o=o.replace(/^(.idea\/.+)$/gm,`$1
85
+ android/$1`));let l=a+o+i;await p.run(()=>h.generateFile(r,l))})}var Z=I.default.join(Ve.default.homedir(),".cache","wbfy","gitignore");async function er(e,t){await M.default.promises.mkdir(Z,{recursive:!0}),await M.default.promises.writeFile(I.default.join(Z,e),t)}async function tr(e){try{let t=await M.default.promises.stat(I.default.join(Z,e));return Date.now()-t.mtimeMs>6*60*60*1e3?void 0:await M.default.promises.readFile(I.default.join(Z,e),"utf8")}catch{}}var $=c(require("node:fs")),J=c(require("node:path"));var O=c(require("node:fs")),A=c(require("node:path")),ye=c(require("deepmerge"));var Q={getLintFixSuffix(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""}};var Ze=require("@octokit/core"),Qe=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,ee=!!Qe,C=new Ze.Octokit({auth:Qe}),ue=class{getOrgAndName(t){var s;let r=t.split(":").at(-1),n=r==null?void 0:r.split("/"),a=(n==null?void 0:n.at(-2))??"",i=((s=n==null?void 0:n.at(-1))==null?void 0:s.replace(/.git$/,""))??"";return[a,i]}},E=new ue;var fe={node:["src","__tests__","scripts"].sort(),blitz0:["__tests__","scripts","app","db","integrations","mailers","test"].sort(),blitz2:["src","__tests__","scripts","db","integrations","mailers"].sort()};function te(e){return e.depending.blitz?e.depending.blitz==="0"?fe.blitz0:fe.blitz2:fe.node}var ge=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],et=[...ge,"@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"],tt=["eslint-plugin-react","eslint-plugin-react-hooks"],rt={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js",...ge],"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react",...ge,...tt],"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts",...et],"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react",...et,...tt],"../../.eslintrc.json":[]};async function it(e,t,r){return d.function("generatePackageJson",async()=>{await rr(e,t,r)})}async function rr(e,t,r){var f,y;let n=A.default.resolve(e.dirPath,"package.json"),a=await O.default.promises.readFile(n,"utf8"),i=JSON.parse(a);i.scripts=i.scripts||{},i.dependencies=i.dependencies||{},i.devDependencies=i.devDependencies||{},i.peerDependencies=i.peerDependencies||{},await ir(i),i.name!=="@willbooster/prettier-config"&&(i.prettier="@willbooster/prettier-config");for(let m of Object.keys(i.scripts))i.scripts[m].includes("git clone")||(i.scripts[m]=i.scripts[m].replace(/yarn\s*&&\s*/,"").replace(/yarn\s*install\s*&&\s*/,""));i.scripts=(0,ye.default)(i.scripts,he(e)),i.scripts.prettify+=await nr(e.dirPath);let s=[],o=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],l=[];e.root&&(o.push("husky","@willbooster/renovate-config"),(e.publicRepo||e.referredByOtherRepo)&&(o.push("pinst"),i.scripts.prepack="pinst --disable",i.scripts.postpack="pinst --enable"),e.depending.semanticRelease&&(o.push("conventional-changelog-conventionalcommits"),!i.devDependencies["semantic-release"]&&!i.devDependencies["multi-semantic-release"]&&!i.devDependencies["@qiwi/multi-semantic-release"]&&o.push("semantic-release"),i.version="0.0.0-semantically-released"),e.containingSubPackageJsons?i.workspaces=["packages/*"]:delete i.workspaces),(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages)&&(o.push("eslint","micromatch"),e.containingTypeScriptInPackages&&o.push("@typescript-eslint/parser")),(e.containingTypeScript||e.containingTypeScriptInPackages)&&o.push("typescript"),e.eslintBase&&o.push(...rt[e.eslintBase]),e.willBoosterConfigs&&(s=s.filter(m=>!m.includes("@willbooster/")),o=o.filter(m=>!m.includes("@willbooster/"))),i.name||(i.name=A.default.basename(e.dirPath)),e.containingSubPackageJsons&&(i.private=!0),i.license||(i.license="UNLICENSED"),!i.private&&i.license!=="UNLICENSED"&&t.publicRepo&&(i.publishConfig??={},i.publishConfig.access??="public");let[g]=E.getOrgAndName(e.repository??"");if((g==="WillBooster"||g==="WillBoosterLab")&&(i.author="WillBooster Inc."),!e.containingTypeScript&&!e.containingTypeScriptInPackages&&delete i.scripts.typecheck,e.depending.semanticRelease&&e.release.npm&&(i.resolutions||={},i.resolutions["npm/chalk"]="^4.1.2"),!e.containingSubPackageJsons){if(!e.containingJavaScript&&!e.containingTypeScript?(delete i.scripts.lint,delete i.scripts["lint-fix"],i.scripts.cleanup=i.scripts.cleanup.replace(" && yarn lint-fix","")):i.scripts["lint-fix"]+=Q.getLintFixSuffix(e),e.containingPubspecYaml){i.scripts.lint="flutter analyze",i.scripts["lint-fix"]="yarn lint";let m=["lib","test","test_driver"].filter(w=>O.default.existsSync(A.default.resolve(e.dirPath,w)));m.length>0&&(i.scripts["format-code"]=`flutter format $(find ${m.join(" ")} -name generated -prune -o -name '*.freezed.dart' -prune -o -name '*.g.dart' -prune -o -name '*.dart' -print)`,i.scripts.format+=" && yarn format-code")}if(e.containingPoetryLock){i.scripts.postinstall==="poetry install"&&delete i.scripts.postinstall;let m=await O.default.promises.readdir(e.dirPath,{withFileTypes:!0}),F=(await Promise.all(m.map(async x=>{if(!x.isDirectory())return"";let Lt=A.default.resolve(e.dirPath,x.name);return(await O.default.promises.readdir(Lt)).some(At=>At.endsWith(".py"))?x.name:""}))).filter(Boolean);F.length>0&&(i.scripts["format-code"]=`poetry run isort --profile black ${F.join(" ")} && poetry run black ${F.join(" ")}`,i.scripts.lint=`poetry run flake8 ${F.join(" ")}`,i.scripts["lint-fix"]="yarn lint",i.scripts.format+=" && yarn format-code",l.push("black","isort","flake8"))}e.repository&&(i.repository=e.repository)}e.depending.blitz?(e.depending.blitz==="0"&&(o=o.filter(m=>!m.includes("@typescript-eslint/")),o=o.filter(m=>m!=="eslint-plugin-react"&&m!=="eslint-import-resolver-typescript"&&m!=="eslint-plugin-import"&&m!=="eslint-plugin-react-hooks")),(f=i.scripts["gen-code"])!=null&&f.startsWith("blitz codegen")||(i.scripts["gen-code"]="blitz codegen")):e.depending.prisma&&!((y=i.scripts["gen-code"])!=null&&y.startsWith("prisma generate"))&&(i.scripts["gen-code"]="prisma generate"),Object.keys(i.dependencies).length===0&&delete i.dependencies,Object.keys(i.devDependencies).length===0&&delete i.devDependencies,Object.keys(i.peerDependencies).length===0&&delete i.peerDependencies,await O.default.promises.writeFile(n,JSON.stringify(i)),r||(s=s.filter(m=>{var w;return!((w=i.devDependencies)!=null&&w[m])}),s.length>0&&v("yarn",["add",...new Set(s)],e.dirPath),o=o.filter(m=>{var w;return!((w=i.dependencies)!=null&&w[m])}),o.length>0&&v("yarn",["add","-D",...new Set(o)],e.dirPath),l.length>0&&v("poetry",["add",...new Set(l)],e.dirPath))}async function ir(e){e.author==="WillBooster LLC"&&(e.author="WillBooster Inc."),delete e.scripts["sort-package-json"],delete e.scripts["sort-all-package-json"],delete e.scripts["typecheck:codegen"],delete e.dependencies.tslib,delete e.devDependencies["@willbooster/eslint-config"],delete e.devDependencies["@willbooster/eslint-config-react"],delete e.devDependencies["@willbooster/tsconfig"],delete e.devDependencies["eslint-import-resolver-node"],delete e.devDependencies["eslint-plugin-prettier"],delete e.devDependencies.lerna,delete e.devDependencies.pinst,delete e.scripts["flutter-format"],delete e.scripts["format-flutter"],delete e.scripts["python-format"],delete e.scripts["format-python"],delete e.scripts.prettier;for(let t of Object.values(rt))for(let r of t)delete e.devDependencies[r];await p.run(()=>O.default.promises.rm("lerna.json",{force:!0}))}function he(e){let t={cleanup:"yarn format && yarn lint-fix",format:"sort-package-json && yarn prettify",lint:`eslint --color "./{${te(e)}}/**/*.{${k.eslint.join(",")}}"`,"lint-fix":"yarn lint --fix",prettify:`prettier --cache --color --write "**/{.*/,}*.{${k.prettier.join(",")}}" "!**/test-fixtures/**"`,typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(t=(0,ye.default)({...t},{format:"sort-package-json && yarn prettify && yarn workspaces foreach --parallel --verbose run format",lint:"yarn workspaces foreach --parallel --verbose run lint","lint-fix":"yarn workspaces foreach --parallel --verbose run lint-fix",prettify:`prettier --cache --color --write "**/{.*/,}*.{${k.prettier.join(",")}}" "!**/packages/**" "!**/test-fixtures/**"`,test:"yarn workspaces foreach --verbose run test",typecheck:"yarn workspaces foreach --parallel --verbose run typecheck"})),e.depending.blitz&&(t.typecheck=`${t.typecheck} || yarn run typecheck/warn`,t["typecheck/warn"]=`echo 'Please try "yarn gen-code" if you face unknown type errors.' && exit 1`,t["typecheck:gen-code"]="yarn gen-code && tsc --noEmit --Pretty"),t}async function nr(e){let t=A.default.resolve(e,".prettierignore"),r=await O.default.promises.readFile(t,"utf8"),n=r.indexOf(b.separatorPrefix);return n<0?"":r.slice(0,n).split(`
86
+ `).map(s=>{let o=s.trim();return o.endsWith("/")?o.slice(0,-1):o}).filter(s=>s&&!s.startsWith("#")&&!s.includes("/")).map(s=>` "!**/${s}/**"`).join("")}var we="npm test",re={preCommit:"node node_modules/.bin/lint-staged",prePush:"yarn typecheck",prePushForLab:`
86
87
  if [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "exkazuu@gmail.com" ]; then
87
88
  echo "************************************************"
88
89
  echo "*** Don't push main branch directly. Use PR! ***"
@@ -99,10 +100,10 @@ run_if_changed() {
99
100
  eval "$2"
100
101
  fi
101
102
  }
102
- `.trim()};async function nt(e){return u.function("generateHuskyrc",async()=>{await oi(e)})}async function oi(e){var g,f;let t=J.default.resolve(e.dirPath,"package.json"),i=await $.default.promises.readFile(t,"utf8"),n=JSON.parse(i);n.scripts||={},delete n.scripts.postinstall,delete n.scripts.postpublish,delete n.scripts.prepare,delete n.scripts.prepublishOnly,delete n.scripts.prepack,delete n.scripts.postpack;let a=J.default.resolve(e.dirPath,".husky");await Promise.all([$.default.promises.writeFile(t,JSON.stringify(n,void 0,2)),$.default.promises.rm(a,{force:!0,recursive:!0})]),v("yarn",["dlx","husky-init","--yarn2"],e.dirPath);let r=J.default.resolve(a,"pre-commit"),s=await $.default.promises.readFile(r,"utf8");if(await p.run(()=>$.default.promises.rm(J.default.resolve(e.dirPath,".huskyrc.json"),{force:!0})),await p.run(()=>$.default.promises.writeFile(r,s.replace(he,ie.preCommit))),e.containingTypeScript||e.containingTypeScriptInPackages){let y=(g=e.repository)!=null&&g.startsWith("github:WillBoosterLab/")?ie.prePushForLab:ie.prePush,{typecheck:m}=ye(e);y=y.replace("yarn typecheck",m.replace("tsc","node node_modules/.bin/tsc")),await p.run(()=>$.default.promises.writeFile(J.default.resolve(a,"pre-push"),s.replace(he,y),{mode:493}))}let o=[];e.versionsText&&o.push('run_if_changed "\\..+-version" "asdf plugin update --all"'),(f=e.versionsText)!=null&&f.includes("python ")&&o.push('run_if_changed "\\..+-version" "asdf install python"'),e.versionsText&&o.push('run_if_changed "\\..+-version" "asdf install"'),o.push('run_if_changed "package\\.json" "yarn"'),e.containingPoetryLock&&o.push('run_if_changed "poetry\\.lock" "poetry install"'),(e.depending.blitz||e.depending.prisma)&&o.push("yarn gen-code");let l=s.replace(he,`${ie.postMerge}
103
+ `.trim()};async function nt(e){return d.function("generateHuskyrc",async()=>{await or(e)})}async function or(e){var g,f;let t=J.default.resolve(e.dirPath,"package.json"),r=await $.default.promises.readFile(t,"utf8"),n=JSON.parse(r);n.scripts||={},delete n.scripts.postinstall,delete n.scripts.postpublish,delete n.scripts.prepare,delete n.scripts.prepublishOnly,delete n.scripts.prepack,delete n.scripts.postpack;let a=J.default.resolve(e.dirPath,".husky");await Promise.all([$.default.promises.writeFile(t,JSON.stringify(n,void 0,2)),$.default.promises.rm(a,{force:!0,recursive:!0})]),v("yarn",["dlx","husky-init","--yarn2"],e.dirPath);let i=J.default.resolve(a,"pre-commit"),s=await $.default.promises.readFile(i,"utf8");if(await p.run(()=>$.default.promises.rm(J.default.resolve(e.dirPath,".huskyrc.json"),{force:!0})),await p.run(()=>$.default.promises.writeFile(i,s.replace(we,re.preCommit))),e.containingTypeScript||e.containingTypeScriptInPackages){let y=(g=e.repository)!=null&&g.startsWith("github:WillBoosterLab/")?re.prePushForLab:re.prePush,{typecheck:m}=he(e);y=y.replace("yarn typecheck",m.replace("tsc","node node_modules/.bin/tsc")),await p.run(()=>$.default.promises.writeFile(J.default.resolve(a,"pre-push"),s.replace(we,y),{mode:493}))}let o=[];e.versionsText&&o.push('run_if_changed "\\..+-version" "asdf plugin update --all"'),(f=e.versionsText)!=null&&f.includes("python ")&&o.push('run_if_changed "\\..+-version" "asdf install python"'),e.versionsText&&o.push('run_if_changed "\\..+-version" "asdf install"'),o.push('run_if_changed "package\\.json" "yarn"'),e.containingPoetryLock&&o.push('run_if_changed "poetry\\.lock" "poetry install"'),(e.depending.blitz||e.depending.prisma)&&o.push("yarn gen-code");let l=s.replace(we,`${re.postMerge}
103
104
 
104
105
  ${o.join(`
105
- `)}`);await p.run(()=>$.default.promises.writeFile(J.default.resolve(a,"post-merge"),l,{mode:493}))}var we=c(require("node:fs")),Pe=c(require("node:path"));var si=`<?xml version="1.0" encoding="UTF-8"?>
106
+ `)}`);await p.run(()=>$.default.promises.writeFile(J.default.resolve(a,"post-merge"),l,{mode:493}))}var Pe=c(require("node:fs")),ve=c(require("node:path"));var sr=`<?xml version="1.0" encoding="UTF-8"?>
106
107
  <project version="4">
107
108
  <component name="ProjectTasksOptions">
108
109
  <TaskOptions isEnabled="true">
@@ -227,10 +228,10 @@ ${o.join(`
227
228
  </TaskOptions>
228
229
  </component>
229
230
  </project>
230
- `;async function ot(e){return u.function("generateIdeaSettings",async()=>{let t=Pe.default.resolve(e.dirPath,".idea");if(we.default.existsSync(t)){let i=Pe.default.resolve(t,"watcherTasks.xml");await(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages||e.containingPackageJson&&!e.containingPubspecYaml&&!e.containingGemfile&&!e.containingGoMod&&!e.containingPomXml?p.run(()=>h.generateFile(i,si)):p.run(()=>we.default.promises.rm(i,{force:!0})))}})}var ve=c(require("node:fs")),re=c(require("node:path"));async function ke(e){return u.function("generateLintstagedrc",async()=>{await ai(e)})}async function ai(e){let t=e.root?"node node_modules/.bin/":"node ../../node_modules/.bin/",i=[];if(e.containingJavaScript||e.containingTypeScript){let s=`
231
- '${st(e)}': [${JSON.stringify(`${t}eslint --fix${Q.getLintFixSuffix(e)}`)}, '${t}prettier --cache --write'],`;i.push(s)}let n=e.root?" && !file.includes('/packages/')":"";i.push(`
231
+ `;async function ot(e){return d.function("generateIdeaSettings",async()=>{let t=ve.default.resolve(e.dirPath,".idea");if(Pe.default.existsSync(t)){let r=ve.default.resolve(t,"watcherTasks.xml");await(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages||e.containingPackageJson&&!e.containingPubspecYaml&&!e.containingGemfile&&!e.containingGoMod&&!e.containingPomXml?p.run(()=>h.generateFile(r,sr)):p.run(()=>Pe.default.promises.rm(r,{force:!0})))}})}var ke=c(require("node:fs")),ie=c(require("node:path"));async function be(e){return d.function("generateLintstagedrc",async()=>{await ar(e)})}async function ar(e){let t=e.root?"node node_modules/.bin/":"node ../../node_modules/.bin/",r=[];if(e.containingJavaScript||e.containingTypeScript){let s=`
232
+ '${st(e)}': [${JSON.stringify(`${t}eslint --fix${Q.getLintFixSuffix(e)}`)}, '${t}prettier --cache --write'],`;r.push(s)}let n=e.root?" && !file.includes('/packages/')":"";r.push(`
232
233
  './**/*.{${k.prettier.join(",")}}': files => {
233
- ${e.containingJavaScript||e.containingTypeScript?li(e):""}
234
+ ${e.containingJavaScript||e.containingTypeScript?lr(e):""}
234
235
  const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')${n});
235
236
  if (filteredFiles.length === 0) return [];
236
237
  const commands = [\`${t}prettier --cache --write \${filteredFiles.join(' ')}\`];
@@ -238,22 +239,22 @@ ${o.join(`
238
239
  commands.push('${t}sort-package-json');
239
240
  }
240
241
  return commands;
241
- },`),e.containingPubspecYaml&&i.push(`
242
+ },`),e.containingPubspecYaml&&r.push(`
242
243
  './{lib,test,test_driver}/**/*.dart': files => {
243
244
  const filteredFiles = files.filter(file => !file.includes('generated'))
244
245
  .filter(file => !file.endsWith('.freezed.dart') && !file.endsWith('.g.dart'));
245
246
  if (filteredFiles.length === 0) return [];
246
247
  return [\`flutter format \${filteredFiles.join(' ')}\`];
247
- },`),e.containingPoetryLock&&i.push(`
248
+ },`),e.containingPoetryLock&&r.push(`
248
249
  './**/*.py': [
249
250
  'poetry run isort --profile black --filter-files',
250
251
  'poetry run black',
251
252
  'poetry run flake8'
252
253
  ],`);let a=`${e.containingJavaScript||e.containingTypeScript?"const micromatch = require('micromatch');":""}
253
254
 
254
- module.exports = {${i.join("")}
255
+ module.exports = {${r.join("")}
255
256
  };
256
- `,r=re.default.resolve(e.dirPath,".lintstagedrc.cjs");await p.run(()=>ve.default.promises.rm(re.default.resolve(e.dirPath,".lintstagedrc.js"),{force:!0})),await p.run(()=>ve.default.promises.rm(re.default.resolve(e.dirPath,".lintstagedrc.json"),{force:!0})),await p.run(()=>h.generateFile(r,a))}function st(e){return`./{${te(e).join(",")}}/**/*.{${k.eslint.join(",")}}`}function li(e){return`files = micromatch.not(files, '${st(e)}');`}var be=c(require("node:path"));var at=`
257
+ `,i=ie.default.resolve(e.dirPath,".lintstagedrc.cjs");await p.run(()=>ke.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.js"),{force:!0})),await p.run(()=>ke.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.json"),{force:!0})),await p.run(()=>h.generateFile(i,a))}function st(e){return`./{${te(e).join(",")}}/**/*.{${k.eslint.join(",")}}`}function lr(e){return`files = micromatch.not(files, '${st(e)}');`}var xe=c(require("node:path"));var at=`
257
258
  3rd-party/
258
259
  android/
259
260
  ios/
@@ -263,13 +264,13 @@ test-fixtures/
263
264
  *.min.js
264
265
  .yarn/
265
266
  .pnp.js
266
- `;async function lt(e){return u.function("generatePrettierignore",async()=>{let t=be.default.resolve(e.dirPath,".prettierignore"),i=await h.readFileIgnoringError(t)??"",n=b.getHeadUserContent(i)+at,a=b.getTailUserContent(i),r=be.default.resolve(e.dirPath,".gitignore"),s=await b.readGitignoreWithoutSeparators(r)||"",o="";e.containingPubspecYaml&&(o=`
267
+ `;async function lt(e){return d.function("generatePrettierignore",async()=>{let t=xe.default.resolve(e.dirPath,".prettierignore"),r=await h.readFileIgnoringError(t)??"",n=b.getHeadUserContent(r)+at,a=b.getTailUserContent(r),i=xe.default.resolve(e.dirPath,".gitignore"),s=await b.readGitignoreWithoutSeparators(i)||"",o="";e.containingPubspecYaml&&(o=`
267
268
  android/app/
268
269
  ios/Runner/Assets.xcassets/
269
270
  pubspec.yaml
270
- `);let l=n+at+o+s+a;await p.run(()=>h.generateFile(t,l))})}var ne=c(require("node:fs")),xe=c(require("node:path"));async function pt(e){return u.function("generateReadme",async()=>{var r,s;let t=xe.default.resolve(e.dirPath,"README.md"),i=await ne.default.promises.readFile(t,"utf8");i=ct(e,i,ci,".releaserc.json");let n=(s=e.repository)==null?void 0:s.slice(((r=e.repository)==null?void 0:r.indexOf(":"))+1),a=ne.default.readdirSync(`${e.dirPath}/.github/workflows`);for(let o of a){if(!o.startsWith("test")&&!o.startsWith("deploy"))continue;let l=o;l=l.charAt(0).toUpperCase()+l.slice(1,l.indexOf(".")),l=l.replace("-"," ");let g=`[![${l}](https://github.com/${n}/actions/workflows/${o}/badge.svg)](https://github.com/${n}/actions/workflows/${o})`;i=ct(e,i,g,`.github/workflows/${o}`)}await p.run(()=>h.generateFile(t,i))})}var ci="[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)";function ct(e,t,i,n){if(!ne.default.existsSync(xe.default.resolve(e.dirPath,n)))return t;let a=t.indexOf(i);a>=0&&(t=t.slice(0,a)+t.slice(a+i.length));let r=!1;for(let s=0;s<t.length;s++)if(t[s]===`
271
- `){r=!0,t=`${t.slice(0,s+1)}${i}
272
- ${t.slice(s+1)}`;break}return r||(t=`${t}
273
- ${i}
274
- `),t}var mt=c(require("node:fs")),ut=c(require("node:path")),_e=c(require("deepmerge"));async function dt(e){return u.function("generateReleaserc",async()=>{let t=ut.default.resolve(e.dirPath,".releaserc.json");try{let i=JSON.parse(await mt.default.promises.readFile(t,"utf8")),n=(i==null?void 0:i.plugins)||[];for(let r=0;r<n.length;r++){let s=Array.isArray(n[r])?n[r][0]:n[r],o=Array.isArray(n[r])&&n[r][1]||{};s==="@semantic-release/commit-analyzer"?n[r]=["@semantic-release/commit-analyzer",_e.default.all([o,{preset:"conventionalcommits"}],{arrayMerge:W})]:s==="@semantic-release/github"&&(n[r]=["@semantic-release/github",_e.default.all([o,{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}],{arrayMerge:W})])}let a=JSON.stringify(i);await p.run(()=>h.generateFile(t,a))}catch{}})}var oe=c(require("node:fs")),se=c(require("node:path")),ft=c(require("deepmerge")),gt=c(require("lodash.clonedeep"));var pi={extends:["@willbooster"]};async function yt(e){return u.function("generateRenovateJson",async()=>{let t=(0,gt.default)(pi),i=se.default.resolve(e.dirPath,".renovaterc.json");try{let a=await oe.default.promises.readFile(i,"utf8"),r=JSON.parse(a);t=ft.default.all([t,r,t],{arrayMerge:W})}catch{}await p.run(()=>oe.default.promises.rm(se.default.resolve(e.dirPath,".dependabot"),{force:!0})),await p.run(()=>oe.default.promises.rm(se.default.resolve(e.dirPath,"renovate.json"),{force:!0}));let n=JSON.stringify(t);await p.run(()=>h.generateFile(i,n))})}var ht=c(require("node:fs")),wt=c(require("node:path")),Pt=c(require("deepmerge")),vt=c(require("lodash.clonedeep"));function H(e){let t=Object.entries(e).sort(([i],[n])=>i.localeCompare(n));for(let[i,n]of t)delete e[i],e[i]=n;return e}var mi={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,declaration:!0,sourceMap:!0,importHelpers:!1,outDir:"dist",typeRoots:["./node_modules/@types","./@types"]},include:["src/**/*","__tests__/**/*","scripts/**/*","packages/*/src/**/*","packages/*/__tests__/**/*","packages/*/scripts/**/*"]},ui={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,declaration:!0,sourceMap:!0,importHelpers:!1,outDir:"dist",typeRoots:["../../node_modules/@types","../../@types","./@types"]},include:["src/**/*","__tests__/**/*","scripts/**/*"]};async function kt(e,t){return u.function("generateTsconfig",async()=>{var r,s;if(t.depending.blitz)return;let i=(0,vt.default)(e.root?mi:ui);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&delete i.compilerOptions.jsx,e.root&&!e.containingSubPackageJsons&&(i.include=i.include.filter(o=>!o.startsWith("packages/*/")));let n=wt.default.resolve(e.dirPath,"tsconfig.json");try{let o=await ht.default.promises.readFile(n,"utf8"),l=JSON.parse(o);l.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete l.extends,(r=i==null?void 0:i.compilerOptions)==null||delete r.target,(s=i==null?void 0:i.compilerOptions)==null||delete s.module,l.jsx&&delete i.jsx,i=Pt.default.all([i,l,i],{arrayMerge:W}),i.include=i.include.filter(g=>!g.includes("@types"))}catch{}H(i.compilerOptions);let a=JSON.stringify(i);await p.run(()=>h.generateFile(n,a))})}var T=c(require("node:fs")),R=c(require("node:path")),_t=c(require("deepmerge")),Se=c(require("js-yaml")),St=c(require("lodash.clonedeep"));var di={test:{name:"Test",on:{pull_request:null,push:{branches:["main","wbfy","renovate/**"]}},jobs:{test:{uses:"WillBooster/reusable-workflows/.github/workflows/test.yml@main"}}},release:{name:"Release",on:{push:{branches:[]}},jobs:{release:{uses:"WillBooster/reusable-workflows/.github/workflows/release.yml@main"}}},wbfy:{name:"Willboosterify",on:{workflow_dispatch:null},jobs:{wbfy:{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy.yml@main"}}},"wbfy-merge":{name:"Merge wbfy",on:{workflow_dispatch:null},jobs:{"wbfy-merge":{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy-merge.yml@main"}}},"semantic-pr":{name:"Lint PR title",on:{pull_request_target:{types:["opened","edited","synchronize"]}},jobs:{"semantic-pr":{uses:"WillBooster/reusable-workflows/.github/workflows/semantic-pr.yml@main"}}},"notify-ready":{name:"Notify ready",on:{issues:{types:["labeled"]}},jobs:{"notify-ready":{uses:"WillBooster/reusable-workflows/.github/workflows/notify-ready.yml@main",secrets:{DISCORD_WEBHOOK_URL:"${{ secrets.DISCORD_WEBHOOK_URL_FOR_READY }}"}}}},"close-comment":{name:"Add close comment",on:{pull_request:{types:["opened"]}},jobs:{"close-comment":{uses:"WillBooster/reusable-workflows/.github/workflows/close-comment.yml@main"}}},"add-issue-to-project":{name:"Add issue to github project",on:{issues:{types:["labeled"]}},jobs:{"add-to-project":{uses:"WillBooster/reusable-workflows/.github/workflows/add-issue-to-project.yml@main",secrets:{GH_PROJECT_URL:"${{ secrets.GH_PROJECT_URL }}",GH_BOT_PAT:"${{ secrets.GH_BOT_PAT }}"}}}}};async function Ft(e){return u.function("generateWorkflow",async()=>{var r;let t=R.default.resolve(e.dirPath,".github","workflows");await T.default.promises.mkdir(t,{recursive:!0});let i=R.default.resolve(e.dirPath,".github","semantic.yml");await p.run(()=>T.default.promises.rm(i,{force:!0,recursive:!0}));let a=(await T.default.promises.readdir(t,{withFileTypes:!0})).filter(s=>s.isFile()&&s.name.endsWith(".yml")).map(s=>s.name);e.depending.semanticRelease&&a.push("release.yml"),(e.publicRepo||(r=e.repository)!=null&&r.startsWith("github:WillBoosterLab/"))&&a.push("notify-ready.yml"),a.push("test.yml","wbfy.yml","wbfy-merge.yml","semantic-pr.yml","close-comment.yml","add-issue-to-project.yml");for(let s of a){let o=R.default.basename(s,".yml");await p.run(()=>fi(e,t,o))}})}async function fi(e,t,i){var r,s;let n=(0,St.default)(di[i]||{}),a=R.default.join(t,`${i}.yml`);try{let o=await T.default.promises.readFile(a,"utf8"),l=Se.default.load(o);n=_t.default.all([n,l,n],{arrayMerge:X})}catch{}for(let o of Object.values(n.jobs)){if(!((s=(r=o.uses)==null?void 0:r.includes)!=null&&s.call(r,"/reusable-workflows/")))return;gi(e,o,i)}switch(i){case"release":{if(n.on.schedule)delete n.on.push;else if(e.release.branches.length>0)n.on.push.branches=e.release.branches;else{await T.default.promises.rm(R.default.join(t,"release.yml"),{force:!0});return}break}case"wbfy":{bt(n,20,24);break}case"wbfy-merge":{bt(n,0,4);break}}if(await xt(n,a),i==="release")await T.default.promises.rm(R.default.join(t,"semantic-release.yml"),{force:!0});else if(i==="sync"){if(await T.default.promises.rm(R.default.join(t,"sync-init.yml"),{force:!0}),!n.jobs.sync)return;n.jobs["sync-force"]=n.jobs.sync;let o=n.jobs.sync.with.sync_params_without_dest;if(!o)return;n.jobs.sync.with.sync_params_without_dest=`--force ${o}`,n.name="Force to Sync",n.on={workflow_dispatch:null},delete n.jobs.sync,await xt(n,R.default.join(t,"sync-force.yml"))}}function gi(e,t,i){var n,a,r;if(t.with||={},t.secrets||={},(e.release.github&&i==="test"||i==="release"||i==="wbfy"||i==="wbfy-merge")&&(t.secrets.GH_TOKEN=e.publicRepo?"${{ secrets.PUBLIC_GH_BOT_PAT }}":"${{ secrets.GH_BOT_PAT }}"),e.release.npm&&(i==="release"||i==="test")&&(t.secrets.NPM_TOKEN="${{ secrets.NPM_TOKEN }}"),t.secrets.FIREBASE_TOKEN&&(t.secrets.GCP_SA_KEY_JSON_FOR_FIREBASE="${{ secrets.GCP_SA_KEY_JSON_FOR_FIREBASE }}",delete t.secrets.FIREBASE_TOKEN),(t.secrets.DISCORD_WEBHOOK_URL&&(i==="release"||i.startsWith("deploy"))||t.with.server_url&&i.startsWith("deploy"))&&(t.secrets.DISCORD_WEBHOOK_URL="${{ secrets.DISCORD_WEBHOOK_URL_FOR_RELEASE }}"),i==="sync"){let s=(n=t.with)==null?void 0:n.sync_params_without_dest;s&&(t.with.sync_params_without_dest=s.replace("sync ",""))}if((a=e.repository)!=null&&a.startsWith("github:WillBooster/")?t.uses=t.uses.replace("WillBoosterLab/","WillBooster/"):(r=e.repository)!=null&&r.startsWith("github:WillBoosterLab/")&&(t.uses=t.uses.replace("WillBooster/","WillBoosterLab/")),delete t.with.non_self_hosted,delete t.with.notify_discord,delete t.with.require_fly,delete t.with.require_gcloud,t.with.dot_env_path===".env"&&delete t.with.dot_env_path,e.containingDockerfile&&i.startsWith("deploy")&&(t.with.cpu_arch="X64"),i==="release"||i==="test"||i==="wbfy"||i==="wbfy-merge"||i.startsWith("deploy")?e.publicRepo&&(t.with.github_hosted_runner=!0):delete t.with.github_hosted_runner,Object.keys(t.with).length>0?H(t.with):delete t.with,Object.keys(t.secrets).length>0){let s=H(t.secrets);delete t.secrets,t.secrets=s}else delete t.secrets}function bt(e,t,i){var l,g;let[n,a]=(((g=(l=e.on.schedule)==null?void 0:l[0])==null?void 0:g.cron)??"").split(" ").map(Number);if(n!==0&&Number.isInteger(a)){let f=(a+9)%24,y=t<i?t<=f&&f<i:t<=f||f<i;if(y)return;console.log("setSchedule:",e,n,a,y,f,t,i)}else console.log("setSchedule:",e,n,a);let r=1+Math.floor(Math.random()*59),s=t+Math.floor(Math.random()*(i-t)),o=`${r} ${(s-9+24)%24} * * *`;e.on.schedule=[{cron:o}]}async function xt(e,t){let i=Se.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await T.default.promises.writeFile(t,i)}var D=c(require("node:fs")),L=c(require("node:path")),Fe=c(require("js-yaml"));async function Rt(e){return u.function("generateYarnrcYml",async()=>{var f,y;let t=U("yarn",["--version"],e.dirPath),i=yi("@yarnpkg/cli",e.dirPath);$t(t)<=$t(i)&&t!==i&&v("yarn",["set","version",i],e.dirPath,1);let n=L.default.join(e.dirPath,".yarn","releases");await D.default.promises.mkdir(n,{recursive:!0});for(let m of await D.default.promises.readdir(n))m.startsWith("yarn-")&&!m.startsWith(`yarn-${i}.`)&&(await p.run(()=>D.default.promises.rm(L.default.join(n,m))),console.log("Removed",L.default.join(n,m)));let a=L.default.resolve(e.dirPath,".yarnrc");await p.run(()=>D.default.promises.rm(a,{force:!0}));let r=L.default.resolve(e.dirPath,".yarnrc.yml"),s=Fe.default.load(await D.default.promises.readFile(r,"utf8"));s.defaultSemverRangePrefix="",e.requiringNodeModules&&(s.nodeLinker="node-modules",s.nmMode="hardlinks-global",s.enableGlobalCache=!0);let o=((f=s.plugins)==null?void 0:f.length)??0;if(s.plugins=((y=s.plugins)==null?void 0:y.filter(m=>m.path!==".yarn/plugins/undefined.cjs"))??[],s.plugins.length!==o){let m=L.default.resolve(e.dirPath,".yarnrc","undefined.cjs");await p.run(()=>D.default.promises.rm(m,{force:!0}))}s.plugins.length===0&&delete s.plugins,await D.default.promises.writeFile(r,Fe.default.dump(s,{lineWidth:-1}));let l=(s.plugins??[]).map(m=>m.spec),g=e.containingTypeScript||e.containingTypeScriptInPackages;Ct(e,l,g,"@yarnpkg/plugin-typescript"),g&&!e.requiringNodeModules&&v("yarn",["dlx","@yarnpkg/sdks","vscode"],e.dirPath),Ct(e,l,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),v("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function yi(e,t){let i=U("npm",["show",e,"versions","--json"],t),n=JSON.parse(i);return n[n.length-1]}function Ct(e,t,i,n){i!==t.includes(n)&&v("yarn",["plugin",i?"import":"remove",n],e.dirPath)}function $t(e){let[t]=e.split(".");return Number(t)}async function Tt(e){return u.function("setupLabels",async()=>{if(!ee)return;let[t,i]=E.getOrgAndName(e.repository??"");if(!(!t||!i)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await d(t,i,"d1: x-easy :hedgehog:","EDE9FE"),await d(t,i,"d2: easy :rabbit2:","DDD6FE"),await d(t,i,"d3: medium :ox:","C4B5FD"),await d(t,i,"d4: hard :squid:","A78BFA"),await d(t,i,"d5: x-hard :whale2:","8B5CF6"),await d(t,i,"p1: critical :fire::fire::fire:","EF4444"),await d(t,i,"p2: urgent :fire::fire:","F87171"),await d(t,i,"p3: important :fire:","FCA5A5"),await d(t,i,"p4: nice to have :droplet:","FECACA"),await d(t,i,"r: blitz","5300bc"),await d(t,i,"r: firebase","ffca28"),await d(t,i,"r: prisma","0c344b"),await d(t,i,"r: react","61dafb"),await d(t,i,"r: svelte","ff3e00"),await d(t,i,"r: semantic-release","494949"),await d(t,i,"ready :rocket:","22C55E"),await d(t,i,"review requested :mag:","FBCA04"),await d(t,i,"released :bookmark:","6366F1"),await d(t,i,"s: 0.5h :clock1230:","F3F4F6"),await d(t,i,"s: 1h :clock1:","E5E7EB"),await d(t,i,"s: 2h :clock2:","D1D5DB"),await d(t,i,"s: 3h :clock3:","9CA3AF"),await d(t,i,"s: 5h :clock5:","6B7280"),await d(t,i,"s: 8h :clock8:","4B5563"),await d(t,i,"s: 13h :clock1:","374151"),await d(t,i,"t: build :hammer:","BFDBFE"),await d(t,i,"t: chore :broom:","BFDBFE"),await d(t,i,"t: ci :construction_worker:","BFDBFE"),await d(t,i,"t: docs :memo:","BFDBFE"),await d(t,i,"t: feat :sparkles:","BFDBFE"),await d(t,i,"t: fix :bug:","BFDBFE"),await d(t,i,"t: perf :zap:","BFDBFE"),await d(t,i,"t: refactor :recycle:","BFDBFE"),await d(t,i,"t: style :lipstick:","BFDBFE"),await d(t,i,"t: test :test_tube:","BFDBFE"),await d(t,i,"project","24292F"),await _(t,i,"bug"),await _(t,i,"documentation"),await _(t,i,"duplicate"),await _(t,i,"enhancement"),await _(t,i,"good first issue"),await _(t,i,"help wanted"),await _(t,i,"invalid"),await _(t,i,"question"),await _(t,i,"wontfix"),await _(t,i,"ready"),await _(t,i,"review requested"),await _(t,i,"released"),await _(t,i,"semantic-release")}catch(n){console.warn("Skip setupLabels due to:",(n==null?void 0:n.stack)??n)}})}async function d(e,t,i,n){try{await C.request("POST /repos/{owner}/{repo}/labels",{owner:e,repo:t,name:i,color:n})}catch{await C.request("PATCH /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i,color:n})}}async function _(e,t,i){try{await C.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i})}catch{}}var jt=c(require("dotenv")),B=c(require("libsodium-wrappers"));var hi=["READY_DISCORD_WEBHOOK_URL"];async function Et(e){return u.function("setupSecrets",async()=>{if(!ee)return;let[t,i]=E.getOrgAndName(e.repository??"");if(!t||!i||t!=="WillBoosterLab")return;let n=jt.default.config().parsed||{};if(Object.keys(n).length!==0)try{for(let o of hi)try{await C.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:o})}catch{}let a=await C.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:i}),{key:r,key_id:s}=a.data;await B.default.ready;for(let[o,l]of Object.entries(n)){if(e.publicRepo&&o==="GH_BOT_PAT"||!e.publicRepo&&o==="PUBLIC_GH_BOT_PAT")continue;let g=B.default.from_base64(r,B.default.base64_variants.ORIGINAL),f=B.default.from_string(l),y=B.default.crypto_box_seal(f,g),m=B.default.to_base64(y,B.default.base64_variants.ORIGINAL);await C.request("PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:o,encrypted_value:m,key_id:s})}}catch(a){console.warn("Skip setupSecrets due to:",(a==null?void 0:a.stack)??a)}})}async function Ot(e){}var S=c(require("node:fs")),Y=c(require("node:fs/promises")),P=c(require("node:path")),N=c(require("glob")),Bt=c(require("js-yaml")),Nt=require("simple-git");async function Ce(e){var i;let t=P.default.resolve(e,"package.json");try{let n=S.default.existsSync(t),a={},r={},s={};if(n){let F=S.default.readFileSync(t,"utf8");s=JSON.parse(F),a=s.dependencies??{},r=s.devDependencies??{}}let o=!0;try{let F=P.default.resolve(e,".yarnrc.yml"),x=Bt.default.load(await Y.default.readFile(F,"utf8"));o=!x.nodeLinker||x.nodeLinker==="node-modules"}catch{}let l=[],g=[];try{let F=P.default.resolve(e,".releaserc.json"),x=JSON.parse(await Y.default.readFile(F,"utf8"));l=(x==null?void 0:x.branches)||[],g=((i=x==null?void 0:x.plugins)==null?void 0:i.flat())||[]}catch{}let f=P.default.basename(P.default.resolve(e,".."))!=="packages"||!S.default.existsSync(P.default.resolve(e,"..","..","package.json")),y;f&&(y=await Pi(e,s));let m;try{m=await Y.default.readFile(P.default.resolve(e,".tool-versions"),"utf8")}catch{try{m="nodejs "+(await Y.default.readFile(P.default.resolve(e,".node-version"),"utf8")).trim()}catch{}}let w={dirPath:e,root:f,publicRepo:(y==null?void 0:y.private)===!1,referred:!!s.files,repository:y!=null&&y.full_name?`github:${y==null?void 0:y.full_name}`:void 0,willBoosterConfigs:t.includes(`${P.default.sep}willbooster-configs`),containingSubPackageJsons:N.default.sync("packages/**/package.json",{cwd:e}).length>0,containingDockerfile:S.default.existsSync(P.default.resolve(e,"Dockerfile"))||S.default.existsSync(P.default.resolve(e,"docker-compose.yml")),containingGemfile:S.default.existsSync(P.default.resolve(e,"Gemfile")),containingGoMod:S.default.existsSync(P.default.resolve(e,"go.mod")),containingPackageJson:S.default.existsSync(P.default.resolve(e,"package.json")),containingPoetryLock:S.default.existsSync(P.default.resolve(e,"poetry.lock")),containingPomXml:S.default.existsSync(P.default.resolve(e,"pom.xml")),containingPubspecYaml:S.default.existsSync(P.default.resolve(e,"pubspec.yaml")),containingTemplateYaml:S.default.existsSync(P.default.resolve(e,"template.yaml")),containingJavaScript:N.default.sync("@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:e}).length>0,containingTypeScript:N.default.sync("@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:e}).length>0,containingJsxOrTsx:N.default.sync("@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,containingJavaScriptInPackages:N.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:e}).length>0,containingTypeScriptInPackages:N.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:e}).length>0,containingJsxOrTsxInPackages:N.default.sync("packages/**/@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,depending:{blitz:(a.blitz||r.blitz||"").replace("^","")[0],firebase:!!r["firebase-tools"],prisma:!!r.prisma,reactNative:!!a["react-native"],semanticRelease:!!(r["semantic-release"]||l.length>0||g.length>0),storybook:!!r["@storybook/react"]},release:{branches:l,github:g.includes("@semantic-release/github"),npm:g.includes("@semantic-release/npm")},requiringNodeModules:o,versionsText:m};if(w.eslintBase=wi(w),w.containingGemfile||w.containingGoMod||w.containingPackageJson||w.containingPoetryLock||w.containingPomXml||w.containingPubspecYaml||w.containingTemplateYaml)return w}catch{}}function wi(e){if(e.containingTypeScript)return e.containingJsxOrTsx?"@willbooster/eslint-config-ts-react":"@willbooster/eslint-config-ts";if(e.containingJsxOrTsx)return"@willbooster/eslint-config-js-react";if(e.containingJavaScript)return"@willbooster/eslint-config-js"}async function Pi(e,t){var o,l,g;let a=(await(0,Nt.simpleGit)(e).getRemotes(!0)).find(f=>f.name==="origin"),r=((o=a==null?void 0:a.refs)==null?void 0:o.fetch)??((l=a==null?void 0:a.refs)==null?void 0:l.push);if(typeof r=="string"){let f=await Dt(r);if(f)return f}let s=((g=t.repository)==null?void 0:g.url)??t.repository;if(typeof s=="string"){let f=await Dt(s);if(f&&f.message!=="Not Found")return f}}async function Dt(e){let[t,i]=E.getOrgAndName(e);if(!t||!i)return;let n={full_name:`${t}/${i}`};try{let a=await C.request("GET /repos/{owner}/{repo}",{owner:t,repo:i});Object.assign(n,a.data)}catch{}return n}async function vi(){let e=await(0,Jt.default)(process.argv.slice(2)).command("wbfy <paths...>","Generate/update project files for WillBooster").demandCommand(1).alias("d","skipDeps").boolean("skipDeps").default("skipDeps",!1).describe("skipDeps","Skip dependency installation").alias("v","verbose").boolean("verbose").default("verbose",!1).argv;j.isVerbose=e.verbose;for(let t of e._){if(typeof t=="number")continue;let i=await Ce(t);if(!i){console.error(`there is no valid package.json in ${t}`);continue}let n=i.containingSubPackageJsons?It.default.sync("packages/*",{cwd:t}).map(l=>Wt.default.resolve(t,l)):[],r=(await Promise.all(n.map(l=>Ce(l)))).filter(l=>!!l),s=[i,...r];if(j.isVerbose)for(let l of s)console.info(l);await je(i),await Rt(i),await Promise.all([Oe(i),Ke(i),nt(i),ot(i),ke(i),pt(i),yt(i),dt(i),Ft(i),Tt(i),Et(i),Ot(i)]),await p.promiseAll();let o=[];for(let l of s)await Ve(l,i),await p.promiseAll(),!(!l.root&&!l.containingPackageJson)&&(await lt(l),await rt(l,i,e.skipDeps),o.push(ke(l)),(l.containingTypeScript||l.containingTypeScriptInPackages)&&o.push(kt(l,i)),(l.containingJavaScript||l.containingJavaScriptInPackages||l.containingTypeScript||l.containingTypeScriptInPackages)&&(i.willBoosterConfigs||o.push(He(l,i)),o.push(Le(l))));await Promise.all(o),await p.promiseAll(),v("yarn",["cleanup"],t),v("yarn",["install"],t)}}vi().then();
271
+ `);let l=n+at+o+s+a;await p.run(()=>h.generateFile(t,l))})}var ne=c(require("node:fs")),_e=c(require("node:path"));async function pt(e){return d.function("generateReadme",async()=>{var i,s;let t=_e.default.resolve(e.dirPath,"README.md"),r=await ne.default.promises.readFile(t,"utf8");r=ct(e,r,cr,".releaserc.json");let n=(s=e.repository)==null?void 0:s.slice(((i=e.repository)==null?void 0:i.indexOf(":"))+1),a=ne.default.readdirSync(`${e.dirPath}/.github/workflows`);for(let o of a){if(!o.startsWith("test")&&!o.startsWith("deploy"))continue;let l=o;l=l.charAt(0).toUpperCase()+l.slice(1,l.indexOf(".")),l=l.replace("-"," ");let g=`[![${l}](https://github.com/${n}/actions/workflows/${o}/badge.svg)](https://github.com/${n}/actions/workflows/${o})`;r=ct(e,r,g,`.github/workflows/${o}`)}await p.run(()=>h.generateFile(t,r))})}var cr="[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)";function ct(e,t,r,n){if(!ne.default.existsSync(_e.default.resolve(e.dirPath,n)))return t;let a=t.indexOf(r);a>=0&&(t=t.slice(0,a)+t.slice(a+r.length));let i=!1;for(let s=0;s<t.length;s++)if(t[s]===`
272
+ `){i=!0,t=`${t.slice(0,s+1)}${r}
273
+ ${t.slice(s+1)}`;break}return i||(t=`${t}
274
+ ${r}
275
+ `),t}var mt=c(require("node:fs")),dt=c(require("node:path")),Se=c(require("deepmerge"));async function ut(e){return d.function("generateReleaserc",async()=>{let t=dt.default.resolve(e.dirPath,".releaserc.json");try{let r=JSON.parse(await mt.default.promises.readFile(t,"utf8")),n=(r==null?void 0:r.plugins)||[];for(let i=0;i<n.length;i++){let s=Array.isArray(n[i])?n[i][0]:n[i],o=Array.isArray(n[i])&&n[i][1]||{};s==="@semantic-release/commit-analyzer"?n[i]=["@semantic-release/commit-analyzer",Se.default.all([o,{preset:"conventionalcommits"}],{arrayMerge:W})]:s==="@semantic-release/github"&&(n[i]=["@semantic-release/github",Se.default.all([o,{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}],{arrayMerge:W})])}let a=JSON.stringify(r);await p.run(()=>h.generateFile(t,a))}catch{}})}var oe=c(require("node:fs")),se=c(require("node:path")),ft=c(require("deepmerge")),gt=c(require("lodash.clonedeep"));var pr={extends:["@willbooster"]};async function yt(e){return d.function("generateRenovateJson",async()=>{let t=(0,gt.default)(pr),r=se.default.resolve(e.dirPath,".renovaterc.json");try{let a=await oe.default.promises.readFile(r,"utf8"),i=JSON.parse(a);t=ft.default.all([t,i,t],{arrayMerge:W})}catch{}await p.run(()=>oe.default.promises.rm(se.default.resolve(e.dirPath,".dependabot"),{force:!0})),await p.run(()=>oe.default.promises.rm(se.default.resolve(e.dirPath,"renovate.json"),{force:!0}));let n=JSON.stringify(t);await p.run(()=>h.generateFile(r,n))})}var ht=c(require("node:fs")),wt=c(require("node:path")),Pt=c(require("deepmerge")),vt=c(require("lodash.clonedeep"));function H(e){let t=Object.entries(e).sort(([r],[n])=>r.localeCompare(n));for(let[r,n]of t)delete e[r],e[r]=n;return e}var mr={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,declaration:!0,sourceMap:!0,importHelpers:!1,outDir:"dist",typeRoots:["./node_modules/@types","./@types"]},include:["src/**/*","__tests__/**/*","scripts/**/*","packages/*/src/**/*","packages/*/__tests__/**/*","packages/*/scripts/**/*"]},dr={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,declaration:!0,sourceMap:!0,importHelpers:!1,outDir:"dist",typeRoots:["../../node_modules/@types","../../@types","./@types"]},include:["src/**/*","__tests__/**/*","scripts/**/*"]};async function kt(e,t){return d.function("generateTsconfig",async()=>{var i,s;if(t.depending.blitz)return;let r=(0,vt.default)(e.root?mr:dr);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&delete r.compilerOptions.jsx,e.root&&!e.containingSubPackageJsons&&(r.include=r.include.filter(o=>!o.startsWith("packages/*/")));let n=wt.default.resolve(e.dirPath,"tsconfig.json");try{let o=await ht.default.promises.readFile(n,"utf8"),l=JSON.parse(o);l.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete l.extends,(i=r==null?void 0:r.compilerOptions)==null||delete i.target,(s=r==null?void 0:r.compilerOptions)==null||delete s.module,l.jsx&&delete r.jsx,r=Pt.default.all([r,l,r],{arrayMerge:W}),r.include=r.include.filter(g=>!g.includes("@types"))}catch{}H(r.compilerOptions);let a=JSON.stringify(r);await p.run(()=>h.generateFile(n,a))})}var T=c(require("node:fs")),R=c(require("node:path")),_t=c(require("deepmerge")),Fe=c(require("js-yaml")),St=c(require("lodash.clonedeep"));var ur={test:{name:"Test",on:{pull_request:null,push:{branches:["main","wbfy","renovate/**"]}},jobs:{test:{uses:"WillBooster/reusable-workflows/.github/workflows/test.yml@main"}}},release:{name:"Release",on:{push:{branches:[]}},jobs:{release:{uses:"WillBooster/reusable-workflows/.github/workflows/release.yml@main"}}},wbfy:{name:"Willboosterify",on:{workflow_dispatch:null},jobs:{wbfy:{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy.yml@main"}}},"wbfy-merge":{name:"Merge wbfy",on:{workflow_dispatch:null},jobs:{"wbfy-merge":{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy-merge.yml@main"}}},"semantic-pr":{name:"Lint PR title",on:{pull_request_target:{types:["opened","edited","synchronize"]}},jobs:{"semantic-pr":{uses:"WillBooster/reusable-workflows/.github/workflows/semantic-pr.yml@main"}}},"notify-ready":{name:"Notify ready",on:{issues:{types:["labeled"]}},jobs:{"notify-ready":{uses:"WillBooster/reusable-workflows/.github/workflows/notify-ready.yml@main",secrets:{DISCORD_WEBHOOK_URL:"${{ secrets.DISCORD_WEBHOOK_URL_FOR_READY }}"}}}},"close-comment":{name:"Add close comment",on:{pull_request:{types:["opened"]}},jobs:{"close-comment":{uses:"WillBooster/reusable-workflows/.github/workflows/close-comment.yml@main"}}},"add-issue-to-project":{name:"Add issue to github project",on:{issues:{types:["labeled"]}},jobs:{"add-to-project":{uses:"WillBooster/reusable-workflows/.github/workflows/add-issue-to-project.yml@main",secrets:{GH_PROJECT_URL:"${{ secrets.GH_PROJECT_URL }}",GH_BOT_PAT:"${{ secrets.GH_BOT_PAT }}"}}}}};async function Ft(e){return d.function("generateWorkflow",async()=>{var i;let t=R.default.resolve(e.dirPath,".github","workflows");await T.default.promises.mkdir(t,{recursive:!0});let r=R.default.resolve(e.dirPath,".github","semantic.yml");await p.run(()=>T.default.promises.rm(r,{force:!0,recursive:!0}));let a=(await T.default.promises.readdir(t,{withFileTypes:!0})).filter(s=>s.isFile()&&s.name.endsWith(".yml")).map(s=>s.name);e.depending.semanticRelease&&a.push("release.yml"),(e.publicRepo||(i=e.repository)!=null&&i.startsWith("github:WillBoosterLab/"))&&a.push("notify-ready.yml"),a.push("test.yml","wbfy.yml","wbfy-merge.yml","semantic-pr.yml","close-comment.yml","add-issue-to-project.yml");for(let s of a){let o=R.default.basename(s,".yml");await p.run(()=>fr(e,t,o))}})}async function fr(e,t,r){var i,s;let n=(0,St.default)(ur[r]||{}),a=R.default.join(t,`${r}.yml`);try{let o=await T.default.promises.readFile(a,"utf8"),l=Fe.default.load(o);n=_t.default.all([n,l,n],{arrayMerge:X})}catch{}for(let o of Object.values(n.jobs)){if(!((s=(i=o.uses)==null?void 0:i.includes)!=null&&s.call(i,"/reusable-workflows/")))return;gr(e,o,r)}switch(r){case"release":{if(n.on.schedule)delete n.on.push;else if(e.release.branches.length>0)n.on.push.branches=e.release.branches;else{await T.default.promises.rm(R.default.join(t,"release.yml"),{force:!0});return}break}case"wbfy":{bt(n,20,24);break}case"wbfy-merge":{bt(n,0,4);break}}if(await xt(n,a),r==="release")await T.default.promises.rm(R.default.join(t,"semantic-release.yml"),{force:!0});else if(r==="sync"){if(await T.default.promises.rm(R.default.join(t,"sync-init.yml"),{force:!0}),!n.jobs.sync)return;n.jobs["sync-force"]=n.jobs.sync;let o=n.jobs.sync.with.sync_params_without_dest;if(!o)return;n.jobs.sync.with.sync_params_without_dest=`--force ${o}`,n.name="Force to Sync",n.on={workflow_dispatch:null},delete n.jobs.sync,await xt(n,R.default.join(t,"sync-force.yml"))}}function gr(e,t,r){var n,a,i;if(t.with||={},t.secrets||={},(e.release.github&&r==="test"||r==="release"||r==="wbfy"||r==="wbfy-merge")&&(t.secrets.GH_TOKEN=e.publicRepo?"${{ secrets.PUBLIC_GH_BOT_PAT }}":"${{ secrets.GH_BOT_PAT }}"),e.release.npm&&(r==="release"||r==="test")&&(t.secrets.NPM_TOKEN="${{ secrets.NPM_TOKEN }}"),t.secrets.FIREBASE_TOKEN&&(t.secrets.GCP_SA_KEY_JSON_FOR_FIREBASE="${{ secrets.GCP_SA_KEY_JSON_FOR_FIREBASE }}",delete t.secrets.FIREBASE_TOKEN),(t.secrets.DISCORD_WEBHOOK_URL&&(r==="release"||r.startsWith("deploy"))||t.with.server_url&&r.startsWith("deploy"))&&(t.secrets.DISCORD_WEBHOOK_URL="${{ secrets.DISCORD_WEBHOOK_URL_FOR_RELEASE }}"),r==="sync"){let s=(n=t.with)==null?void 0:n.sync_params_without_dest;s&&(t.with.sync_params_without_dest=s.replace("sync ",""))}if((a=e.repository)!=null&&a.startsWith("github:WillBooster/")?t.uses=t.uses.replace("WillBoosterLab/","WillBooster/"):(i=e.repository)!=null&&i.startsWith("github:WillBoosterLab/")&&(t.uses=t.uses.replace("WillBooster/","WillBoosterLab/")),delete t.with.non_self_hosted,delete t.with.notify_discord,delete t.with.require_fly,delete t.with.require_gcloud,t.with.dot_env_path===".env"&&delete t.with.dot_env_path,e.containingDockerfile&&r.startsWith("deploy")&&(t.with.cpu_arch="X64"),r==="release"||r==="test"||r==="wbfy"||r==="wbfy-merge"||r.startsWith("deploy")?e.publicRepo&&(t.with.github_hosted_runner=!0):delete t.with.github_hosted_runner,Object.keys(t.with).length>0?H(t.with):delete t.with,Object.keys(t.secrets).length>0){let s=H(t.secrets);delete t.secrets,t.secrets=s}else delete t.secrets}function bt(e,t,r){var l,g;let[n,a]=(((g=(l=e.on.schedule)==null?void 0:l[0])==null?void 0:g.cron)??"").split(" ").map(Number);if(n!==0&&Number.isInteger(a)){let f=(a+9)%24,y=t<r?t<=f&&f<r:t<=f||f<r;if(y)return;console.log("setSchedule:",e,n,a,y,f,t,r)}else console.log("setSchedule:",e,n,a);let i=1+Math.floor(Math.random()*59),s=t+Math.floor(Math.random()*(r-t)),o=`${i} ${(s-9+24)%24} * * *`;e.on.schedule=[{cron:o}]}async function xt(e,t){let r=Fe.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await T.default.promises.writeFile(t,r)}var D=c(require("node:fs")),L=c(require("node:path")),Ce=c(require("js-yaml"));async function Rt(e){return d.function("generateYarnrcYml",async()=>{var f,y;let t=U("yarn",["--version"],e.dirPath),r=yr("@yarnpkg/cli",e.dirPath);$t(t)<=$t(r)&&t!==r&&v("yarn",["set","version",r],e.dirPath,1);let n=L.default.join(e.dirPath,".yarn","releases");await D.default.promises.mkdir(n,{recursive:!0});for(let m of await D.default.promises.readdir(n))m.startsWith("yarn-")&&!m.startsWith(`yarn-${r}.`)&&(await p.run(()=>D.default.promises.rm(L.default.join(n,m))),console.log("Removed",L.default.join(n,m)));let a=L.default.resolve(e.dirPath,".yarnrc");await p.run(()=>D.default.promises.rm(a,{force:!0}));let i=L.default.resolve(e.dirPath,".yarnrc.yml"),s=Ce.default.load(await D.default.promises.readFile(i,"utf8"));s.defaultSemverRangePrefix="",e.requiringNodeModules&&(s.nodeLinker="node-modules",s.nmMode="hardlinks-global",s.enableGlobalCache=!0);let o=((f=s.plugins)==null?void 0:f.length)??0;if(s.plugins=((y=s.plugins)==null?void 0:y.filter(m=>m.path!==".yarn/plugins/undefined.cjs"))??[],s.plugins.length!==o){let m=L.default.resolve(e.dirPath,".yarnrc","undefined.cjs");await p.run(()=>D.default.promises.rm(m,{force:!0}))}s.plugins.length===0&&delete s.plugins,await D.default.promises.writeFile(i,Ce.default.dump(s,{lineWidth:-1}));let l=(s.plugins??[]).map(m=>m.spec),g=e.containingTypeScript||e.containingTypeScriptInPackages;Ct(e,l,g,"@yarnpkg/plugin-typescript"),g&&!e.requiringNodeModules&&v("yarn",["dlx","@yarnpkg/sdks","vscode"],e.dirPath),Ct(e,l,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),v("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function yr(e,t){let r=U("npm",["show",e,"versions","--json"],t),n=JSON.parse(r);return n[n.length-1]}function Ct(e,t,r,n){r!==t.includes(n)&&v("yarn",["plugin",r?"import":"remove",n],e.dirPath)}function $t(e){let[t]=e.split(".");return Number(t)}async function Tt(e){return d.function("setupLabels",async()=>{if(!ee)return;let[t,r]=E.getOrgAndName(e.repository??"");if(!(!t||!r)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await u(t,r,"d1: x-easy :hedgehog:","EDE9FE"),await u(t,r,"d2: easy :rabbit2:","DDD6FE"),await u(t,r,"d3: medium :ox:","C4B5FD"),await u(t,r,"d4: hard :squid:","A78BFA"),await u(t,r,"d5: x-hard :whale2:","8B5CF6"),await u(t,r,"p1: critical :fire::fire::fire:","EF4444"),await u(t,r,"p2: urgent :fire::fire:","F87171"),await u(t,r,"p3: important :fire:","FCA5A5"),await u(t,r,"p4: nice to have :droplet:","FECACA"),await u(t,r,"r: blitz","5300bc"),await u(t,r,"r: firebase","ffca28"),await u(t,r,"r: prisma","0c344b"),await u(t,r,"r: react","61dafb"),await u(t,r,"r: svelte","ff3e00"),await u(t,r,"r: semantic-release","494949"),await u(t,r,"ready :rocket:","22C55E"),await u(t,r,"review requested :mag:","FBCA04"),await u(t,r,"released :bookmark:","6366F1"),await u(t,r,"s: 0.5h :clock1230:","F3F4F6"),await u(t,r,"s: 1h :clock1:","E5E7EB"),await u(t,r,"s: 2h :clock2:","D1D5DB"),await u(t,r,"s: 3h :clock3:","9CA3AF"),await u(t,r,"s: 5h :clock5:","6B7280"),await u(t,r,"s: 8h :clock8:","4B5563"),await u(t,r,"s: 13h :clock1:","374151"),await u(t,r,"t: build :hammer:","BFDBFE"),await u(t,r,"t: chore :broom:","BFDBFE"),await u(t,r,"t: ci :construction_worker:","BFDBFE"),await u(t,r,"t: docs :memo:","BFDBFE"),await u(t,r,"t: feat :sparkles:","BFDBFE"),await u(t,r,"t: fix :bug:","BFDBFE"),await u(t,r,"t: perf :zap:","BFDBFE"),await u(t,r,"t: refactor :recycle:","BFDBFE"),await u(t,r,"t: style :lipstick:","BFDBFE"),await u(t,r,"t: test :test_tube:","BFDBFE"),await u(t,r,"project","24292F"),await _(t,r,"bug"),await _(t,r,"documentation"),await _(t,r,"duplicate"),await _(t,r,"enhancement"),await _(t,r,"good first issue"),await _(t,r,"help wanted"),await _(t,r,"invalid"),await _(t,r,"question"),await _(t,r,"wontfix"),await _(t,r,"ready"),await _(t,r,"review requested"),await _(t,r,"released"),await _(t,r,"semantic-release")}catch(n){console.warn("Skip setupLabels due to:",(n==null?void 0:n.stack)??n)}})}async function u(e,t,r,n){try{await C.request("POST /repos/{owner}/{repo}/labels",{owner:e,repo:t,name:r,color:n})}catch{await C.request("PATCH /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:r,color:n})}}async function _(e,t,r){try{await C.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:r})}catch{}}var jt=c(require("dotenv")),B=c(require("libsodium-wrappers"));var hr=["READY_DISCORD_WEBHOOK_URL"];async function Et(e){return d.function("setupSecrets",async()=>{if(!ee)return;let[t,r]=E.getOrgAndName(e.repository??"");if(!t||!r||t!=="WillBoosterLab")return;let n=jt.default.config().parsed||{};if(Object.keys(n).length!==0)try{for(let o of hr)try{await C.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:r,secret_name:o})}catch{}let a=await C.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:r}),{key:i,key_id:s}=a.data;await B.default.ready;for(let[o,l]of Object.entries(n)){if(e.publicRepo&&o==="GH_BOT_PAT"||!e.publicRepo&&o==="PUBLIC_GH_BOT_PAT")continue;let g=B.default.from_base64(i,B.default.base64_variants.ORIGINAL),f=B.default.from_string(l),y=B.default.crypto_box_seal(f,g),m=B.default.to_base64(y,B.default.base64_variants.ORIGINAL);await C.request("PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:r,secret_name:o,encrypted_value:m,key_id:s})}}catch(a){console.warn("Skip setupSecrets due to:",(a==null?void 0:a.stack)??a)}})}async function Ot(e){}var S=c(require("node:fs")),Y=c(require("node:fs/promises")),P=c(require("node:path")),N=c(require("glob")),Bt=c(require("js-yaml")),Nt=require("simple-git");async function $e(e){var r;let t=P.default.resolve(e,"package.json");try{let n=S.default.existsSync(t),a={},i={},s={};if(n){let F=S.default.readFileSync(t,"utf8");s=JSON.parse(F),a=s.dependencies??{},i=s.devDependencies??{}}let o=!0;try{let F=P.default.resolve(e,".yarnrc.yml"),x=Bt.default.load(await Y.default.readFile(F,"utf8"));o=!x.nodeLinker||x.nodeLinker==="node-modules"}catch{}let l=[],g=[];try{let F=P.default.resolve(e,".releaserc.json"),x=JSON.parse(await Y.default.readFile(F,"utf8"));l=(x==null?void 0:x.branches)||[],g=((r=x==null?void 0:x.plugins)==null?void 0:r.flat())||[]}catch{}let f=P.default.basename(P.default.resolve(e,".."))!=="packages"||!S.default.existsSync(P.default.resolve(e,"..","..","package.json")),y;f&&(y=await Pr(e,s));let m;try{m=await Y.default.readFile(P.default.resolve(e,".tool-versions"),"utf8")}catch{try{m="nodejs "+(await Y.default.readFile(P.default.resolve(e,".node-version"),"utf8")).trim()}catch{}}let w={dirPath:e,root:f,publicRepo:(y==null?void 0:y.private)===!1,referredByOtherRepo:!!s.files,repository:y!=null&&y.full_name?`github:${y==null?void 0:y.full_name}`:void 0,willBoosterConfigs:t.includes(`${P.default.sep}willbooster-configs`),containingSubPackageJsons:N.default.sync("packages/**/package.json",{cwd:e}).length>0,containingDockerfile:S.default.existsSync(P.default.resolve(e,"Dockerfile"))||S.default.existsSync(P.default.resolve(e,"docker-compose.yml")),containingGemfile:S.default.existsSync(P.default.resolve(e,"Gemfile")),containingGoMod:S.default.existsSync(P.default.resolve(e,"go.mod")),containingPackageJson:S.default.existsSync(P.default.resolve(e,"package.json")),containingPoetryLock:S.default.existsSync(P.default.resolve(e,"poetry.lock")),containingPomXml:S.default.existsSync(P.default.resolve(e,"pom.xml")),containingPubspecYaml:S.default.existsSync(P.default.resolve(e,"pubspec.yaml")),containingTemplateYaml:S.default.existsSync(P.default.resolve(e,"template.yaml")),containingJavaScript:N.default.sync("@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:e}).length>0,containingTypeScript:N.default.sync("@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:e}).length>0,containingJsxOrTsx:N.default.sync("@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,containingJavaScriptInPackages:N.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:e}).length>0,containingTypeScriptInPackages:N.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:e}).length>0,containingJsxOrTsxInPackages:N.default.sync("packages/**/@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,depending:{blitz:(a.blitz||i.blitz||"").replace("^","")[0],firebase:!!i["firebase-tools"],prisma:!!i.prisma,reactNative:!!a["react-native"],semanticRelease:!!(i["semantic-release"]||l.length>0||g.length>0),storybook:!!i["@storybook/react"]},release:{branches:l,github:g.includes("@semantic-release/github"),npm:g.includes("@semantic-release/npm")},requiringNodeModules:o,versionsText:m};if(w.eslintBase=wr(w),w.containingGemfile||w.containingGoMod||w.containingPackageJson||w.containingPoetryLock||w.containingPomXml||w.containingPubspecYaml||w.containingTemplateYaml)return w}catch{}}function wr(e){if(e.containingTypeScript)return e.containingJsxOrTsx?"@willbooster/eslint-config-ts-react":"@willbooster/eslint-config-ts";if(e.containingJsxOrTsx)return"@willbooster/eslint-config-js-react";if(e.containingJavaScript)return"@willbooster/eslint-config-js"}async function Pr(e,t){var o,l,g;let a=(await(0,Nt.simpleGit)(e).getRemotes(!0)).find(f=>f.name==="origin"),i=((o=a==null?void 0:a.refs)==null?void 0:o.fetch)??((l=a==null?void 0:a.refs)==null?void 0:l.push);if(typeof i=="string"){let f=await Dt(i);if(f)return f}let s=((g=t.repository)==null?void 0:g.url)??t.repository;if(typeof s=="string"){let f=await Dt(s);if(f&&f.message!=="Not Found")return f}}async function Dt(e){let[t,r]=E.getOrgAndName(e);if(!t||!r)return;let n={full_name:`${t}/${r}`};try{let a=await C.request("GET /repos/{owner}/{repo}",{owner:t,repo:r});Object.assign(n,a.data)}catch{}return n}async function vr(){let e=await(0,Jt.default)(process.argv.slice(2)).command("wbfy <paths...>","Generate/update project files for WillBooster").demandCommand(1).alias("d","skipDeps").boolean("skipDeps").default("skipDeps",!1).describe("skipDeps","Skip dependency installation").alias("v","verbose").boolean("verbose").default("verbose",!1).argv;j.isVerbose=e.verbose;for(let t of e._){if(typeof t=="number")continue;let r=await $e(t);if(!r){console.error(`there is no valid package.json in ${t}`);continue}let n=r.containingSubPackageJsons?It.default.sync("packages/*",{cwd:t}).map(l=>Wt.default.resolve(t,l)):[],i=(await Promise.all(n.map(l=>$e(l)))).filter(l=>!!l),s=[r,...i];if(j.isVerbose)for(let l of s)console.info(l);await Ee(r),await Rt(r),await Promise.all([De(r),qe(r),nt(r),ot(r),be(r),pt(r),yt(r),ut(r),Ft(r),Tt(r),Et(r),Ot(r)]),await p.promiseAll();let o=[];for(let l of s)await Xe(l,r),await p.promiseAll(),!(!l.root&&!l.containingPackageJson)&&(await lt(l),await it(l,r,e.skipDeps),o.push(be(l)),(l.containingTypeScript||l.containingTypeScriptInPackages)&&o.push(kt(l,r)),(l.containingJavaScript||l.containingJavaScriptInPackages||l.containingTypeScript||l.containingTypeScriptInPackages)&&(r.willBoosterConfigs||o.push(Ye(l,r)),o.push(Ae(l))));await Promise.all(o),await p.promiseAll(),v("yarn",["cleanup"],t),v("yarn",["install"],t)}}vr().then();
275
276
  //# sourceMappingURL=index.min.cjs.map