wbfy 1.60.0 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # wbfy
2
2
 
3
+ [![Test](https://github.com/WillBooster/wbfy/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/wbfy/actions/workflows/test.yml)
3
4
  [![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)
4
5
 
5
6
  :books::rocket: A tool for applying WillBooster's conventional configurations to npm packages
6
7
 
7
- [![Test](https://github.com/WillBooster/wbfy/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/wbfy/actions/workflows/test.yml)
8
-
9
8
  ## Motivation
10
9
 
11
10
  There are some resources for creating a project with conventional configurations like [Yeoman](https://yeoman.io/), GitHub's Template repository, and starter-kit repositories.
@@ -1,8 +1,8 @@
1
- "use strict";var Tt=Object.create;var _e=Object.defineProperty;var Et=Object.getOwnPropertyDescriptor;var Ot=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,jt=Object.prototype.hasOwnProperty;var Bt=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ot(t))!jt.call(e,o)&&o!==i&&_e(e,o,{get:()=>t[o],enumerable:!(r=Et(t,o))||r.enumerable});return e};var l=(e,t,i)=>(i=e!=null?Tt(Dt(e)):{},Bt(t||!e||!e.__esModule?_e(i,"default",{value:e,enumerable:!0}):i,e));var Ct=l(require("path")),$t=l(require("glob")),Rt=l(require("yargs"));var q=l(require("fs")),pe=l(require("path"));var ae=class{constructor(){this.isVerbose=!1}},T=new ae;var le=class{async function(t,i){T.isVerbose&&console.info(`--------- ${t} start ---------`),await i(),T.isVerbose&&console.info(`---------- ${t} end ----------`)}},f=new le;var Fe=require("minimal-promise-pool"),c=new Fe.PromisePool;var ce=l(require("child_process"));function v(e,t,i,r=0){do{let[o,n,a]=Ce(e,t,i);if(console.log(`$ ${o} ${n.join(" ")} at ${a.cwd}`),ce.default.spawnSync(o,n,a).status===0)break}while(--r>=0)}function A(e,t,i){let[r,o,n]=Ce(e,t,i);n.stdio="pipe";let a=ce.default.spawnSync(r,o,n),s=a.stderr.toString().trim();return s&&console.error(`${r} [${o.map(p=>`"${p}"`)}] caused the following error:
2
- ${s}`),a.stdout.toString().trim()}function Ce(e,t,i){let r={...process.env};return r.PATH&&r.BERRY_BIN_FOLDER&&(r.PATH=r.PATH.replace(`${r.BERRY_BIN_FOLDER}:`,"")),r.ASDF_DIR&&(t=["-l","-c",`. ${r.ASDF_DIR}/asdf.sh && ${e} ${t.join(" ")}`],e="bash"),[e,t,{cwd:i,env:r,shell:!1,stdio:"inherit"}]}async function $e(e){return f.function("generateVersionConfigs",async()=>{await Nt(e)})}async function Nt(e){if(!e.versionsText)return;let t=[];for(let r of e.versionsText.trim().split(`
3
- `)){let o=r.trim();if(o&&o.split(/\s+/)[0]!=="nodejs"){t.push(o);continue}let[,n]=o.split(/\s+/);await c.run(()=>q.default.promises.writeFile(pe.default.resolve(e.dirPath,".node-version"),n))}if(e.containingPoetryLock&&(Y("poetry 1.2.0",0,t),Y("python 3.9.13",0,t)),e.depending.firebase&&Y("java adoptopenjdk-17.0.4+101",0,t),e.containingPackageJson){let r=A("npm",["show","yarn","version"],e.dirPath);Y(`yarn ${r}`,t.length,t)}let i=pe.default.resolve(e.dirPath,".tool-versions");t.length?await c.run(()=>q.default.promises.writeFile(i,t.join(`
1
+ "use strict";var Tt=Object.create;var Fe=Object.defineProperty;var Ot=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,Bt=Object.prototype.hasOwnProperty;var Nt=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of jt(t))!Bt.call(e,o)&&o!==i&&Fe(e,o,{get:()=>t[o],enumerable:!(n=Ot(t,o))||n.enumerable});return e};var c=(e,t,i)=>(i=e!=null?Tt(Dt(e)):{},Nt(t||!e||!e.__esModule?Fe(i,"default",{value:e,enumerable:!0}):i,e));var Ct=c(require("node:path")),Rt=c(require("glob")),$t=c(require("yargs"));var K=c(require("node:fs")),pe=c(require("node:path"));var ae=class{isVerbose;constructor(){this.isVerbose=!1}},T=new ae;var le=class{async function(t,i){T.isVerbose&&console.info(`--------- ${t} start ---------`),await i(),T.isVerbose&&console.info(`---------- ${t} end ----------`)}},u=new le;var _e=require("minimal-promise-pool"),p=new _e.PromisePool;var ce=c(require("node:child_process"));function P(e,t,i,n=0){do{let[o,r,a]=Ce(e,t,i);if(console.log(`$ ${o} ${r.join(" ")} at ${a.cwd}`),ce.default.spawnSync(o,r,a).status===0)break}while(--n>=0)}function A(e,t,i){let[n,o,r]=Ce(e,t,i);r.stdio="pipe";let a=ce.default.spawnSync(n,o,r),s=a.stderr.toString().trim();return s&&console.error(`${n} [${o.map(l=>`"${l}"`)}] caused the following error:
2
+ ${s}`),a.stdout.toString().trim()}function Ce(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 Re(e){return u.function("generateVersionConfigs",async()=>{await Jt(e)})}async function Jt(e){if(!e.versionsText)return;let t=[];for(let n of e.versionsText.trim().split(`
3
+ `)){let o=n.trim();if(o&&o.split(/\s+/)[0]!=="nodejs"){t.push(o);continue}let[,r]=o.split(/\s+/);await p.run(()=>K.default.promises.writeFile(pe.default.resolve(e.dirPath,".node-version"),r))}if(e.containingPoetryLock&&(Y("poetry 1.2.0",0,t),Y("python 3.9.13",0,t)),e.depending.firebase&&Y("java adoptopenjdk-17.0.4+101",0,t),e.containingPackageJson){let n=A("npm",["show","yarn","version"],e.dirPath);Y(`yarn ${n}`,t.length,t)}let i=pe.default.resolve(e.dirPath,".tool-versions");await(t.length>0?p.run(()=>K.default.promises.writeFile(i,t.join(`
4
4
  `)+`
5
- `)):await c.run(()=>q.default.promises.rm(i,{force:!0})),await c.promiseAll(),v("asdf",["plugin","update","--all"],e.dirPath),v("asdf",["install"],e.dirPath)}function Y(e,t,i){let[r]=e.split(" "),o=i.findIndex(n=>n.split(/\s+/)[0]===r);o>=0?i[o]=e:i.splice(t,0,e)}var Te=l(require("path"));var b={codeWith2IndentSize:["cjs","mjs","js","jsx","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","ts","tsx","jsx"].sort(),prettier:["cjs","mjs","js","jsx","ts","tsx","json","json5","css","htm","html","md","scss","vue","yaml","yml"].sort()};var Re=l(require("fs/promises")),y={async generateFile(e,t){await Re.default.writeFile(e,t),console.log(`Generated ${e}`)}};var Jt=`root = true
5
+ `)):p.run(()=>K.default.promises.rm(i,{force:!0}))),await p.promiseAll(),P("asdf",["plugin","update","--all"],e.dirPath),P("asdf",["install"],e.dirPath)}function Y(e,t,i){let[n]=e.split(" "),o=i.findIndex(r=>r.split(/\s+/)[0]===n);o>=0?i[o]=e:i.splice(t,0,e)}var Ee=c(require("node:path"));var k={codeWith2IndentSize:["cjs","mjs","js","jsx","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","ts","tsx","jsx"].sort(),prettier:["cjs","mjs","js","jsx","ts","tsx","json","json5","css","htm","html","md","scss","vue","yaml","yml"].sort()};var $e=c(require("node:fs/promises")),y={async generateFile(e,t){await $e.default.writeFile(e,t),console.log(`Generated ${e}`)}};var It=`root = true
6
6
 
7
7
  [*]
8
8
  charset = utf-8
@@ -10,33 +10,33 @@ end_of_line = lf
10
10
  insert_final_newline = true
11
11
  trim_trailing_whitespace = true
12
12
 
13
- ${K(b.codeWith2IndentSize)}
13
+ ${q(k.codeWith2IndentSize)}
14
14
  indent_size = 2
15
15
  indent_style = space
16
16
 
17
- ${K(b.codeWith4IndentSize)}
17
+ ${q(k.codeWith4IndentSize)}
18
18
  indent_size = 4
19
19
  indent_style = space
20
20
 
21
- ${K(b.codeWith8IndentSize)}
21
+ ${q(k.codeWith8IndentSize)}
22
22
  indent_size = 8
23
23
  indent_style = space
24
24
 
25
- ${K(b.markdownLike)}
25
+ ${q(k.markdownLike)}
26
26
  max_line_length = off
27
27
  trim_trailing_whitespace = false
28
28
 
29
29
  [{Makefile,*.mk}]
30
30
  indent_style = tab
31
- `;async function Ee(e){return f.function("generateEditorconfig",async()=>{let t=Te.default.resolve(e.dirPath,".editorconfig");await c.run(()=>y.generateFile(t,Jt))})}function K(e){return e.length>1?`[*.{${e.join(",")}}]`:`[*.${e[0]}]`}var me=l(require("path"));var H=l(require("fs")),k={header:"# Project-specific settings",separator:"# Generated by @willbooster/willboosterify",separatorPrefix:"# Generated by @willbooster",async getExistingContent(e){try{return(await H.default.promises.readFile(e,"utf-8")).replace(/# Project-specific settings[^\n]*\n/m,"").replace(/# Generated by[^\n]*\n/m,"").replace(/\r?\n\r?\n(\r?\n)+/gm,`
31
+ `;async function Te(e){return u.function("generateEditorconfig",async()=>{let t=Ee.default.resolve(e.dirPath,".editorconfig");await p.run(()=>y.generateFile(t,It))})}function q(e){return e.length>1?`[*.{${e.join(",")}}]`:`[*.${e[0]}]`}var me=c(require("node:path"));var H=c(require("node:fs")),v={header:"# Project-specific settings",separator:"# Generated by @willbooster/willboosterify",separatorPrefix:"# Generated by @willbooster",async getExistingContent(e){try{return(await H.default.promises.readFile(e,"utf8")).replace(/# Project-specific settings[^\n]*\n/m,"").replace(/# Generated by[^\n]*\n/m,"").replace(/\r?\n\r?\n(\r?\n)+/gm,`
32
32
 
33
- `)}catch{return null}},async getUserContent(e){try{let t=await H.default.promises.readFile(e,"utf-8"),i=t.indexOf(this.separatorPrefix);if(i>=0)return t.substring(0,t.indexOf(`
34
- `,i)+1)}catch{}return null},async isBerryZeroInstallEnabled(e){try{return(await H.default.promises.readFile(e,"utf-8")).includes(`
35
- !.yarn/cache`)}catch{return!1}}};var Wt=`${k.header}
33
+ `)}catch{}},async getUserContent(e){try{let t=await H.default.promises.readFile(e,"utf8"),i=t.indexOf(this.separatorPrefix);if(i>=0)return t.slice(0,t.indexOf(`
34
+ `,i)+1)}catch{}},async isBerryZeroInstallEnabled(e){try{return(await H.default.promises.readFile(e,"utf8")).includes(`
35
+ !.yarn/cache`)}catch{return!1}}};var Wt=`${v.header}
36
36
 
37
37
 
38
- ${k.separator}
39
- `,It=`
38
+ ${v.separator}
39
+ `,Lt=`
40
40
  3rd-party/
41
41
  @types/
42
42
  __generated__/
@@ -49,39 +49,39 @@ test-fixtures/
49
49
  *.min.js
50
50
  .yarn/
51
51
  .pnp.js
52
- `;async function Oe(e){return f.function("generateEslintignore",async()=>{let t=me.default.resolve(e.dirPath,".eslintignore"),i=await k.getUserContent(t)||Wt,r=me.default.resolve(e.dirPath,".gitignore"),o=await k.getExistingContent(r)||"",n=i+It+o;await c.run(()=>y.generateFile(t,n))})}var je=l(require("fs")),Be=l(require("path")),Ne=l(require("deepmerge"));var De=l(require("deepmerge"));function V(e,t){return t}function X(e,t,i){let r=e.slice();return t.forEach((o,n)=>{typeof r[n]>"u"?r[n]=i.cloneUnlessOtherwiseSpecified(o,i):i.isMergeableObject(o)?r[n]=(0,De.default)(e[n],o,i):e.indexOf(o)===-1&&r.push(o)}),r}async function Je(e,t){return f.function("generateEslintrc",async()=>{let i=[];e.eslintBase&&i.push(e.eslintBase),e!==t&&i.push("../../.eslintrc.json");let r={root:!0,extends:i},o=Be.default.resolve(e.dirPath,".eslintrc.json");try{let a=await je.default.promises.readFile(o,"utf-8"),s=JSON.parse(a);s.extends&&(s.extends=s.extends.filter(m=>!m.startsWith("@willbooster/")&&m!=="../../.eslintrc.json")),i.length||(s.extends=[]);let p=r.extends;r.extends=s.extends,s.extends=p,r=Ne.default.all([r,s,r],{arrayMerge:X}),e.depending.blitz&&(r.extends=[...r.extends.filter(m=>m!=="blitz"),"blitz"])}catch{}let n=JSON.stringify(r);await c.run(()=>y.generateFile(o,n))})}var We=l(require("path"));var Lt=`* text=auto
52
+ `;async function Oe(e){return u.function("generateEslintignore",async()=>{let t=me.default.resolve(e.dirPath,".eslintignore"),i=await v.getUserContent(t)||Wt,n=me.default.resolve(e.dirPath,".gitignore"),o=await v.getExistingContent(n)||"",r=i+Lt+o;await p.run(()=>y.generateFile(t,r))})}var De=c(require("node:fs")),Be=c(require("node:path")),Ne=c(require("deepmerge"));var je=c(require("deepmerge"));function V(e,t){return t}function X(e,t,i){let n=[...e];for(let[o,r]of t.entries())typeof n[o]>"u"?n[o]=i.cloneUnlessOtherwiseSpecified(r,i):i.isMergeableObject(r)?n[o]=(0,je.default)(e[o],r,i):e.includes(r)||n.push(r);return n}async function Je(e,t){return u.function("generateEslintrc",async()=>{let i=[];e.eslintBase&&i.push(e.eslintBase),e!==t&&i.push("../../.eslintrc.json");let n={root:!0,extends:i},o=Be.default.resolve(e.dirPath,".eslintrc.json");try{let a=await De.default.promises.readFile(o,"utf8"),s=JSON.parse(a);s.extends&&(s.extends=s.extends.filter(m=>!m.startsWith("@willbooster/")&&m!=="../../.eslintrc.json")),i.length===0&&(s.extends=[]);let l=n.extends;n.extends=s.extends,s.extends=l,n=Ne.default.all([n,s,n],{arrayMerge:X}),e.depending.blitz&&(n.extends=[...n.extends.filter(m=>m!=="blitz"),"blitz"])}catch{}let r=JSON.stringify(n);await p.run(()=>y.generateFile(o,r))})}var Ie=c(require("node:path"));var At=`* text=auto
53
53
 
54
54
  *.vcproj text eol=crlf
55
55
 
56
- ${b.codeWith2IndentSize.concat(b.codeWith4IndentSize).concat(b.markdownLike).map(e=>`*.${e} text eol=lf`).join(`
56
+ ${[...k.codeWith2IndentSize,...k.codeWith4IndentSize,...k.markdownLike].map(e=>`*.${e} text eol=lf`).join(`
57
57
  `)}
58
- `;async function Ie(e){return f.function("generateGitattributes",async()=>{let t=We.default.resolve(e.dirPath,".gitattributes");await c.run(()=>y.generateFile(t,Lt))})}var U=l(require("fs")),Ae=l(require("os")),B=l(require("path"));async function Le(e,t){let{default:i}=await import("node-fetch");return i(e,t)}var At=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],Ut=`${k.header}
58
+ `;async function We(e){return u.function("generateGitattributes",async()=>{let t=Ie.default.resolve(e.dirPath,".gitattributes");await p.run(()=>y.generateFile(t,At))})}var U=c(require("node:fs")),Ae=c(require("node:os")),B=c(require("node:path"));async function Le(e,t){let{default:i}=await import("node-fetch");return i(e,t)}var Ut=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],zt=`${v.header}
59
59
 
60
60
 
61
- ${k.separator}
62
- `,zt=`
61
+ ${v.separator}
62
+ `,Gt=`
63
63
  .devcontainer/
64
64
  dist/
65
65
  temp/
66
66
  Icon[\r]
67
67
  *.sqlite3
68
68
  *.sqlite3-journal
69
- `;async function Ue(e,t){return f.function("generateGitignore",async()=>{let i=B.default.resolve(e.dirPath,".gitignore"),r=(await k.getUserContent(i)||Ut)+zt,o=[...At];e.containingGemfile&&o.push("ruby"),e.containingGoMod&&(o.push("go"),r+=`${B.default.basename(e.dirPath)}
70
- `),e.containingPackageJson&&o.push("node"),e.containingPomXml&&(o.push("maven"),r+=`.idea/google-java-format.xml
71
- `),e.containingPubspecYaml&&(o.push("flutter","AndroidStudio","ruby"),r+=`.flutter-plugins-dependencies
69
+ `;async function Ue(e,t){return u.function("generateGitignore",async()=>{let i=B.default.resolve(e.dirPath,".gitignore"),n=(await v.getUserContent(i)||zt)+Gt,o=[...Ut];e.containingGemfile&&o.push("ruby"),e.containingGoMod&&(o.push("go"),n+=`${B.default.basename(e.dirPath)}
70
+ `),e.containingPackageJson&&o.push("node"),e.containingPomXml&&(o.push("maven"),n+=`.idea/google-java-format.xml
71
+ `),e.containingPubspecYaml&&(o.push("flutter","AndroidStudio","ruby"),n+=`.flutter-plugins-dependencies
72
72
  android/key.properties
73
73
  ios/.bundle
74
74
  .idea/runConfigurations.xml
75
- `),e.containingTemplateYaml&&(r+=`.aws-sam/
75
+ `),e.containingTemplateYaml&&(n+=`.aws-sam/
76
76
  packaged.yaml
77
- `),e.containingPoetryLock&&o.push("python"),(t.depending.firebase||e.depending.firebase)&&o.push("firebase"),(t.depending.reactNative||e.depending.reactNative)&&(o.push("reactnative"),r+=`google-services.json
77
+ `),e.containingPoetryLock&&o.push("python"),(t.depending.firebase||e.depending.firebase)&&o.push("firebase"),(t.depending.reactNative||e.depending.reactNative)&&(o.push("reactnative"),n+=`google-services.json
78
78
  android/app/src/main/assets/
79
- `),t.depending.storybook&&o.push("storybookjs"),t.depending.blitz&&(o.push("nextjs"),r+=`.blitz/
79
+ `),t.depending.storybook&&o.push("storybookjs"),t.depending.blitz&&(o.push("nextjs"),n+=`.blitz/
80
80
  .blitz**
81
- `);let n="";for(let s of o){let p=await Mt(s)??"";if(!p){let m=`https://www.toptal.com/developers/gitignore/api/${s}`,h=await(await Le(m)).text();if(h.includes("Attention Required!")){console.error(`Failed to fetch ${m}`);return}p=h.trim(),await c.run(()=>Gt(s,p)),T.isVerbose&&console.info(`Fetched ${m}`)}n&&(n+=`
82
- `),n+=p+`
83
- `}await k.isBerryZeroInstallEnabled(i)||(n=n.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*")),(e.containingPomXml||e.containingPubspecYaml)&&(n=n.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&&(n=n.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),n=n.replace(/^.idea\/?$/gm,"# .idea"),(t.depending.reactNative||e.depending.reactNative||e.containingPubspecYaml)&&(n=n.replace(/^(.idea\/.+)$/gm,`$1
84
- android/$1`));let a=r+n;await c.run(()=>y.generateFile(i,a))})}var Z=B.default.join(Ae.default.homedir(),".cache","wbfy","gitignore");async function Gt(e,t){await U.default.promises.mkdir(Z,{recursive:!0}),await U.default.promises.writeFile(B.default.join(Z,e),t)}async function Mt(e){try{let t=await U.default.promises.stat(B.default.join(Z,e));return Date.now()-t.mtimeMs>6*60*60*1e3?void 0:await U.default.promises.readFile(B.default.join(Z,e),"utf-8")}catch{}}var $=l(require("fs")),N=l(require("path"));var fe="npm test",Q={preCommit:"yarn lint-staged",prePush:"yarn typecheck",prePushForLab:`
81
+ `);let r="";for(let s of o){let l=await Yt(s)??"";if(!l){let m=`https://www.toptal.com/developers/gitignore/api/${s}`,f=await(await Le(m)).text();if(f.includes("Attention Required!")){console.error(`Failed to fetch ${m}`);return}l=f.trim(),await p.run(()=>Mt(s,l)),T.isVerbose&&console.info(`Fetched ${m}`)}r&&(r+=`
82
+ `),r+=l+`
83
+ `}await v.isBerryZeroInstallEnabled(i)||(r=r.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*")),(e.containingPomXml||e.containingPubspecYaml)&&(r=r.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&&(r=r.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),r=r.replace(/^.idea\/?$/gm,"# .idea"),(t.depending.reactNative||e.depending.reactNative||e.containingPubspecYaml)&&(r=r.replace(/^(.idea\/.+)$/gm,`$1
84
+ android/$1`));let a=n+r;await p.run(()=>y.generateFile(i,a))})}var Z=B.default.join(Ae.default.homedir(),".cache","wbfy","gitignore");async function Mt(e,t){await U.default.promises.mkdir(Z,{recursive:!0}),await U.default.promises.writeFile(B.default.join(Z,e),t)}async function Yt(e){try{let t=await U.default.promises.stat(B.default.join(Z,e));return Date.now()-t.mtimeMs>6*60*60*1e3?void 0:await U.default.promises.readFile(B.default.join(Z,e),"utf8")}catch{}}var R=c(require("node:fs")),N=c(require("node:path"));var fe="npm test",Q={preCommit:"yarn lint-staged",prePush:"yarn typecheck",prePushForLab:`
85
85
  if [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "exkazuu@gmail.com" ]; then
86
86
  echo "************************************************"
87
87
  echo "*** Don't push main branch directly. Use PR! ***"
@@ -89,7 +89,7 @@ if [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "e
89
89
  exit 1
90
90
  fi
91
91
 
92
- yarn typecheck`.trim(),postMerge:"yarn"};async function ze(e){return f.function("generateHuskyrc",async()=>{await Yt(e)})}async function Yt(e){var m,d;let t=N.default.resolve(e.dirPath,"package.json"),i=await $.default.promises.readFile(t,"utf-8"),r=JSON.parse(i);r.scripts||(r.scripts={}),delete r.scripts.postinstall,delete r.scripts.postpublish,delete r.scripts.prepare,delete r.scripts.prepublishOnly,delete r.scripts.prepack,delete r.scripts.postpack;let o=N.default.resolve(e.dirPath,".husky");await Promise.all([$.default.promises.writeFile(t,JSON.stringify(r,void 0,2)),$.default.promises.rm(o,{force:!0,recursive:!0})]),v("yarn",["dlx","husky-init","--yarn2"],e.dirPath);let n=N.default.resolve(o,"pre-commit"),a=await $.default.promises.readFile(n,"utf-8");if(await c.run(()=>$.default.promises.rm(N.default.resolve(e.dirPath,".huskyrc.json"),{force:!0})),await c.run(()=>$.default.promises.writeFile(n,a.replace(fe,Q.preCommit))),e.containingTypeScript||e.containingTypeScriptInPackages){let h=(m=e.repository)!=null&&m.startsWith("github:WillBoosterLab/")?Q.prePushForLab:Q.prePush;await c.run(()=>$.default.promises.writeFile(N.default.resolve(o,"pre-push"),a.replace(fe,h),{mode:493}))}let s=[];e.versionsText&&s.push("asdf plugin update --all"),(d=e.versionsText)!=null&&d.includes("python ")&&s.push("asdf install python"),e.versionsText&&s.push("asdf install"),s.push(Q.postMerge),e.containingPoetryLock&&s.push("poetry install"),(e.depending.blitz||e.depending.prisma)&&s.push("yarn gen-code");let p=a.replace(fe,s.join(" && "));await c.run(()=>$.default.promises.writeFile(N.default.resolve(o,"post-merge"),p,{mode:493}))}var ue=l(require("fs")),ge=l(require("path"));var qt=`<?xml version="1.0" encoding="UTF-8"?>
92
+ yarn typecheck`.trim(),postMerge:"yarn"};async function ze(e){return u.function("generateHuskyrc",async()=>{await Kt(e)})}async function Kt(e){var m,d;let t=N.default.resolve(e.dirPath,"package.json"),i=await R.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 o=N.default.resolve(e.dirPath,".husky");await Promise.all([R.default.promises.writeFile(t,JSON.stringify(n,void 0,2)),R.default.promises.rm(o,{force:!0,recursive:!0})]),P("yarn",["dlx","husky-init","--yarn2"],e.dirPath);let r=N.default.resolve(o,"pre-commit"),a=await R.default.promises.readFile(r,"utf8");if(await p.run(()=>R.default.promises.rm(N.default.resolve(e.dirPath,".huskyrc.json"),{force:!0})),await p.run(()=>R.default.promises.writeFile(r,a.replace(fe,Q.preCommit))),e.containingTypeScript||e.containingTypeScriptInPackages){let f=(m=e.repository)!=null&&m.startsWith("github:WillBoosterLab/")?Q.prePushForLab:Q.prePush;await p.run(()=>R.default.promises.writeFile(N.default.resolve(o,"pre-push"),a.replace(fe,f),{mode:493}))}let s=[];e.versionsText&&s.push("asdf plugin update --all"),(d=e.versionsText)!=null&&d.includes("python ")&&s.push("asdf install python"),e.versionsText&&s.push("asdf install"),s.push(Q.postMerge),e.containingPoetryLock&&s.push("poetry install"),(e.depending.blitz||e.depending.prisma)&&s.push("yarn gen-code");let l=a.replace(fe,s.join(" && "));await p.run(()=>R.default.promises.writeFile(N.default.resolve(o,"post-merge"),l,{mode:493}))}var ue=c(require("node:fs")),ge=c(require("node:path"));var qt=`<?xml version="1.0" encoding="UTF-8"?>
93
93
  <project version="4">
94
94
  <component name="ProjectTasksOptions">
95
95
  <TaskOptions isEnabled="true">
@@ -214,10 +214,10 @@ yarn typecheck`.trim(),postMerge:"yarn"};async function ze(e){return f.function(
214
214
  </TaskOptions>
215
215
  </component>
216
216
  </project>
217
- `;async function Ge(e){return f.function("generateIdeaSettings",async()=>{let t=ge.default.resolve(e.dirPath,".idea");if(ue.default.existsSync(t)){let i=ge.default.resolve(t,"watcherTasks.xml");e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages||e.containingPackageJson&&!e.containingPubspecYaml&&!e.containingGemfile&&!e.containingGoMod&&!e.containingPomXml?await c.run(()=>y.generateFile(i,qt)):await c.run(()=>ue.default.promises.rm(i,{force:!0}))}})}var de=l(require("fs")),ie=l(require("path"));var ee={getLintFixSuffix(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""}};var z={node:["src","__tests__","scripts"],blitz:["app","db","integrations","mailers","test"]};z.blitz=[...z.node,...z.blitz];function te(e){return e.depending.blitz?z.blitz:z.node}async function ye(e){return f.function("generateLintstagedrc",async()=>{await Kt(e)})}async function Kt(e){let t=[];if(e.containingJavaScript||e.containingTypeScript){let n=`
218
- '${Me(e)}': [${JSON.stringify(`eslint --fix${ee.getLintFixSuffix(e)}`)}, 'prettier --write'],`;t.push(n)}let i=e.root?" && !file.includes('/packages/')":"";t.push(`
219
- './**/*.{${b.prettier.join(",")}}': files => {
220
- ${e.containingJavaScript||e.containingTypeScript?Ht(e):""}
217
+ `;async function Ge(e){return u.function("generateIdeaSettings",async()=>{let t=ge.default.resolve(e.dirPath,".idea");if(ue.default.existsSync(t)){let i=ge.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(()=>y.generateFile(i,qt)):p.run(()=>ue.default.promises.rm(i,{force:!0})))}})}var de=c(require("node:fs")),ie=c(require("node:path"));var ee={getLintFixSuffix(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""}};var z={node:["src","__tests__","scripts"],blitz:["app","db","integrations","mailers","test"]};z.blitz=[...z.node,...z.blitz];function te(e){return e.depending.blitz?z.blitz:z.node}async function ye(e){return u.function("generateLintstagedrc",async()=>{await Ht(e)})}async function Ht(e){let t=[];if(e.containingJavaScript||e.containingTypeScript){let r=`
218
+ '${Me(e)}': [${JSON.stringify(`eslint --fix${ee.getLintFixSuffix(e)}`)}, 'prettier --write'],`;t.push(r)}let i=e.root?" && !file.includes('/packages/')":"";t.push(`
219
+ './**/*.{${k.prettier.join(",")}}': files => {
220
+ ${e.containingJavaScript||e.containingTypeScript?Vt(e):""}
221
221
  const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')${i});
222
222
  if (filteredFiles.length === 0) return [];
223
223
  const commands = [\`prettier --write \${filteredFiles.join(' ')}\`];
@@ -236,16 +236,16 @@ yarn typecheck`.trim(),postMerge:"yarn"};async function ze(e){return f.function(
236
236
  'poetry run isort --profile black --filter-files',
237
237
  'poetry run black',
238
238
  'poetry run flake8'
239
- ],`);let r=`${e.containingJavaScript||e.containingTypeScript?"const micromatch = require('micromatch');":""}
239
+ ],`);let n=`${e.containingJavaScript||e.containingTypeScript?"const micromatch = require('micromatch');":""}
240
240
 
241
241
  module.exports = {${t.join("")}
242
242
  };
243
- `,o=ie.default.resolve(e.dirPath,".lintstagedrc.cjs");await c.run(()=>de.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.js"),{force:!0})),await c.run(()=>de.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.json"),{force:!0})),await c.run(()=>y.generateFile(o,r))}function Me(e){return`./{${te(e).join(",")}}/**/*.{${b.eslint.join(",")}}`}function Ht(e){return`files = micromatch.not(files, '${Me(e)}');`}var R=l(require("fs")),W=l(require("path")),we=l(require("deepmerge"));var he=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],Ye=[...he,"@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"],qe=["eslint-plugin-react","eslint-plugin-react-hooks"],Ke={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js",...he],"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react",...he,...qe],"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts",...Ye],"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react",...Ye,...qe],"../../.eslintrc.json":[]};async function He(e,t,i){return f.function("generatePackageJson",async()=>{await Vt(e,t,i)})}async function Vt(e,t,i){var m,d,h;let r=W.default.resolve(e.dirPath,"package.json"),o=await R.default.promises.readFile(r,"utf-8"),n=JSON.parse(o);n.scripts=n.scripts||{},n.dependencies=n.dependencies||{},n.devDependencies=n.devDependencies||{},n.peerDependencies=n.peerDependencies||{},await Xt(n),n.name!=="@willbooster/prettier-config"&&(n.prettier="@willbooster/prettier-config");for(let g of Object.keys(n.scripts))n.scripts[g].includes("git clone")||(n.scripts[g]=n.scripts[g].replace(/yarn\s*&&\s*/,"").replace(/yarn\s*install\s*&&\s*/,""));n.scripts=(0,we.default)(n.scripts,Zt(e)),n.scripts.prettify+=await Qt(e.dirPath);let a=[],s=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],p=[];if(e.root&&(s.push("husky","@willbooster/renovate-config"),e.publicRepo&&s.push("pinst"),e.depending.semanticRelease&&(s.push("conventional-changelog-conventionalcommits"),!n.devDependencies["semantic-release"]&&!n.devDependencies["multi-semantic-release"]&&!n.devDependencies["@qiwi/multi-semantic-release"]&&s.push("semantic-release")),e.containingSubPackageJsons?n.workspaces=["packages/*"]:delete n.workspaces),(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages)&&(s.push("eslint","micromatch"),e.containingTypeScriptInPackages&&s.push("@typescript-eslint/parser")),(e.containingTypeScript||e.containingTypeScriptInPackages)&&!e.depending.blitz&&s.push("typescript"),e.eslintBase&&s.push(...Ke[e.eslintBase]),e.willBoosterConfigs&&(a=a.filter(g=>!g.includes("@willbooster/")),s=s.filter(g=>!g.includes("@willbooster/"))),n.name||(n.name=W.default.basename(e.dirPath)),e.containingSubPackageJsons&&(n.private=!0),n.license||(n.license="UNLICENSED"),!n.private&&n.license!=="UNLICENSED"&&t.publicRepo&&(n.publishConfig??(n.publishConfig={}),(m=n.publishConfig).access??(m.access="public")),!e.containingTypeScript&&!e.containingTypeScriptInPackages&&delete n.scripts.typecheck,e.depending.semanticRelease&&e.release.npm&&(n.resolutions||(n.resolutions={}),n.resolutions["npm/chalk"]="^4.1.2"),!e.containingSubPackageJsons){if(!e.containingJavaScript&&!e.containingTypeScript?(delete n.scripts.lint,delete n.scripts["lint-fix"],n.scripts.cleanup=n.scripts.cleanup.replace(" && yarn lint-fix","")):n.scripts["lint-fix"]+=ee.getLintFixSuffix(e),e.containingPubspecYaml){n.scripts.lint="flutter analyze",n.scripts["lint-fix"]="yarn lint";let g=["lib","test","test_driver"].filter(w=>R.default.existsSync(W.default.resolve(e.dirPath,w)));g.length>0&&(n.scripts["format-code"]=`flutter format $(find ${g.join(" ")} -name generated -prune -o -name '*.freezed.dart' -prune -o -name '*.g.dart' -prune -o -name '*.dart' -print)`,n.scripts.format+=" && yarn format-code")}if(e.containingPoetryLock){n.scripts.postinstall==="poetry install"&&delete n.scripts.postinstall;let g=(await R.default.promises.readdir(e.dirPath)).filter(w=>{let F=W.default.resolve(e.dirPath,w);return R.default.lstatSync(F).isDirectory()?R.default.readdirSync(F).some(_=>_.endsWith(".py")):!1});g.length>0&&(n.scripts["format-code"]=`poetry run isort --profile black ${g.join(" ")} && poetry run black ${g.join(" ")}`,n.scripts.lint=`poetry run flake8 ${g.join(" ")}`,n.scripts["lint-fix"]="yarn lint",n.scripts.format+=" && yarn format-code",p.push("black","isort","flake8"))}e.repository&&(n.repository=e.repository)}e.depending.blitz?(s=s.filter(g=>!g.includes("@typescript-eslint/")),s=s.filter(g=>g!=="eslint-plugin-react"&&g!=="eslint-import-resolver-typescript"&&g!=="eslint-plugin-import"&&g!=="eslint-plugin-react-hooks"),(d=n.scripts["gen-code"])!=null&&d.startsWith("blitz codegen")||(n.scripts["gen-code"]="blitz codegen")):e.depending.prisma&&((h=n.scripts["gen-code"])!=null&&h.startsWith("prisma generate")||(n.scripts["gen-code"]="prisma generate")),Object.keys(n.dependencies).length||delete n.dependencies,Object.keys(n.devDependencies).length||delete n.devDependencies,Object.keys(n.peerDependencies).length||delete n.peerDependencies,await R.default.promises.writeFile(r,JSON.stringify(n)),i||(a=a.filter(g=>{var w;return!((w=n.devDependencies)!=null&&w[g])}),a.length&&v("yarn",["add",...new Set(a)],e.dirPath),s=s.filter(g=>{var w;return!((w=n.dependencies)!=null&&w[g])}),s.length&&v("yarn",["add","-D",...new Set(s)],e.dirPath),p.length&&v("poetry",["add",...new Set(p)],e.dirPath))}async function Xt(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(Ke))for(let i of t)delete e.devDependencies[i];await c.run(()=>R.default.promises.rm("lerna.json",{force:!0}))}function Zt(e){let t={cleanup:"yarn format && yarn lint-fix",format:"sort-package-json && yarn prettify",lint:`eslint --color "./{${te(e)}}/**/*.{${b.eslint.join(",")}}"`,"lint-fix":"yarn lint --fix",prettify:`prettier --color --write "**/{.*/,}*.{${b.prettier.join(",")}}" "!**/test-fixtures/**"`,typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(t=(0,we.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 --color --write "**/{.*/,}*.{${b.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 Qt(e){let t=W.default.resolve(e,".prettierignore"),i=await R.default.promises.readFile(t,"utf-8"),r=i.indexOf(k.separatorPrefix);return r<0?"":i.substring(0,r).split(`
244
- `).map(a=>{let s=a.trim();return s.endsWith("/")?s.slice(0,-1):s}).filter(a=>a&&!a.startsWith("#")&&!a.includes("/")).map(a=>` "!**/${a}/**"`).join("")}var Pe=l(require("path"));var ei=`${k.header}
243
+ `,o=ie.default.resolve(e.dirPath,".lintstagedrc.cjs");await p.run(()=>de.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.js"),{force:!0})),await p.run(()=>de.default.promises.rm(ie.default.resolve(e.dirPath,".lintstagedrc.json"),{force:!0})),await p.run(()=>y.generateFile(o,n))}function Me(e){return`./{${te(e).join(",")}}/**/*.{${k.eslint.join(",")}}`}function Vt(e){return`files = micromatch.not(files, '${Me(e)}');`}var O=c(require("node:fs")),I=c(require("node:path")),we=c(require("deepmerge"));var he=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],Ye=[...he,"@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"],Ke=["eslint-plugin-react","eslint-plugin-react-hooks"],qe={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js",...he],"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react",...he,...Ke],"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts",...Ye],"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react",...Ye,...Ke],"../../.eslintrc.json":[]};async function He(e,t,i){return u.function("generatePackageJson",async()=>{await Xt(e,t,i)})}async function Xt(e,t,i){var m,d;let n=I.default.resolve(e.dirPath,"package.json"),o=await O.default.promises.readFile(n,"utf8"),r=JSON.parse(o);r.scripts=r.scripts||{},r.dependencies=r.dependencies||{},r.devDependencies=r.devDependencies||{},r.peerDependencies=r.peerDependencies||{},await Zt(r),r.name!=="@willbooster/prettier-config"&&(r.prettier="@willbooster/prettier-config");for(let f of Object.keys(r.scripts))r.scripts[f].includes("git clone")||(r.scripts[f]=r.scripts[f].replace(/yarn\s*&&\s*/,"").replace(/yarn\s*install\s*&&\s*/,""));r.scripts=(0,we.default)(r.scripts,Qt(e)),r.scripts.prettify+=await ei(e.dirPath);let a=[],s=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],l=[];if(e.root&&(s.push("husky","@willbooster/renovate-config"),e.publicRepo&&s.push("pinst"),e.depending.semanticRelease&&(s.push("conventional-changelog-conventionalcommits"),!r.devDependencies["semantic-release"]&&!r.devDependencies["multi-semantic-release"]&&!r.devDependencies["@qiwi/multi-semantic-release"]&&s.push("semantic-release")),e.containingSubPackageJsons?r.workspaces=["packages/*"]:delete r.workspaces),(e.containingJavaScript||e.containingJavaScriptInPackages||e.containingTypeScript||e.containingTypeScriptInPackages)&&(s.push("eslint","micromatch"),e.containingTypeScriptInPackages&&s.push("@typescript-eslint/parser")),(e.containingTypeScript||e.containingTypeScriptInPackages)&&!e.depending.blitz&&s.push("typescript"),e.eslintBase&&s.push(...qe[e.eslintBase]),e.willBoosterConfigs&&(a=a.filter(f=>!f.includes("@willbooster/")),s=s.filter(f=>!f.includes("@willbooster/"))),r.name||(r.name=I.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"),!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"]+=ee.getLintFixSuffix(e),e.containingPubspecYaml){r.scripts.lint="flutter analyze",r.scripts["lint-fix"]="yarn lint";let f=["lib","test","test_driver"].filter(w=>O.default.existsSync(I.default.resolve(e.dirPath,w)));f.length>0&&(r.scripts["format-code"]=`flutter format $(find ${f.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 f=await O.default.promises.readdir(e.dirPath,{withFileTypes:!0}),w=await Promise.all(f.filter(async b=>{if(!b.isDirectory())return!1;let C=I.default.resolve(e.dirPath,b.name);return(await O.default.promises.readdir(C)).some(Et=>Et.endsWith(".py"))}));w.length>0&&(r.scripts["format-code"]=`poetry run isort --profile black ${w.join(" ")} && poetry run black ${w.join(" ")}`,r.scripts.lint=`poetry run flake8 ${w.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?(s=s.filter(f=>!f.includes("@typescript-eslint/")),s=s.filter(f=>f!=="eslint-plugin-react"&&f!=="eslint-import-resolver-typescript"&&f!=="eslint-plugin-import"&&f!=="eslint-plugin-react-hooks"),(m=r.scripts["gen-code"])!=null&&m.startsWith("blitz codegen")||(r.scripts["gen-code"]="blitz codegen")):e.depending.prisma&&!((d=r.scripts["gen-code"])!=null&&d.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||(a=a.filter(f=>{var w;return!((w=r.devDependencies)!=null&&w[f])}),a.length>0&&P("yarn",["add",...new Set(a)],e.dirPath),s=s.filter(f=>{var w;return!((w=r.dependencies)!=null&&w[f])}),s.length>0&&P("yarn",["add","-D",...new Set(s)],e.dirPath),l.length>0&&P("poetry",["add",...new Set(l)],e.dirPath))}async function Zt(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(qe))for(let i of t)delete e.devDependencies[i];await p.run(()=>O.default.promises.rm("lerna.json",{force:!0}))}function Qt(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 --color --write "**/{.*/,}*.{${k.prettier.join(",")}}" "!**/test-fixtures/**"`,typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(t=(0,we.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 --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 ei(e){let t=I.default.resolve(e,".prettierignore"),i=await O.default.promises.readFile(t,"utf8"),n=i.indexOf(v.separatorPrefix);return n<0?"":i.slice(0,n).split(`
244
+ `).map(a=>{let s=a.trim();return s.endsWith("/")?s.slice(0,-1):s}).filter(a=>a&&!a.startsWith("#")&&!a.includes("/")).map(a=>` "!**/${a}/**"`).join("")}var Pe=c(require("node:path"));var ti=`${v.header}
245
245
 
246
246
 
247
- ${k.separator}
248
- `,ti=`
247
+ ${v.separator}
248
+ `,ii=`
249
249
  3rd-party/
250
250
  android/
251
251
  ios/
@@ -255,13 +255,13 @@ test-fixtures/
255
255
  *.min.js
256
256
  .yarn/
257
257
  .pnp.js
258
- `;async function Ve(e){return f.function("generatePrettierignore",async()=>{let t=Pe.default.resolve(e.dirPath,".prettierignore"),i=await k.getUserContent(t)||ei,r=Pe.default.resolve(e.dirPath,".gitignore"),o=await k.getExistingContent(r)||"",n="";e.containingPubspecYaml&&(n=`
258
+ `;async function Ve(e){return u.function("generatePrettierignore",async()=>{let t=Pe.default.resolve(e.dirPath,".prettierignore"),i=await v.getUserContent(t)||ti,n=Pe.default.resolve(e.dirPath,".gitignore"),o=await v.getExistingContent(n)||"",r="";e.containingPubspecYaml&&(r=`
259
259
  android/app/
260
260
  ios/Runner/Assets.xcassets/
261
261
  pubspec.yaml
262
- `);let a=i+ti+n+o;await c.run(()=>y.generateFile(t,a))})}var re=l(require("fs")),ve=l(require("path"));async function Ze(e){return f.function("generateReadme",async()=>{var n,a;let t=ve.default.resolve(e.dirPath,"README.md"),i=await re.default.promises.readFile(t,"utf8");i=Xe(e,i,ii,".releaserc.json");let r=(a=e.repository)==null?void 0:a.substring(((n=e.repository)==null?void 0:n.indexOf(":"))+1),o=re.default.readdirSync(`${e.dirPath}/.github/workflows`);for(let s of o){if(!s.startsWith("test")&&!s.startsWith("deploy"))continue;let p=s;p=p.charAt(0).toUpperCase()+p.substring(1,p.indexOf(".")),p=p.replace("-"," ");let m=`[![${p}](https://github.com/${r}/actions/workflows/${s}/badge.svg)](https://github.com/${r}/actions/workflows/${s})`;i=Xe(e,i,m,`.github/workflows/${s}`)}await c.run(()=>y.generateFile(t,i))})}var ii="[![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 Xe(e,t,i,r){if(!re.default.existsSync(ve.default.resolve(e.dirPath,r)))return t;let o=t.indexOf(i);o>=0&&(t=t.substring(0,o)+t.substring(o+i.length));let n=!1;for(let a=0;a<t.length;a++)if(t[a]===`
263
- `){n=!0,t=`${t.slice(0,a+1)}${i}
264
- ${t.slice(a+1)}`;break}return n||(t=`${t}
262
+ `);let a=i+ii+r+o;await p.run(()=>y.generateFile(t,a))})}var re=c(require("node:fs")),ve=c(require("node:path"));async function Ze(e){return u.function("generateReadme",async()=>{var r,a;let t=ve.default.resolve(e.dirPath,"README.md"),i=await re.default.promises.readFile(t,"utf8");i=Xe(e,i,ri,".releaserc.json");let n=(a=e.repository)==null?void 0:a.slice(((r=e.repository)==null?void 0:r.indexOf(":"))+1),o=re.default.readdirSync(`${e.dirPath}/.github/workflows`);for(let s of o){if(!s.startsWith("test")&&!s.startsWith("deploy"))continue;let l=s;l=l.charAt(0).toUpperCase()+l.slice(1,l.indexOf(".")),l=l.replace("-"," ");let m=`[![${l}](https://github.com/${n}/actions/workflows/${s}/badge.svg)](https://github.com/${n}/actions/workflows/${s})`;i=Xe(e,i,m,`.github/workflows/${s}`)}await p.run(()=>y.generateFile(t,i))})}var ri="[![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 Xe(e,t,i,n){if(!re.default.existsSync(ve.default.resolve(e.dirPath,n)))return t;let o=t.indexOf(i);o>=0&&(t=t.slice(0,o)+t.slice(o+i.length));let r=!1;for(let a=0;a<t.length;a++)if(t[a]===`
263
+ `){r=!0,t=`${t.slice(0,a+1)}${i}
264
+ ${t.slice(a+1)}`;break}return r||(t=`${t}
265
265
  ${i}
266
- `),t}var Qe=l(require("fs")),et=l(require("path"));async function tt(e){return f.function("generateReleaserc",async()=>{let t=et.default.resolve(e.dirPath,".releaserc.json");try{let i=JSON.parse(await Qe.default.promises.readFile(t,"utf8")),r=(i==null?void 0:i.plugins)||[];for(let n=0;n<r.length;n++){let a=Array.isArray(r[n])?r[n][0]:r[n];a==="@semantic-release/commit-analyzer"?r[n]=["@semantic-release/commit-analyzer",{preset:"conventionalcommits"}]:a==="@semantic-release/github"&&(r[n]=["@semantic-release/github",{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}])}let o=JSON.stringify(i);await c.run(()=>y.generateFile(t,o))}catch{}})}var ne=l(require("fs")),oe=l(require("path")),it=l(require("deepmerge")),rt=l(require("lodash.clonedeep"));var ri={extends:["@willbooster"]};async function nt(e){return f.function("generateRenovateJson",async()=>{let t=(0,rt.default)(ri),i=oe.default.resolve(e.dirPath,".renovaterc.json");try{let o=await ne.default.promises.readFile(i,"utf-8"),n=JSON.parse(o);t=it.default.all([t,n,t],{arrayMerge:V})}catch{}await c.run(()=>ne.default.promises.rm(oe.default.resolve(e.dirPath,".dependabot"),{force:!0})),await c.run(()=>ne.default.promises.rm(oe.default.resolve(e.dirPath,"renovate.json"),{force:!0}));let r=JSON.stringify(t);await c.run(()=>y.generateFile(i,r))})}var ot=l(require("fs")),st=l(require("path")),at=l(require("deepmerge")),lt=l(require("lodash.clonedeep"));function G(e){let t=Object.entries(e).sort(([i],[r])=>i.localeCompare(r));for(let[i,r]of t)delete e[i],e[i]=r;return e}var ni={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,sourceMap:!0,importHelpers:!1,outDir:"dist"},include:["src/**/*","__tests__/**/*","scripts/**/*","packages/*/src/**/*","packages/*/__tests__/**/*","packages/*/scripts/**/*","./node_modules/@types","./@types"]},oi={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,sourceMap:!0,importHelpers:!1,outDir:"dist"},include:["src/**/*","__tests__/**/*","scripts/**/*","../../node_modules/@types","../../@types","./@types"]};async function ct(e,t){return f.function("generateTsconfig",async()=>{var n,a,s;if(t.depending.blitz)return;let i=(0,lt.default)(e.root?ni:oi);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&delete i.compilerOptions.jsx,e.root&&!e.containingSubPackageJsons&&(i.include=i.include.filter(p=>!p.startsWith("packages/*/")));let r=st.default.resolve(e.dirPath,"tsconfig.json");try{let p=await ot.default.promises.readFile(r,"utf-8"),m=JSON.parse(p);m.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete m.extends,(n=m.compilerOptions)==null||delete n.typeRoots,(a=i==null?void 0:i.compilerOptions)==null||delete a.target,(s=i==null?void 0:i.compilerOptions)==null||delete s.module,m.jsx&&delete i.jsx,e.depending.blitz&&delete i.include,i=at.default.all([i,m,i],{arrayMerge:V})}catch{}G(i.compilerOptions);let o=JSON.stringify(i);await c.run(()=>y.generateFile(r,o))})}var O=l(require("fs")),E=l(require("path")),ft=l(require("deepmerge")),ke=l(require("js-yaml")),ut=l(require("lodash.clonedeep"));var si={name:"Test",on:{pull_request:null,push:{branches:["main","wbfy","renovate/**"]}},jobs:{test:{uses:"WillBooster/reusable-workflows/.github/workflows/test.yml@main"}}},ai={name:"Release",on:{push:{branches:[]}},jobs:{release:{uses:"WillBooster/reusable-workflows/.github/workflows/release.yml@main"}}},li={name:"Willboosterify",on:{workflow_dispatch:null},jobs:{wbfy:{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy.yml@main"}}},ci={name:"Merge wbfy",on:{workflow_dispatch:null},jobs:{"wbfy-merge":{uses:"WillBooster/reusable-workflows/.github/workflows/wbfy-merge.yml@main"}}},pi={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"}}},mi={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 }}"}}}},fi={name:"Add close comment",on:{pull_request:{types:["opened"]}},jobs:{"close-comment":{uses:"WillBooster/reusable-workflows/.github/workflows/close-comment.yml@main"}}};async function gt(e){return f.function("generateWorkflow",async()=>{var o;let t=E.default.resolve(e.dirPath,".github","workflows");await O.default.promises.mkdir(t,{recursive:!0});let i=E.default.resolve(e.dirPath,".github","semantic.yml");await c.run(()=>O.default.promises.rm(i,{force:!0,recursive:!0}));let r=(await O.default.promises.readdir(t,{withFileTypes:!0})).filter(n=>n.isFile()&&n.name.endsWith(".yml")).map(n=>n.name);e.depending.semanticRelease&&r.push("release.yml"),(e.publicRepo||((o=e.repository)==null?void 0:o.startsWith("github:WillBoosterLab/")))&&r.push("notify-ready.yml"),r.push("test.yml","wbfy.yml","wbfy-merge.yml","semantic-pr.yml","close-comment.yml");for(let n of r){let a=E.default.basename(n,".yml");await c.run(()=>ui(e,t,a))}})}async function ui(e,t,i){var n,a;let r={};i==="test"?r=si:i==="release"?r=ai:i==="wbfy"?r=li:i==="wbfy-merge"?r=ci:i==="semantic-pr"?r=pi:i==="notify-ready"?r=mi:i==="close-comment"&&(r=fi),r=(0,ut.default)(r);let o=E.default.join(t,`${i}.yml`);try{let s=await O.default.promises.readFile(o,"utf-8"),p=ke.default.load(s);r=ft.default.all([r,p,r],{arrayMerge:X})}catch{}for(let s of Object.values(r.jobs)){if(!((a=(n=s.uses)==null?void 0:n.includes)!=null&&a.call(n,"/reusable-workflows/")))return;gi(e,s,i)}if(i==="release"?r.on.schedule?delete r.on.push:r.on.push.branches=e.release.branches:i==="wbfy"?pt(r,20,24):i==="wbfy-merge"&&pt(r,0,4),await mt(r,o),i==="release")await O.default.promises.rm(E.default.join(t,"semantic-release.yml"),{force:!0});else if(i==="sync"){if(await O.default.promises.rm(E.default.join(t,"sync-init.yml"),{force:!0}),!r.jobs.sync)return;r.jobs["sync-force"]=r.jobs.sync;let s=r.jobs.sync.with.sync_params_without_dest;if(!s)return;r.jobs.sync.with.sync_params_without_dest=`--force ${s}`,r.name="Force to Sync",r.on={workflow_dispatch:null},delete r.jobs.sync,await mt(r,E.default.join(t,"sync-force.yml"))}}function gi(e,t,i){var r,o,n;if(t.with||(t.with={}),t.secrets||(t.secrets={}),(e.release.github&&i==="test"||i==="release"||i==="wbfy"||i==="wbfy-merge")&&(e.publicRepo?t.secrets.GH_TOKEN="${{ secrets.PUBLIC_GH_BOT_PAT }}":t.secrets.GH_TOKEN="${{ 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),i==="sync"){let a=(r=t.with)==null?void 0:r.sync_params_without_dest;a&&(t.with.sync_params_without_dest=a.replace("sync ",""))}if((o=e.repository)!=null&&o.startsWith("github:WillBooster/")?t.uses=t.uses.replace("WillBoosterLab/","WillBooster/"):(n=e.repository)!=null&&n.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?G(t.with):delete t.with,Object.keys(t.secrets).length){let a=G(t.secrets);delete t.secrets,t.secrets=a}else delete t.secrets}function pt(e,t,i){var p,m;let[r,o]=(((m=(p=e.on.schedule)==null?void 0:p[0])==null?void 0:m.cron)??"").split(" ").map(Number);if(r!==0&&Number.isInteger(o)){let d=(o+9)%24;if(t<i?t<=d&&d<i:t<=d||d<i)return}let n=1+Math.floor(Math.random()*59),a=t+Math.floor(Math.random()*(i-t)),s=`${n} ${(a-9+24)%24} * * *`;e.on.schedule=[{cron:s}]}async function mt(e,t){let i=ke.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await O.default.promises.writeFile(t,i)}var J=l(require("fs")),I=l(require("path")),be=l(require("js-yaml"));async function ht(e){return f.function("generateYarnrcYml",async()=>{let t=A("yarn",["--version"],e.dirPath),i=di("@yarnpkg/cli",e.dirPath);yt(t)<=yt(i)&&t!==i&&v("yarn",["set","version",i],e.dirPath,1);let r=I.default.join(e.dirPath,".yarn","releases");await J.default.promises.mkdir(r,{recursive:!0});for(let m of await J.default.promises.readdir(r))m.startsWith("yarn-")&&!m.startsWith(`yarn-${i}.`)&&(await c.run(()=>J.default.promises.rm(I.default.join(r,m))),console.log("Removed",I.default.join(r,m)));let o=I.default.resolve(e.dirPath,".yarnrc");await c.run(()=>J.default.promises.rm(o,{force:!0}));let n=I.default.resolve(e.dirPath,".yarnrc.yml"),a=be.default.load(await J.default.promises.readFile(n,"utf8"));a.defaultSemverRangePrefix="",e.requiringNodeModules&&(a.nodeLinker="node-modules",a.nmMode="hardlinks-global",a.enableGlobalCache=!0),await J.default.promises.writeFile(n,be.default.dump(a,{lineWidth:-1}));let s=(a.plugins||[]).map(m=>m.spec),p=e.containingTypeScript||e.containingTypeScriptInPackages;dt(e,s,p,"@yarnpkg/plugin-typescript"),p&&!e.requiringNodeModules&&v("yarn",["dlx","@yarnpkg/sdks","vscode"],e.dirPath),dt(e,s,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),v("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function di(e,t){let i=A("npm",["show",e,"versions","--json"],t),r=JSON.parse(i);return r[r.length-1]}function dt(e,t,i,r){i!==t.includes(r)&&v("yarn",["plugin",i?"import":"remove",r],e.dirPath)}function yt(e){let[t]=e.split(".");return Number(t)}var wt=require("@octokit/core"),Pt=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,se=!!Pt,C=new wt.Octokit({auth:Pt}),xe=class{getOrgAndName(t){var a;let i=t.split(":").at(-1),r=i==null?void 0:i.split("/"),o=(r==null?void 0:r.at(-2))??"",n=((a=r==null?void 0:r.at(-1))==null?void 0:a.replace(/.git$/,""))??"";return[o,n]}},L=new xe;async function vt(e){return f.function("setupLabels",async()=>{if(!se)return;let[t,i]=L.getOrgAndName(e.repository??"");if(!(!t||!i)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await u(t,i,"d1: x-easy :hedgehog:","EDE9FE"),await u(t,i,"d2: easy :rabbit2:","DDD6FE"),await u(t,i,"d3: medium :ox:","C4B5FD"),await u(t,i,"d4: hard :squid:","A78BFA"),await u(t,i,"d5: x-hard :whale2:","8B5CF6"),await u(t,i,"p1: critical :fire::fire::fire:","EF4444"),await u(t,i,"p2: urgent :fire::fire:","F87171"),await u(t,i,"p3: important :fire:","FCA5A5"),await u(t,i,"p4: nice to have :droplet:","FECACA"),await u(t,i,"r: blitz","5300bc"),await u(t,i,"r: firebase","ffca28"),await u(t,i,"r: prisma","0c344b"),await u(t,i,"r: react","61dafb"),await u(t,i,"r: svelte","ff3e00"),await u(t,i,"r: semantic-release","494949"),await u(t,i,"ready :rocket:","22C55E"),await u(t,i,"review requested :mag:","FBCA04"),await u(t,i,"released :bookmark:","6366F1"),await u(t,i,"s: 0.5h :clock1230:","F3F4F6"),await u(t,i,"s: 1h :clock1:","E5E7EB"),await u(t,i,"s: 2h :clock2:","D1D5DB"),await u(t,i,"s: 3h :clock3:","9CA3AF"),await u(t,i,"s: 5h :clock5:","6B7280"),await u(t,i,"s: 8h :clock8:","4B5563"),await u(t,i,"s: 13h :clock1:","374151"),await u(t,i,"t: build :hammer:","BFDBFE"),await u(t,i,"t: chore :broom:","BFDBFE"),await u(t,i,"t: ci :construction_worker:","BFDBFE"),await u(t,i,"t: docs :memo:","BFDBFE"),await u(t,i,"t: feat :sparkles:","BFDBFE"),await u(t,i,"t: fix :bug:","BFDBFE"),await u(t,i,"t: perf :zap:","BFDBFE"),await u(t,i,"t: refactor :recycle:","BFDBFE"),await u(t,i,"t: style :lipstick:","BFDBFE"),await u(t,i,"t: test :test_tube:","BFDBFE"),await x(t,i,"bug"),await x(t,i,"documentation"),await x(t,i,"duplicate"),await x(t,i,"enhancement"),await x(t,i,"good first issue"),await x(t,i,"help wanted"),await x(t,i,"invalid"),await x(t,i,"question"),await x(t,i,"wontfix"),await x(t,i,"ready"),await x(t,i,"review requested"),await x(t,i,"released"),await x(t,i,"semantic-release")}catch(r){console.warn("Skip setupLabels due to:",(r==null?void 0:r.stack)??r)}})}async function u(e,t,i,r){try{await C.request("POST /repos/{owner}/{repo}/labels",{owner:e,repo:t,name:i,color:r})}catch{await C.request("PATCH /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i,color:r})}}async function x(e,t,i){try{await C.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i})}catch{}}var kt=l(require("dotenv")),D=l(require("libsodium-wrappers"));var yi=["READY_DISCORD_WEBHOOK_URL"];async function bt(e){return f.function("setupSecrets",async()=>{if(!se)return;let[t,i]=L.getOrgAndName(e.repository??"");if(!t||!i||t!=="WillBoosterLab")return;let r=kt.default.config().parsed||{};if(Object.keys(r).length!==0)try{for(let s of yi)try{await C.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s})}catch{}let o=await C.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:i}),{key:n,key_id:a}=o.data;await D.default.ready;for(let[s,p]of Object.entries(r)){if(e.publicRepo&&s==="GH_BOT_PAT"||!e.publicRepo&&s==="PUBLIC_GH_BOT_PAT")continue;let m=D.default.from_base64(n,D.default.base64_variants.ORIGINAL),d=D.default.from_string(p),h=D.default.crypto_box_seal(d,m),g=D.default.to_base64(h,D.default.base64_variants.ORIGINAL);await C.request("PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s,encrypted_value:g,key_id:a})}}catch(o){console.warn("Skip setupSecrets due to:",(o==null?void 0:o.stack)??o)}})}async function xt(e){}var S=l(require("fs")),M=l(require("fs/promises")),P=l(require("path")),j=l(require("glob")),_t=l(require("js-yaml")),Ft=require("simple-git");async function Se(e){var i;let t=P.default.resolve(e,"package.json");try{let r=S.default.existsSync(t),o={},n={},a={};if(r){let F=S.default.readFileSync(t,"utf-8");a=JSON.parse(F),o=a.dependencies??{},n=a.devDependencies??{}}let s=!0;try{let F=P.default.resolve(e,".yarnrc.yml"),_=_t.default.load(await M.default.readFile(F,"utf8"));s=!_.nodeLinker||_.nodeLinker==="node-modules"}catch{}let p=[],m=[];try{let F=P.default.resolve(e,".releaserc.json"),_=JSON.parse(await M.default.readFile(F,"utf8"));p=(_==null?void 0:_.branches)||[],m=((i=_==null?void 0:_.plugins)==null?void 0:i.flat())||[]}catch{}let d=P.default.basename(P.default.resolve(e,".."))!=="packages"||!S.default.existsSync(P.default.resolve(e,"..","..","package.json")),h;d&&(h=await wi(e,a));let g;try{g=await M.default.readFile(P.default.resolve(e,".tool-versions"),"utf-8")}catch{try{g="nodejs "+(await M.default.readFile(P.default.resolve(e,".node-version"),"utf-8")).trim()}catch{}}let w={dirPath:e,root:d,publicRepo:(h==null?void 0:h.private)===!1,repository:h!=null&&h.full_name?`github:${h==null?void 0:h.full_name}`:void 0,willBoosterConfigs:t.includes(`${P.default.sep}willbooster-configs`),containingSubPackageJsons:j.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:j.default.sync("@(app|src|__tests__|scripts)/**/*.js?(x)",{cwd:e}).length>0,containingTypeScript:j.default.sync("@(app|src|__tests__|scripts)/**/*.ts?(x)",{cwd:e}).length>0,containingJsxOrTsx:j.default.sync("@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,containingJavaScriptInPackages:j.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.js?(x)",{cwd:e}).length>0,containingTypeScriptInPackages:j.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.ts?(x)",{cwd:e}).length>0,containingJsxOrTsxInPackages:j.default.sync("packages/**/@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,depending:{blitz:!!(o.blitz||n.blitz),firebase:!!n["firebase-tools"],prisma:!!n.prisma,reactNative:!!o["react-native"],semanticRelease:!!(n["semantic-release"]||p.length||m.length),storybook:!!n["@storybook/react"]},release:{branches:p,github:m.includes("@semantic-release/github"),npm:m.includes("@semantic-release/npm")},requiringNodeModules:s,versionsText:g};if(w.eslintBase=hi(w),w.containingGemfile||w.containingGoMod||w.containingPackageJson||w.containingPoetryLock||w.containingPomXml||w.containingPubspecYaml||w.containingTemplateYaml)return w}catch{}return null}function hi(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 wi(e,t){var s,p,m;let o=(await(0,Ft.simpleGit)(e).getRemotes(!0)).find(d=>d.name==="origin"),n=((s=o==null?void 0:o.refs)==null?void 0:s.fetch)??((p=o==null?void 0:o.refs)==null?void 0:p.push);if(typeof n=="string"){let d=await St(n);if(d)return d}let a=((m=t.repository)==null?void 0:m.url)??t.repository;if(typeof a=="string"){let d=await St(a);if(d&&d.message!=="Not Found")return d}}async function St(e){let[t,i]=L.getOrgAndName(e);if(!t||!i)return;let r={full_name:`${t}/${i}`};try{let o=await C.request("GET /repos/{owner}/{repo}",{owner:t,repo:i});Object.assign(r,o.data)}catch{}return r}async function Pi(){let e=await(0,Rt.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;T.isVerbose=e.verbose;for(let t of e._){if(typeof t=="number")continue;let i=await Se(t);if(i===null){console.error(`there is no valid package.json in ${t}`);continue}let r=i.containingSubPackageJsons?$t.default.sync("packages/*",{cwd:t}).map(s=>Ct.default.resolve(t,s)):[],o=(await Promise.all(r.map(s=>Se(s)))).filter(s=>!!s),n=[i,...o];if(T.isVerbose)for(let s of n)console.info(s);await $e(i),await ht(i),await Promise.all([Ee(i),Ie(i),ze(i),Ge(i),ye(i),Ze(i),nt(i),tt(i),gt(i),vt(i),bt(i),xt(i)]),await c.promiseAll();let a=[];for(let s of n)await Ue(s,i),await c.promiseAll(),!(!s.root&&!s.containingPackageJson)&&(await Ve(s),await He(s,i,e.skipDeps),a.push(ye(s)),(s.containingTypeScript||s.containingTypeScriptInPackages)&&a.push(ct(s,i)),(s.containingJavaScript||s.containingJavaScriptInPackages||s.containingTypeScript||s.containingTypeScriptInPackages)&&(i.willBoosterConfigs||a.push(Je(s,i)),a.push(Oe(s))));await Promise.all(a),await c.promiseAll(),v("yarn",["cleanup"],t),v("yarn",["install"],t)}}Pi().then();
266
+ `),t}var Qe=c(require("node:fs")),et=c(require("node:path"));async function tt(e){return u.function("generateReleaserc",async()=>{let t=et.default.resolve(e.dirPath,".releaserc.json");try{let i=JSON.parse(await Qe.default.promises.readFile(t,"utf8")),n=(i==null?void 0:i.plugins)||[];for(let r=0;r<n.length;r++){let a=Array.isArray(n[r])?n[r][0]:n[r];a==="@semantic-release/commit-analyzer"?n[r]=["@semantic-release/commit-analyzer",{preset:"conventionalcommits"}]:a==="@semantic-release/github"&&(n[r]=["@semantic-release/github",{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}])}let o=JSON.stringify(i);await p.run(()=>y.generateFile(t,o))}catch{}})}var ne=c(require("node:fs")),oe=c(require("node:path")),it=c(require("deepmerge")),rt=c(require("lodash.clonedeep"));var ni={extends:["@willbooster"]};async function nt(e){return u.function("generateRenovateJson",async()=>{let t=(0,rt.default)(ni),i=oe.default.resolve(e.dirPath,".renovaterc.json");try{let o=await ne.default.promises.readFile(i,"utf8"),r=JSON.parse(o);t=it.default.all([t,r,t],{arrayMerge:V})}catch{}await p.run(()=>ne.default.promises.rm(oe.default.resolve(e.dirPath,".dependabot"),{force:!0})),await p.run(()=>ne.default.promises.rm(oe.default.resolve(e.dirPath,"renovate.json"),{force:!0}));let n=JSON.stringify(t);await p.run(()=>y.generateFile(i,n))})}var ot=c(require("node:fs")),st=c(require("node:path")),at=c(require("deepmerge")),lt=c(require("lodash.clonedeep"));function G(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 oi={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,sourceMap:!0,importHelpers:!1,outDir:"dist"},include:["src/**/*","__tests__/**/*","scripts/**/*","packages/*/src/**/*","packages/*/__tests__/**/*","packages/*/scripts/**/*","./node_modules/@types","./@types"]},si={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"node",jsx:"react-jsx",alwaysStrict:!0,strict:!0,skipLibCheck:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,resolveJsonModule:!0,sourceMap:!0,importHelpers:!1,outDir:"dist"},include:["src/**/*","__tests__/**/*","scripts/**/*","../../node_modules/@types","../../@types","./@types"]};async function ct(e,t){return u.function("generateTsconfig",async()=>{var r,a,s;if(t.depending.blitz)return;let i=(0,lt.default)(e.root?oi:si);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&delete i.compilerOptions.jsx,e.root&&!e.containingSubPackageJsons&&(i.include=i.include.filter(l=>!l.startsWith("packages/*/")));let n=st.default.resolve(e.dirPath,"tsconfig.json");try{let l=await ot.default.promises.readFile(n,"utf8"),m=JSON.parse(l);m.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete m.extends,(r=m.compilerOptions)==null||delete r.typeRoots,(a=i==null?void 0:i.compilerOptions)==null||delete a.target,(s=i==null?void 0:i.compilerOptions)==null||delete s.module,m.jsx&&delete i.jsx,e.depending.blitz&&delete i.include,i=at.default.all([i,m,i],{arrayMerge:V})}catch{}G(i.compilerOptions);let o=JSON.stringify(i);await p.run(()=>y.generateFile(n,o))})}var E=c(require("node:fs")),$=c(require("node:path")),ft=c(require("deepmerge")),ke=c(require("js-yaml")),ut=c(require("lodash.clonedeep"));var ai={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"}}}};async function gt(e){return u.function("generateWorkflow",async()=>{var r;let t=$.default.resolve(e.dirPath,".github","workflows");await E.default.promises.mkdir(t,{recursive:!0});let i=$.default.resolve(e.dirPath,".github","semantic.yml");await p.run(()=>E.default.promises.rm(i,{force:!0,recursive:!0}));let o=(await E.default.promises.readdir(t,{withFileTypes:!0})).filter(a=>a.isFile()&&a.name.endsWith(".yml")).map(a=>a.name);e.depending.semanticRelease&&o.push("release.yml"),(e.publicRepo||((r=e.repository)==null?void 0:r.startsWith("github:WillBoosterLab/")))&&o.push("notify-ready.yml"),o.push("test.yml","wbfy.yml","wbfy-merge.yml","semantic-pr.yml","close-comment.yml");for(let a of o){let s=$.default.basename(a,".yml");await p.run(()=>li(e,t,s))}})}async function li(e,t,i){var r,a;let n=(0,ut.default)(ai[i]||{}),o=$.default.join(t,`${i}.yml`);try{let s=await E.default.promises.readFile(o,"utf8"),l=ke.default.load(s);n=ft.default.all([n,l,n],{arrayMerge:X})}catch{}for(let s of Object.values(n.jobs)){if(!((a=(r=s.uses)==null?void 0:r.includes)!=null&&a.call(r,"/reusable-workflows/")))return;ci(e,s,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 E.default.promises.rm($.default.join(t,"release.yml"),{force:!0});return}break}case"wbfy":{pt(n,20,24);break}case"wbfy-merge":{pt(n,0,4);break}}if(await mt(n,o),i==="release")await E.default.promises.rm($.default.join(t,"semantic-release.yml"),{force:!0});else if(i==="sync"){if(await E.default.promises.rm($.default.join(t,"sync-init.yml"),{force:!0}),!n.jobs.sync)return;n.jobs["sync-force"]=n.jobs.sync;let s=n.jobs.sync.with.sync_params_without_dest;if(!s)return;n.jobs.sync.with.sync_params_without_dest=`--force ${s}`,n.name="Force to Sync",n.on={workflow_dispatch:null},delete n.jobs.sync,await mt(n,$.default.join(t,"sync-force.yml"))}}function ci(e,t,i){var n,o,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 a=(n=t.with)==null?void 0:n.sync_params_without_dest;a&&(t.with.sync_params_without_dest=a.replace("sync ",""))}if((o=e.repository)!=null&&o.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?G(t.with):delete t.with,Object.keys(t.secrets).length>0){let a=G(t.secrets);delete t.secrets,t.secrets=a}else delete t.secrets}function pt(e,t,i){var l,m;let[n,o]=(((m=(l=e.on.schedule)==null?void 0:l[0])==null?void 0:m.cron)??"").split(" ").map(Number);if(n!==0&&Number.isInteger(o)){let d=(o+9)%24;if(t<i?t<=d&&d<i:t<=d||d<i)return}let r=1+Math.floor(Math.random()*59),a=t+Math.floor(Math.random()*(i-t)),s=`${r} ${(a-9+24)%24} * * *`;e.on.schedule=[{cron:s}]}async function mt(e,t){let i=ke.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await E.default.promises.writeFile(t,i)}var J=c(require("node:fs")),W=c(require("node:path")),be=c(require("js-yaml"));async function ht(e){return u.function("generateYarnrcYml",async()=>{let t=A("yarn",["--version"],e.dirPath),i=pi("@yarnpkg/cli",e.dirPath);yt(t)<=yt(i)&&t!==i&&P("yarn",["set","version",i],e.dirPath,1);let n=W.default.join(e.dirPath,".yarn","releases");await J.default.promises.mkdir(n,{recursive:!0});for(let m of await J.default.promises.readdir(n))m.startsWith("yarn-")&&!m.startsWith(`yarn-${i}.`)&&(await p.run(()=>J.default.promises.rm(W.default.join(n,m))),console.log("Removed",W.default.join(n,m)));let o=W.default.resolve(e.dirPath,".yarnrc");await p.run(()=>J.default.promises.rm(o,{force:!0}));let r=W.default.resolve(e.dirPath,".yarnrc.yml"),a=be.default.load(await J.default.promises.readFile(r,"utf8"));a.defaultSemverRangePrefix="",e.requiringNodeModules&&(a.nodeLinker="node-modules",a.nmMode="hardlinks-global",a.enableGlobalCache=!0),await J.default.promises.writeFile(r,be.default.dump(a,{lineWidth:-1}));let s=(a.plugins||[]).map(m=>m.spec),l=e.containingTypeScript||e.containingTypeScriptInPackages;dt(e,s,l,"@yarnpkg/plugin-typescript"),l&&!e.requiringNodeModules&&P("yarn",["dlx","@yarnpkg/sdks","vscode"],e.dirPath),dt(e,s,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),P("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function pi(e,t){let i=A("npm",["show",e,"versions","--json"],t),n=JSON.parse(i);return n[n.length-1]}function dt(e,t,i,n){i!==t.includes(n)&&P("yarn",["plugin",i?"import":"remove",n],e.dirPath)}function yt(e){let[t]=e.split(".");return Number(t)}var wt=require("@octokit/core"),Pt=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,se=!!Pt,_=new wt.Octokit({auth:Pt}),xe=class{getOrgAndName(t){var a;let i=t.split(":").at(-1),n=i==null?void 0:i.split("/"),o=(n==null?void 0:n.at(-2))??"",r=((a=n==null?void 0:n.at(-1))==null?void 0:a.replace(/.git$/,""))??"";return[o,r]}},L=new xe;async function vt(e){return u.function("setupLabels",async()=>{if(!se)return;let[t,i]=L.getOrgAndName(e.repository??"");if(!(!t||!i)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await g(t,i,"d1: x-easy :hedgehog:","EDE9FE"),await g(t,i,"d2: easy :rabbit2:","DDD6FE"),await g(t,i,"d3: medium :ox:","C4B5FD"),await g(t,i,"d4: hard :squid:","A78BFA"),await g(t,i,"d5: x-hard :whale2:","8B5CF6"),await g(t,i,"p1: critical :fire::fire::fire:","EF4444"),await g(t,i,"p2: urgent :fire::fire:","F87171"),await g(t,i,"p3: important :fire:","FCA5A5"),await g(t,i,"p4: nice to have :droplet:","FECACA"),await g(t,i,"r: blitz","5300bc"),await g(t,i,"r: firebase","ffca28"),await g(t,i,"r: prisma","0c344b"),await g(t,i,"r: react","61dafb"),await g(t,i,"r: svelte","ff3e00"),await g(t,i,"r: semantic-release","494949"),await g(t,i,"ready :rocket:","22C55E"),await g(t,i,"review requested :mag:","FBCA04"),await g(t,i,"released :bookmark:","6366F1"),await g(t,i,"s: 0.5h :clock1230:","F3F4F6"),await g(t,i,"s: 1h :clock1:","E5E7EB"),await g(t,i,"s: 2h :clock2:","D1D5DB"),await g(t,i,"s: 3h :clock3:","9CA3AF"),await g(t,i,"s: 5h :clock5:","6B7280"),await g(t,i,"s: 8h :clock8:","4B5563"),await g(t,i,"s: 13h :clock1:","374151"),await g(t,i,"t: build :hammer:","BFDBFE"),await g(t,i,"t: chore :broom:","BFDBFE"),await g(t,i,"t: ci :construction_worker:","BFDBFE"),await g(t,i,"t: docs :memo:","BFDBFE"),await g(t,i,"t: feat :sparkles:","BFDBFE"),await g(t,i,"t: fix :bug:","BFDBFE"),await g(t,i,"t: perf :zap:","BFDBFE"),await g(t,i,"t: refactor :recycle:","BFDBFE"),await g(t,i,"t: style :lipstick:","BFDBFE"),await g(t,i,"t: test :test_tube:","BFDBFE"),await x(t,i,"bug"),await x(t,i,"documentation"),await x(t,i,"duplicate"),await x(t,i,"enhancement"),await x(t,i,"good first issue"),await x(t,i,"help wanted"),await x(t,i,"invalid"),await x(t,i,"question"),await x(t,i,"wontfix"),await x(t,i,"ready"),await x(t,i,"review requested"),await x(t,i,"released"),await x(t,i,"semantic-release")}catch(n){console.warn("Skip setupLabels due to:",(n==null?void 0:n.stack)??n)}})}async function g(e,t,i,n){try{await _.request("POST /repos/{owner}/{repo}/labels",{owner:e,repo:t,name:i,color:n})}catch{await _.request("PATCH /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i,color:n})}}async function x(e,t,i){try{await _.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i})}catch{}}var kt=c(require("dotenv")),j=c(require("libsodium-wrappers"));var mi=["READY_DISCORD_WEBHOOK_URL"];async function bt(e){return u.function("setupSecrets",async()=>{if(!se)return;let[t,i]=L.getOrgAndName(e.repository??"");if(!t||!i||t!=="WillBoosterLab")return;let n=kt.default.config().parsed||{};if(Object.keys(n).length!==0)try{for(let s of mi)try{await _.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s})}catch{}let o=await _.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:i}),{key:r,key_id:a}=o.data;await j.default.ready;for(let[s,l]of Object.entries(n)){if(e.publicRepo&&s==="GH_BOT_PAT"||!e.publicRepo&&s==="PUBLIC_GH_BOT_PAT")continue;let m=j.default.from_base64(r,j.default.base64_variants.ORIGINAL),d=j.default.from_string(l),f=j.default.crypto_box_seal(d,m),w=j.default.to_base64(f,j.default.base64_variants.ORIGINAL);await _.request("PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s,encrypted_value:w,key_id:a})}}catch(o){console.warn("Skip setupSecrets due to:",(o==null?void 0:o.stack)??o)}})}async function xt(e){}var S=c(require("node:fs")),M=c(require("node:fs/promises")),h=c(require("node:path")),D=c(require("glob")),Ft=c(require("js-yaml")),_t=require("simple-git");async function Se(e){var i;let t=h.default.resolve(e,"package.json");try{let n=S.default.existsSync(t),o={},r={},a={};if(n){let C=S.default.readFileSync(t,"utf8");a=JSON.parse(C),o=a.dependencies??{},r=a.devDependencies??{}}let s=!0;try{let C=h.default.resolve(e,".yarnrc.yml"),F=Ft.default.load(await M.default.readFile(C,"utf8"));s=!F.nodeLinker||F.nodeLinker==="node-modules"}catch{}let l=[],m=[];try{let C=h.default.resolve(e,".releaserc.json"),F=JSON.parse(await M.default.readFile(C,"utf8"));l=(F==null?void 0:F.branches)||[],m=((i=F==null?void 0:F.plugins)==null?void 0:i.flat())||[]}catch{}let d=h.default.basename(h.default.resolve(e,".."))!=="packages"||!S.default.existsSync(h.default.resolve(e,"..","..","package.json")),f;d&&(f=await ui(e,a));let w;try{w=await M.default.readFile(h.default.resolve(e,".tool-versions"),"utf8")}catch{try{let C=await M.default.readFile(h.default.resolve(e,".node-version"),"utf8");w="nodejs "+C.trim()}catch{}}let b={dirPath:e,root:d,publicRepo:(f==null?void 0:f.private)===!1,repository:f!=null&&f.full_name?`github:${f==null?void 0:f.full_name}`:void 0,willBoosterConfigs:t.includes(`${h.default.sep}willbooster-configs`),containingSubPackageJsons:D.default.sync("packages/**/package.json",{cwd:e}).length>0,containingDockerfile:S.default.existsSync(h.default.resolve(e,"Dockerfile"))||S.default.existsSync(h.default.resolve(e,"docker-compose.yml")),containingGemfile:S.default.existsSync(h.default.resolve(e,"Gemfile")),containingGoMod:S.default.existsSync(h.default.resolve(e,"go.mod")),containingPackageJson:S.default.existsSync(h.default.resolve(e,"package.json")),containingPoetryLock:S.default.existsSync(h.default.resolve(e,"poetry.lock")),containingPomXml:S.default.existsSync(h.default.resolve(e,"pom.xml")),containingPubspecYaml:S.default.existsSync(h.default.resolve(e,"pubspec.yaml")),containingTemplateYaml:S.default.existsSync(h.default.resolve(e,"template.yaml")),containingJavaScript:D.default.sync("@(app|src|__tests__|scripts)/**/*.js?(x)",{cwd:e}).length>0,containingTypeScript:D.default.sync("@(app|src|__tests__|scripts)/**/*.ts?(x)",{cwd:e}).length>0,containingJsxOrTsx:D.default.sync("@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,containingJavaScriptInPackages:D.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.js?(x)",{cwd:e}).length>0,containingTypeScriptInPackages:D.default.sync("packages/**/@(app|src|__tests__|scripts)/**/*.ts?(x)",{cwd:e}).length>0,containingJsxOrTsxInPackages:D.default.sync("packages/**/@(app|src|__tests__)/**/*.{t,j}sx",{cwd:e}).length>0,depending:{blitz:!!(o.blitz||r.blitz),firebase:!!r["firebase-tools"],prisma:!!r.prisma,reactNative:!!o["react-native"],semanticRelease:!!(r["semantic-release"]||l.length>0||m.length>0),storybook:!!r["@storybook/react"]},release:{branches:l,github:m.includes("@semantic-release/github"),npm:m.includes("@semantic-release/npm")},requiringNodeModules:s,versionsText:w};if(b.eslintBase=fi(b),b.containingGemfile||b.containingGoMod||b.containingPackageJson||b.containingPoetryLock||b.containingPomXml||b.containingPubspecYaml||b.containingTemplateYaml)return b}catch{}}function fi(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 ui(e,t){var s,l,m;let o=(await(0,_t.simpleGit)(e).getRemotes(!0)).find(d=>d.name==="origin"),r=((s=o==null?void 0:o.refs)==null?void 0:s.fetch)??((l=o==null?void 0:o.refs)==null?void 0:l.push);if(typeof r=="string"){let d=await St(r);if(d)return d}let a=((m=t.repository)==null?void 0:m.url)??t.repository;if(typeof a=="string"){let d=await St(a);if(d&&d.message!=="Not Found")return d}}async function St(e){let[t,i]=L.getOrgAndName(e);if(!t||!i)return;let n={full_name:`${t}/${i}`};try{let o=await _.request("GET /repos/{owner}/{repo}",{owner:t,repo:i});Object.assign(n,o.data)}catch{}return n}async function gi(){let e=await(0,$t.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;T.isVerbose=e.verbose;for(let t of e._){if(typeof t=="number")continue;let i=await Se(t);if(!i){console.error(`there is no valid package.json in ${t}`);continue}let n=i.containingSubPackageJsons?Rt.default.sync("packages/*",{cwd:t}).map(l=>Ct.default.resolve(t,l)):[],r=(await Promise.all(n.map(l=>Se(l)))).filter(l=>!!l),a=[i,...r];if(T.isVerbose)for(let l of a)console.info(l);await Re(i),await ht(i),await Promise.all([Te(i),We(i),ze(i),Ge(i),ye(i),Ze(i),nt(i),tt(i),gt(i),vt(i),bt(i),xt(i)]),await p.promiseAll();let s=[];for(let l of a)await Ue(l,i),await p.promiseAll(),!(!l.root&&!l.containingPackageJson)&&(await Ve(l),await He(l,i,e.skipDeps),s.push(ye(l)),(l.containingTypeScript||l.containingTypeScriptInPackages)&&s.push(ct(l,i)),(l.containingJavaScript||l.containingJavaScriptInPackages||l.containingTypeScript||l.containingTypeScriptInPackages)&&(i.willBoosterConfigs||s.push(Je(l,i)),s.push(Oe(l))));await Promise.all(s),await p.promiseAll(),P("yarn",["cleanup"],t),P("yarn",["install"],t)}}gi().then();
267
267
  //# sourceMappingURL=index.min.cjs.map