wbfy 1.72.1 → 1.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.cjs +43 -40
- package/dist/index.min.cjs.map +3 -3
- package/package.json +1 -1
package/dist/index.min.cjs
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
"use strict";var
|
2
|
-
${s}`),o.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
|
3
|
-
`)){let a=n.trim()
|
1
|
+
"use strict";var Ut=Object.create;var Ee=Object.defineProperty;var Lt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Gt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Mt=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of zt(t))!Ht.call(e,a)&&a!==i&&Ee(e,a,{get:()=>t[a],enumerable:!(n=Lt(t,a))||n.enumerable});return e};var c=(e,t,i)=>(i=e!=null?Ut(Gt(e)):{},Mt(t||!e||!e.__esModule?Ee(i,"default",{value:e,enumerable:!0}):i,e));var Jt=c(require("node:path")),It=c(require("glob")),Wt=c(require("yargs"));var A=c(require("node:fs")),H=c(require("node:path"));var le=class{isVerbose;constructor(){this.isVerbose=!1}},O=new le;var ce=class{async function(t,i){O.isVerbose&&console.info(`--------- ${t} start ---------`),await i(),O.isVerbose&&console.info(`---------- ${t} end ----------`)}},d=new ce;var Oe=require("minimal-promise-pool"),p=new Oe.PromisePool;var pe=c(require("node:child_process"));function k(e,t,i,n=0){do{let[a,r,o]=Te(e,t,i);if(console.log(`$ ${a} ${r.join(" ")} at ${o.cwd}`),pe.default.spawnSync(a,r,o).status===0)break}while(--n>=0)}function G(e,t,i){let[n,a,r]=Te(e,t,i);r.stdio="pipe";let o=pe.default.spawnSync(n,a,r),s=o.stderr.toString().trim();return s&&console.error(`${n} [${a.map(l=>`"${l}"`)}] caused the following error:
|
2
|
+
${s}`),o.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 d.function("generateVersionConfigs",async()=>{await Vt(e)})}var Yt="1.3.1",Kt="3.9.16",qt="adoptopenjdk-17.0.5+8";async function Vt(e){if(!e.versionsText)return;let t=[];for(let n of e.versionsText.trim().split(`
|
3
|
+
`)){let a=n.trim(),[r,o]=a.split(/\s+/);!r||!o||(r==="nodejs"?await p.run(()=>A.default.promises.writeFile(H.default.resolve(e.dirPath,".node-version"),o)):r==="python"?await p.run(()=>A.default.promises.writeFile(H.default.resolve(e.dirPath,".python-version"),o)):t.push(a))}if(e.containingPoetryLock&&(V(`poetry ${Yt}`,0,t),A.default.existsSync(H.default.resolve(e.dirPath,".python-version"))||V(`python ${Kt}`,0,t)),e.depending.firebase&&V(`java ${qt}`,0,t),e.containingPackageJson){let n=G("npm",["show","yarn","version"],e.dirPath);V(`yarn ${n}`,t.length,t)}let i=H.default.resolve(e.dirPath,".tool-versions");await(t.length>0?p.run(()=>A.default.promises.writeFile(i,t.join(`
|
4
4
|
`)+`
|
5
|
-
`)):p.run(()=>
|
5
|
+
`)):p.run(()=>A.default.promises.rm(i,{force:!0}))),await p.promiseAll(),k("asdf",["plugin","update","--all"],e.dirPath),k("asdf",["install"],e.dirPath)}function V(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 De=c(require("node:path"));var x={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 me=c(require("node:fs/promises")),h={async readFileIgnoringError(e){try{return await me.default.readFile(e,"utf8")}catch{}},async generateFile(e,t){await me.default.writeFile(e,t),console.log(`Generated ${e}`)}};var Xt=`root = true
|
6
6
|
|
7
7
|
[*]
|
8
8
|
charset = utf-8
|
@@ -10,37 +10,37 @@ end_of_line = lf
|
|
10
10
|
insert_final_newline = true
|
11
11
|
trim_trailing_whitespace = true
|
12
12
|
|
13
|
-
${
|
13
|
+
${X(x.codeWith2IndentSize)}
|
14
14
|
indent_size = 2
|
15
15
|
indent_style = space
|
16
16
|
|
17
|
-
${
|
17
|
+
${X(x.codeWith4IndentSize)}
|
18
18
|
indent_size = 4
|
19
19
|
indent_style = space
|
20
20
|
|
21
|
-
${
|
21
|
+
${X(x.codeWith8IndentSize)}
|
22
22
|
indent_size = 8
|
23
23
|
indent_style = space
|
24
24
|
|
25
|
-
${
|
25
|
+
${X(x.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 Be(e){return
|
31
|
+
`;async function Be(e){return d.function("generateEditorconfig",async()=>{let t=De.default.resolve(e.dirPath,".editorconfig");await p.run(()=>h.generateFile(t,Xt))})}function X(e){return e.length>1?`[*.{${e.join(",")}}]`:`[*.${e[0]}]`}var ue=c(require("node:path"));var de=c(require("node:fs")),M="# Project-specific settings",Ne=/# Project-specific settings[^\n]*\n/gm,Ae="# Generated by wbfy",Zt="# Generated by ",Je=`${M} (head)
|
32
32
|
|
33
33
|
|
34
|
-
${
|
35
|
-
`,
|
36
|
-
${
|
37
|
-
`,
|
34
|
+
${Ae}
|
35
|
+
`,Ie=`
|
36
|
+
${M} (tail)
|
37
|
+
`,_={separator:Ae,separatorPrefix:Zt,defaultHeadUserContent:Je,defaultTailUserContent:Ie,async readGitignoreWithoutSeparators(e){try{let t=await de.default.promises.readFile(e,"utf8"),i=We(t);return i>0&&(t=t.slice(0,i-1)),t.replace(Ne,"").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(Ne,`${
|
42
|
-
`):Je},getTailUserContent(e){let t=
|
43
|
-
!.yarn/cache`)}catch{return!1}}};function
|
41
|
+
`,t)+1).replace(Ne,`${M} (head)
|
42
|
+
`):Je},getTailUserContent(e){let t=We(e);return t>0?e.slice(t-1):Ie},async isBerryZeroInstallEnabled(e){try{return(await de.default.promises.readFile(e,"utf8")).includes(`
|
43
|
+
!.yarn/cache`)}catch{return!1}}};function We(e){let t=e.indexOf(M),i=e.lastIndexOf(M);return i>t?i:-1}var Ue=`
|
44
44
|
3rd-party/
|
45
45
|
@types/
|
46
46
|
__generated__/
|
@@ -53,21 +53,19 @@ test-fixtures/
|
|
53
53
|
*.min.*js
|
54
54
|
.yarn/
|
55
55
|
.pnp.js
|
56
|
-
`;async function
|
56
|
+
`;async function Le(e){return d.function("generateEslintignore",async()=>{let t=ue.default.resolve(e.dirPath,".eslintignore"),i=await h.readFileIgnoringError(t)??"",n=_.getHeadUserContent(i)+Ue,a=_.getTailUserContent(i),r=ue.default.resolve(e.dirPath,".gitignore"),o=await _.readGitignoreWithoutSeparators(r)||"",s=n+Ue+o+a;await p.run(()=>h.generateFile(t,s))})}var He=c(require("node:fs")),Me=c(require("node:path")),Ye=c(require("deepmerge"));var ze=c(require("deepmerge"));function Y(e,t){return t}function U(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,ze.default)(e[a],r,i):e.includes(r)||n.push(r);return n}async function Ke(e,t){return d.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=Me.default.resolve(e.dirPath,".eslintrc.json");try{let o=await He.default.promises.readFile(a,"utf8"),s=JSON.parse(o);s.extends&&(s.extends=s.extends.filter(g=>!g.startsWith("@willbooster/")&&g!=="../../.eslintrc.json")),i.length===0&&(s.extends=[]);let l=n.extends;n.extends=s.extends,s.extends=l,n=Ye.default.all([n,s,n],{arrayMerge:U}),e.depending.blitz==="0"?Ge(n,"blitz"):e.depending.blitz==="2"&&Ge(n,"@blitzjs/next/eslint")}catch{}let r=JSON.stringify(n);await p.run(()=>h.generateFile(a,r))})}function Ge(e,t){e.extends=[t,...e.extends.filter(i=>i!==t)]}var qe=c(require("node:path"));var Qt=`* text=auto
|
57
57
|
|
58
58
|
*.vcproj text eol=crlf
|
59
59
|
|
60
|
-
${[...
|
60
|
+
${[...x.codeWith2IndentSize,...x.codeWith4IndentSize,...x.markdownLike].map(e=>`*.${e} text eol=lf`).join(`
|
61
61
|
`)}
|
62
|
-
`;async function Ve(e){return
|
62
|
+
`;async function Ve(e){return d.function("generateGitattributes",async()=>{let t=qe.default.resolve(e.dirPath,".gitattributes");await p.run(()=>h.generateFile(t,Qt))})}var K=c(require("node:fs")),Xe=c(require("node:os")),J=c(require("node:path"));var ei=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],ti=`
|
63
63
|
.devcontainer/
|
64
64
|
.venv/
|
65
65
|
dist/
|
66
66
|
temp/
|
67
67
|
Icon[\r]
|
68
|
-
|
69
|
-
*.sqlite3-journal
|
70
|
-
`;async function Ze(e,t){return u.function("generateGitignore",async()=>{let i=J.default.resolve(e.dirPath,".gitignore"),n=await h.readFileIgnoringError(i)??"",a=x.getHeadUserContent(n)+Zt,r=x.getTailUserContent(n),o=[...Xt];e.containingGemfile&&o.push("ruby"),e.containingGoMod&&(o.push("go"),a+=`${J.default.basename(e.dirPath)}
|
68
|
+
`;async function Ze(e,t){return d.function("generateGitignore",async()=>{let i=J.default.resolve(e.dirPath,".gitignore"),n=await h.readFileIgnoringError(i)??"",a=_.getHeadUserContent(n)+ti,r=_.getTailUserContent(n),o=[...ei];e.containingGemfile&&o.push("ruby"),e.containingGoMod&&(o.push("go"),a+=`${J.default.basename(e.dirPath)}
|
71
69
|
`),e.containingPackageJson&&o.push("node"),e.containingPomXml&&(o.push("maven"),a+=`.idea/google-java-format.xml
|
72
70
|
`),e.containingPubspecYaml&&(o.push("flutter","AndroidStudio","ruby"),a+=`.flutter-plugins-dependencies
|
73
71
|
android/key.properties
|
@@ -75,15 +73,19 @@ ios/.bundle
|
|
75
73
|
.idea/runConfigurations.xml
|
76
74
|
`),e.containingTemplateYaml&&(a+=`.aws-sam/
|
77
75
|
packaged.yaml
|
78
|
-
`),e.containingPoetryLock&&o.push("python"),
|
79
|
-
|
80
|
-
`),t.depending.storybook&&o.push("storybookjs"),t.depending.blitz&&(o.push("nextjs"),a+=`.blitz/
|
76
|
+
`),e.containingPoetryLock&&(o.push("python"),a+=`.venv/
|
77
|
+
`),t.depending.blitz&&(o.push("nextjs"),a+=`.blitz/
|
81
78
|
.blitz**
|
82
|
-
`)
|
83
|
-
|
84
|
-
`
|
85
|
-
|
86
|
-
|
79
|
+
`),(t.depending.firebase||e.depending.firebase)&&o.push("firebase"),t.depending.prisma&&(a+=`*.sqlite3
|
80
|
+
*.sqlite3-journal
|
81
|
+
`),t.depending.playwright&&(a+=`test-results/
|
82
|
+
`),(t.depending.reactNative||e.depending.reactNative)&&(o.push("reactnative"),a+=`google-services.json
|
83
|
+
android/app/src/main/assets/
|
84
|
+
`),t.depending.storybook&&o.push("storybookjs");let s="";for(let g of o){let u=await ri(g)??"";if(!u){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}u=w.trim(),await p.run(()=>ii(g,u)),O.isVerbose&&console.info(`Fetched ${y}`)}s&&(s+=`
|
85
|
+
`),s+=u+`
|
86
|
+
`}await _.isBerryZeroInstallEnabled(i)||(s=s.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*")),(e.containingPomXml||e.containingPubspecYaml)&&(s=s.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&&(s=s.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),s=s.replace(/^.idea\/?$/gm,"# .idea"),(t.depending.reactNative||e.depending.reactNative||e.containingPubspecYaml)&&(s=s.replace(/^(.idea\/.+)$/gm,`$1
|
87
|
+
android/$1`));let l=a+s+r;await p.run(()=>h.generateFile(i,l))})}var Z=J.default.join(Xe.default.homedir(),".cache","wbfy","gitignore");async function ii(e,t){await K.default.promises.mkdir(Z,{recursive:!0}),await K.default.promises.writeFile(J.default.join(Z,e),t)}async function ri(e){try{let t=await K.default.promises.stat(J.default.join(Z,e));return Date.now()-t.mtimeMs>6*60*60*1e3?void 0:await K.default.promises.readFile(J.default.join(Z,e),"utf8")}catch{}}var R=c(require("node:fs")),I=c(require("node:path"));var j=c(require("node:fs")),L=c(require("node:path")),he=c(require("deepmerge"));var Q={getLintFixSuffix(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""}};var Qe=require("@octokit/core"),et=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,ee=!!et,C=new Qe.Octokit({auth:et}),fe=class{getOrgAndName(t){var o;let i=t.split(":").at(-1),n=i==null?void 0:i.split("/"),a=(n==null?void 0:n.at(-2))??"",r=((o=n==null?void 0:n.at(-1))==null?void 0:o.replace(/.git$/,""))??"";return[a,r]}},T=new fe;var ge={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"?ge.blitz0:ge.blitz2:ge.node}var ye=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],tt=[...ye,"@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"],it=["eslint-plugin-react","eslint-plugin-react-hooks"],rt={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js",...ye],"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react",...ye,...it],"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts",...tt],"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react",...tt,...it],"../../.eslintrc.json":[]};async function nt(e,t,i){return d.function("generatePackageJson",async()=>{await ni(e,t,i)})}async function ni(e,t,i){var u,y;let n=L.default.resolve(e.dirPath,"package.json"),a=await j.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 oi(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,he.default)(r.scripts,we(e)),r.scripts.prettify+=await si(e.dirPath);let o=[],s=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],l=[];e.root&&(s.push("husky","@willbooster/renovate-config"),(e.publicRepo||e.referredByOtherRepo)&&(s.push("pinst"),r.scripts.prepack="pinst --disable",r.scripts.postpack="pinst --enable"),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"),r.version="0.0.0-semantically-released"),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)&&s.push("typescript"),e.eslintBase&&s.push(...rt[e.eslintBase]),e.willBoosterConfigs&&(o=o.filter(m=>!m.includes("@willbooster/")),s=s.filter(m=>!m.includes("@willbooster/"))),r.name||(r.name=L.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]=T.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=>j.default.existsSync(L.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 j.default.promises.readdir(e.dirPath,{withFileTypes:!0}),b=(await Promise.all(m.map(async v=>{if(!v.isDirectory())return"";let z=L.default.resolve(e.dirPath,v.name);return(await j.default.promises.readdir(z)).some(At=>At.endsWith(".py"))?v.name:""}))).filter(Boolean);b.length>0&&(r.scripts["format-code"]=`poetry run isort --profile black ${b.join(" ")} && poetry run black ${b.join(" ")}`,r.scripts.lint=`poetry run flake8 ${b.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"&&(s=s.filter(m=>!m.includes("@typescript-eslint/")),s=s.filter(m=>m!=="eslint-plugin-react"&&m!=="eslint-import-resolver-typescript"&&m!=="eslint-plugin-import"&&m!=="eslint-plugin-react-hooks")),(u=r.scripts["gen-code"])!=null&&u.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 j.default.promises.writeFile(n,JSON.stringify(r)),i||(o=o.filter(m=>{var w;return!((w=r.devDependencies)!=null&&w[m])}),o.length>0&&k("yarn",["add",...new Set(o)],e.dirPath),s=s.filter(m=>{var w;return!((w=r.dependencies)!=null&&w[m])}),s.length>0&&k("yarn",["add","-D",...new Set(s)],e.dirPath),l.length>0&&k("poetry",["add",...new Set(l)],e.dirPath))}async function oi(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 i of t)delete e.devDependencies[i];await p.run(()=>j.default.promises.rm("lerna.json",{force:!0}))}function we(e){let t={cleanup:"yarn format && yarn lint-fix",format:"sort-package-json && yarn prettify",lint:`eslint --color "./{${te(e)}}/**/*.{${x.eslint.join(",")}}"`,"lint-fix":"yarn lint --fix",prettify:`prettier --cache --color --write "**/{.*/,}*.{${x.prettier.join(",")}}" "!**/test-fixtures/**"`,typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(t=(0,he.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 "**/{.*/,}*.{${x.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 si(e){let t=L.default.resolve(e,".prettierignore"),i=await j.default.promises.readFile(t,"utf8"),n=i.indexOf(_.separatorPrefix);return n<0?"":i.slice(0,n).split(`
|
88
|
+
`).map(o=>{let s=o.trim();return s.endsWith("/")?s.slice(0,-1):s}).filter(o=>o&&!o.startsWith("#")&&!o.includes("/")).map(o=>` "!**/${o}/**"`).join("")}var Pe="npm test",ie={preCommit:"node node_modules/.bin/lint-staged",prePush:"yarn typecheck",prePushForLab:`
|
87
89
|
if [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "exkazuu@gmail.com" ]; then
|
88
90
|
echo "************************************************"
|
89
91
|
echo "*** Don't push main branch directly. Use PR! ***"
|
@@ -100,10 +102,10 @@ run_if_changed() {
|
|
100
102
|
eval "$2"
|
101
103
|
fi
|
102
104
|
}
|
103
|
-
`.trim()};async function ot(e){return
|
105
|
+
`.trim()};async function ot(e){return d.function("generateHuskyrc",async()=>{await ai(e)})}async function ai(e){var g,u;let t=I.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 a=I.default.resolve(e.dirPath,".husky");await Promise.all([R.default.promises.writeFile(t,JSON.stringify(n,void 0,2)),R.default.promises.rm(a,{force:!0,recursive:!0})]),k("yarn",["dlx","husky-init","--yarn2"],e.dirPath);let r=I.default.resolve(a,"pre-commit"),o=await R.default.promises.readFile(r,"utf8");if(await p.run(()=>R.default.promises.rm(I.default.resolve(e.dirPath,".huskyrc.json"),{force:!0})),await p.run(()=>R.default.promises.writeFile(r,o.replace(Pe,ie.preCommit))),e.containingTypeScript||e.containingTypeScriptInPackages){let y=(g=e.repository)!=null&&g.startsWith("github:WillBoosterLab/")?ie.prePushForLab:ie.prePush,{typecheck:m}=we(e);y=y.replace("yarn typecheck",m.replace("tsc","node node_modules/.bin/tsc")),await p.run(()=>R.default.promises.writeFile(I.default.resolve(a,"pre-push"),o.replace(Pe,y),{mode:493}))}let s=[];e.versionsText&&s.push('run_if_changed "\\..+-version" "asdf plugin update --all"'),(u=e.versionsText)!=null&&u.includes("python ")&&s.push('run_if_changed "\\..+-version" "asdf install python"'),e.versionsText&&s.push('run_if_changed "\\..+-version" "asdf install"'),s.push('run_if_changed "package\\.json" "yarn"'),e.containingPoetryLock&&s.push('run_if_changed "poetry\\.lock" "poetry install"'),e.depending.blitz&&s.push('run_if_changed "db/schema.prisma" "node node_modules/.bin/blitz prisma migrate deploy"','run_if_changed "db/schema.prisma" "node node_modules/.bin/blitz blitz codegen"'),e.depending.prisma&&s.push('run_if_changed "prisma/schema.prisma" "node node_modules/.bin/prisma migrate deploy"','run_if_changed "prisma/schema.prisma" "node node_modules/.bin/prisma generate"');let l=o.replace(Pe,`${ie.postMerge}
|
104
106
|
|
105
107
|
${s.join(`
|
106
|
-
`)}`);await p.run(()=>R.default.promises.writeFile(
|
108
|
+
`)}`);await p.run(()=>R.default.promises.writeFile(I.default.resolve(a,"post-merge"),l,{mode:493}))}var ve=c(require("node:fs")),be=c(require("node:path"));var li=`<?xml version="1.0" encoding="UTF-8"?>
|
107
109
|
<project version="4">
|
108
110
|
<component name="ProjectTasksOptions">
|
109
111
|
<TaskOptions isEnabled="true">
|
@@ -228,10 +230,10 @@ ${s.join(`
|
|
228
230
|
</TaskOptions>
|
229
231
|
</component>
|
230
232
|
</project>
|
231
|
-
`;async function st(e){return
|
232
|
-
'${at(e)}': [${JSON.stringify(`${t}eslint --fix${
|
233
|
-
'./**/*.{${
|
234
|
-
${e.containingJavaScript||e.containingTypeScript?
|
233
|
+
`;async function st(e){return d.function("generateIdeaSettings",async()=>{let t=be.default.resolve(e.dirPath,".idea");if(ve.default.existsSync(t)){let i=be.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,li)):p.run(()=>ve.default.promises.rm(i,{force:!0})))}})}var ke=c(require("node:fs")),re=c(require("node:path"));async function xe(e){return d.function("generateLintstagedrc",async()=>{await ci(e)})}async function ci(e){let t=e.root?"node node_modules/.bin/":"node ../../node_modules/.bin/",i=[];if(e.containingJavaScript||e.containingTypeScript){let o=`
|
234
|
+
'${at(e)}': [${JSON.stringify(`${t}eslint --fix${Q.getLintFixSuffix(e)}`)}, '${t}prettier --cache --write'],`;i.push(o)}let n=e.root?" && !file.includes('/packages/')":"";i.push(`
|
235
|
+
'./**/*.{${x.prettier.join(",")}}': files => {
|
236
|
+
${e.containingJavaScript||e.containingTypeScript?pi(e):""}
|
235
237
|
const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')${n});
|
236
238
|
if (filteredFiles.length === 0) return [];
|
237
239
|
const commands = [\`${t}prettier --cache --write \${filteredFiles.join(' ')}\`];
|
@@ -254,7 +256,7 @@ ${s.join(`
|
|
254
256
|
|
255
257
|
module.exports = {${i.join("")}
|
256
258
|
};
|
257
|
-
`,r=
|
259
|
+
`,r=re.default.resolve(e.dirPath,".lintstagedrc.cjs");await p.run(()=>ke.default.promises.rm(re.default.resolve(e.dirPath,".lintstagedrc.js"),{force:!0})),await p.run(()=>ke.default.promises.rm(re.default.resolve(e.dirPath,".lintstagedrc.json"),{force:!0})),await p.run(()=>h.generateFile(r,a))}function at(e){return`./{${te(e).join(",")}}/**/*.{${x.eslint.join(",")}}`}function pi(e){return`files = micromatch.not(files, '${at(e)}');`}var _e=c(require("node:path"));var lt=`
|
258
260
|
3rd-party/
|
259
261
|
android/
|
260
262
|
ios/
|
@@ -264,13 +266,14 @@ test-fixtures/
|
|
264
266
|
*.min.js
|
265
267
|
.yarn/
|
266
268
|
.pnp.js
|
267
|
-
`;async function ct(e){return
|
269
|
+
`;async function ct(e){return d.function("generatePrettierignore",async()=>{let t=_e.default.resolve(e.dirPath,".prettierignore"),i=await h.readFileIgnoringError(t)??"",n=_.getHeadUserContent(i)+lt,a=_.getTailUserContent(i),r=_e.default.resolve(e.dirPath,".gitignore"),o=await _.readGitignoreWithoutSeparators(r)||"",s="";e.containingPubspecYaml&&(s=`
|
268
270
|
android/app/
|
269
271
|
ios/Runner/Assets.xcassets/
|
270
272
|
pubspec.yaml
|
271
|
-
`);let l=n+lt+s+o+a;await p.run(()=>h.generateFile(t,l))})}var
|
273
|
+
`);let l=n+lt+s+o+a;await p.run(()=>h.generateFile(t,l))})}var ne=c(require("node:fs")),Se=c(require("node:path"));async function mt(e){return d.function("generateReadme",async()=>{var r,o;let t=Se.default.resolve(e.dirPath,"README.md"),i=await ne.default.promises.readFile(t,"utf8");i=pt(e,i,mi,".releaserc.json");let n=(o=e.repository)==null?void 0:o.slice(((r=e.repository)==null?void 0:r.indexOf(":"))+1),a=ne.default.readdirSync(`${e.dirPath}/.github/workflows`);for(let s of a){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 g=`[](https://github.com/${n}/actions/workflows/${s})`;i=pt(e,i,g,`.github/workflows/${s}`)}await p.run(()=>h.generateFile(t,i))})}var mi="[](https://github.com/semantic-release/semantic-release)";function pt(e,t,i,n){if(!ne.default.existsSync(Se.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 o=0;o<t.length;o++)if(t[o]===`
|
272
274
|
`){r=!0,t=`${t.slice(0,o+1)}${i}
|
273
275
|
${t.slice(o+1)}`;break}return r||(t=`${t}
|
274
276
|
${i}
|
275
|
-
`),t}var ut=c(require("node:fs")),dt=c(require("node:path")),Fe=c(require("deepmerge"));async function ft(e){return u.function("generateReleaserc",async()=>{let t=dt.default.resolve(e.dirPath,".releaserc.json");try{let i=JSON.parse(await ut.default.promises.readFile(t,"utf8")),n=(i==null?void 0:i.plugins)||[];for(let r=0;r<n.length;r++){let o=Array.isArray(n[r])?n[r][0]:n[r],s=Array.isArray(n[r])&&n[r][1]||{};o==="@semantic-release/commit-analyzer"?n[r]=["@semantic-release/commit-analyzer",Fe.default.all([s,{preset:"conventionalcommits"}],{arrayMerge:M})]:o==="@semantic-release/github"&&(n[r]=["@semantic-release/github",Fe.default.all([s,{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}],{arrayMerge:M})])}let a=JSON.stringify(i);await p.run(()=>h.generateFile(t,a))}catch{}})}var ne=c(require("node:fs")),oe=c(require("node:path")),gt=c(require("deepmerge")),yt=c(require("lodash.clonedeep"));var ci={extends:["@willbooster"]};async function ht(e){return u.function("generateRenovateJson",async()=>{let t=(0,yt.default)(ci),i=oe.default.resolve(e.dirPath,".renovaterc.json");try{let a=await ne.default.promises.readFile(i,"utf8"),r=JSON.parse(a);t=gt.default.all([t,r,t],{arrayMerge:M})}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(()=>h.generateFile(i,n))})}var wt=c(require("node:fs")),Pt=c(require("node:path")),vt=c(require("deepmerge")),bt=c(require("lodash.clonedeep"));function K(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 pi={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/**/*"]},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","./@types"]},include:["src/**/*","__tests__/**/*","scripts/**/*"]};async function kt(e,t){return u.function("generateTsconfig",async()=>{var r,o,s,l,g,d,y,m,w;if(t.depending.blitz)return;let i=(0,bt.default)(e.root?pi:mi);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&((r=i.compilerOptions)==null||delete r.jsx),e.root&&!e.containingSubPackageJsons&&(i.include=(o=i.include)==null?void 0:o.filter(_=>!_.startsWith("packages/*/"))),e.isEsmPackage&&(i.compilerOptions={...i.compilerOptions,moduleResolution:"NodeNext"});let n=Pt.default.resolve(e.dirPath,"tsconfig.json");try{let _=await wt.default.promises.readFile(n,"utf8"),k=JSON.parse(_);k.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete k.extends,(s=i.compilerOptions)==null||delete s.target,(l=i.compilerOptions)==null||delete l.module,(g=i.compilerOptions)==null||delete g.moduleResolution,(d=k.compilerOptions)!=null&&d.jsx&&((y=i.compilerOptions)==null||delete y.jsx),i=vt.default.all([i,k,i],{arrayMerge:U}),i.include=(m=i.include)==null?void 0:m.filter(ae=>!ae.includes("@types"))}catch{}K(i.compilerOptions??{}),(w=i.include)==null||w.sort();let a=JSON.stringify(i);await p.run(()=>h.generateFile(n,a))})}var E=c(require("node:fs")),$=c(require("node:path")),St=c(require("deepmerge")),Ce=c(require("js-yaml")),Ft=c(require("lodash.clonedeep"));var ui={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-issue-to-project":{uses:"WillBooster/reusable-workflows/.github/workflows/add-issue-to-project.yml@main",secrets:{GH_PROJECT_URL:"${{ secrets.GH_PROJECT_URL }}"}}}}};async function Ct(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 a=(await E.default.promises.readdir(t,{withFileTypes:!0})).filter(o=>o.isFile()&&o.name.endsWith(".yml")).map(o=>o.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 o of a){let s=$.default.basename(o,".yml");await p.run(()=>di(e,t,s))}})}async function di(e,t,i){var r,o;let n=(0,Ft.default)(ui[i]||{}),a=$.default.join(t,`${i}.yml`);try{let s=await E.default.promises.readFile(a,"utf8"),l=Ce.default.load(s);n=St.default.all([n,l,n],{arrayMerge:U})}catch{}for(let s of Object.values(n.jobs)){if(!((o=(r=s.uses)==null?void 0:r.includes)!=null&&o.call(r,"/reusable-workflows/")))return;fi(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":{xt(n,20,24);break}case"wbfy-merge":{xt(n,0,4);break}}if(gi(n),await _t(n,a),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 _t(n,$.default.join(t,"sync-force.yml"))}}function fi(e,t,i){var n,a,r;if(t.with||={},t.secrets||={},(e.release.github&&i==="test"||i==="release"||i==="wbfy"||i==="wbfy-merge"||i==="add-issue-to-project")&&(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 o=(n=t.with)==null?void 0:n.sync_params_without_dest;o&&(t.with.sync_params_without_dest=o.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/")),yi(t),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?K(t.with):delete t.with,Object.keys(t.secrets).length>0){let o=K(t.secrets);delete t.secrets,t.secrets=o}else delete t.secrets}function xt(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 d=(a+9)%24,y=t<i?t<=d&&d<i:t<=d||d<i;if(y)return;console.log("setSchedule:",e,n,a,y,d,t,i)}else console.log("setSchedule:",e,n,a);let r=1+Math.floor(Math.random()*59),o=t+Math.floor(Math.random()*(i-t)),s=`${r} ${(o-9+24)%24} * * *`;e.on.schedule=[{cron:s}]}async function _t(e,t){let i=Ce.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await E.default.promises.writeFile(t,i)}function gi(e){delete e.jobs["add-to-project"]}function yi(e){delete e.with.non_self_hosted,delete e.with.notify_discord,delete e.with.require_fly,delete e.with.require_gcloud}var D=c(require("node:fs")),I=c(require("node:path")),Re=c(require("js-yaml"));async function Et(e){return u.function("generateYarnrcYml",async()=>{var d,y;let t=A("yarn",["--version"],e.dirPath),i=hi("@yarnpkg/cli",e.dirPath);$t(t)<=$t(i)&&t!==i&&v("yarn",["set","version",i],e.dirPath,1);let n=I.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(I.default.join(n,m))),console.log("Removed",I.default.join(n,m)));let a=I.default.resolve(e.dirPath,".yarnrc");await p.run(()=>D.default.promises.rm(a,{force:!0}));let r=I.default.resolve(e.dirPath,".yarnrc.yml"),o=Re.default.load(await D.default.promises.readFile(r,"utf8"));o.defaultSemverRangePrefix="",o.nodeLinker="node-modules",o.nmMode="hardlinks-global",o.enableGlobalCache=!0;let s=((d=o.plugins)==null?void 0:d.length)??0;if(o.plugins=((y=o.plugins)==null?void 0:y.filter(m=>m.path!==".yarn/plugins/undefined.cjs"))??[],o.plugins.length!==s){let m=I.default.resolve(e.dirPath,".yarnrc","undefined.cjs");await p.run(()=>D.default.promises.rm(m,{force:!0}))}o.plugins.length===0&&delete o.plugins,await D.default.promises.writeFile(r,Re.default.dump(o,{lineWidth:-1}));let l=(o.plugins??[]).map(m=>m.spec),g=e.containingTypeScript||e.containingTypeScriptInPackages;Rt(e,l,g,"@yarnpkg/plugin-typescript"),Rt(e,l,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),v("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function hi(e,t){let i=A("npm",["show",e,"versions","--json"],t),n=JSON.parse(i);return n[n.length-1]}function Rt(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 jt(e){return u.function("setupLabels",async()=>{if(!Q)return;let[t,i]=T.getOrgAndName(e.repository??"");if(!(!t||!i)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await f(t,i,"d1: x-easy :hedgehog:","EDE9FE"),await f(t,i,"d2: easy :rabbit2:","DDD6FE"),await f(t,i,"d3: medium :ox:","C4B5FD"),await f(t,i,"d4: hard :squid:","A78BFA"),await f(t,i,"d5: x-hard :whale2:","8B5CF6"),await f(t,i,"p1: critical :fire::fire::fire:","EF4444"),await f(t,i,"p2: urgent :fire::fire:","F87171"),await f(t,i,"p3: important :fire:","FCA5A5"),await f(t,i,"p4: nice to have :droplet:","FECACA"),await f(t,i,"r: blitz","5300bc"),await f(t,i,"r: firebase","ffca28"),await f(t,i,"r: prisma","0c344b"),await f(t,i,"r: react","61dafb"),await f(t,i,"r: svelte","ff3e00"),await f(t,i,"r: semantic-release","494949"),await f(t,i,"ready :rocket:","22C55E"),await f(t,i,"review requested :mag:","FBCA04"),await f(t,i,"released :bookmark:","6366F1"),await f(t,i,"s: 0.5h :clock1230:","F3F4F6"),await f(t,i,"s: 1h :clock1:","E5E7EB"),await f(t,i,"s: 2h :clock2:","D1D5DB"),await f(t,i,"s: 3h :clock3:","9CA3AF"),await f(t,i,"s: 5h :clock5:","6B7280"),await f(t,i,"s: 8h :clock8:","4B5563"),await f(t,i,"s: 13h :clock1:","374151"),await f(t,i,"t: build :hammer:","BFDBFE"),await f(t,i,"t: chore :broom:","BFDBFE"),await f(t,i,"t: ci :construction_worker:","BFDBFE"),await f(t,i,"t: docs :memo:","BFDBFE"),await f(t,i,"t: feat :sparkles:","BFDBFE"),await f(t,i,"t: fix :bug:","BFDBFE"),await f(t,i,"t: perf :zap:","BFDBFE"),await f(t,i,"t: refactor :recycle:","BFDBFE"),await f(t,i,"t: style :lipstick:","BFDBFE"),await f(t,i,"t: test :test_tube:","BFDBFE"),await f(t,i,"project","24292F"),await S(t,i,"bug"),await S(t,i,"documentation"),await S(t,i,"duplicate"),await S(t,i,"enhancement"),await S(t,i,"good first issue"),await S(t,i,"help wanted"),await S(t,i,"invalid"),await S(t,i,"question"),await S(t,i,"wontfix"),await S(t,i,"ready"),await S(t,i,"review requested"),await S(t,i,"released"),await S(t,i,"semantic-release")}catch(n){console.warn("Skip setupLabels due to:",(n==null?void 0:n.stack)??n)}})}async function f(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 S(e,t,i){try{await C.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i})}catch{}}var Tt=c(require("dotenv")),B=c(require("libsodium-wrappers"));var wi=["READY_DISCORD_WEBHOOK_URL"];async function Ot(e){return u.function("setupSecrets",async()=>{if(!Q)return;let[t,i]=T.getOrgAndName(e.repository??"");if(!t||!i||t!=="WillBoosterLab")return;let n=Tt.default.config().parsed||{};if(Object.keys(n).length!==0)try{for(let s of wi)try{await C.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s})}catch{}let a=await C.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:i}),{key:r,key_id:o}=a.data;await B.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 g=B.default.from_base64(r,B.default.base64_variants.ORIGINAL),d=B.default.from_string(l),y=B.default.crypto_box_seal(d,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:s,encrypted_value:m,key_id:o})}}catch(a){console.warn("Skip setupSecrets due to:",(a==null?void 0:a.stack)??a)}})}async function Dt(e){}var F=c(require("node:fs")),se=c(require("node:fs/promises")),P=c(require("node:path")),N=c(require("glob")),Nt=require("simple-git");async function $e(e){var i;let t=P.default.resolve(e,"package.json");try{let n=F.default.existsSync(t),a={},r={},o={},s=!1;if(n){let _=F.default.readFileSync(t,"utf8");o=JSON.parse(_),a=o.dependencies??{},r=o.devDependencies??{},s=o.type==="module"}let l=[],g=[];try{let _=P.default.resolve(e,".releaserc.json"),k=JSON.parse(await se.default.readFile(_,"utf8"));l=(k==null?void 0:k.branches)||[],g=((i=k==null?void 0:k.plugins)==null?void 0:i.flat())||[]}catch{}let d=P.default.basename(P.default.resolve(e,".."))!=="packages"||!F.default.existsSync(P.default.resolve(e,"..","..","package.json")),y;d&&(y=await vi(e,o));let m;try{m=await se.default.readFile(P.default.resolve(e,".tool-versions"),"utf8")}catch{try{m="nodejs "+(await se.default.readFile(P.default.resolve(e,".node-version"),"utf8")).trim()}catch{}}let w={dirPath:e,root:d,publicRepo:(y==null?void 0:y.private)===!1,referredByOtherRepo:!!o.files,repository:y!=null&&y.full_name?`github:${y==null?void 0:y.full_name}`:void 0,isEsmPackage:s,willBoosterConfigs:t.includes(`${P.default.sep}willbooster-configs`),containingSubPackageJsons:N.default.sync("packages/**/package.json",{cwd:e}).length>0,containingDockerfile:F.default.existsSync(P.default.resolve(e,"Dockerfile"))||F.default.existsSync(P.default.resolve(e,"docker-compose.yml")),containingGemfile:F.default.existsSync(P.default.resolve(e,"Gemfile")),containingGoMod:F.default.existsSync(P.default.resolve(e,"go.mod")),containingPackageJson:F.default.existsSync(P.default.resolve(e,"package.json")),containingPoetryLock:F.default.existsSync(P.default.resolve(e,"poetry.lock")),containingPomXml:F.default.existsSync(P.default.resolve(e,"pom.xml")),containingPubspecYaml:F.default.existsSync(P.default.resolve(e,"pubspec.yaml")),containingTemplateYaml:F.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")},versionsText:m};if(w.eslintBase=Pi(w),w.containingGemfile||w.containingGoMod||w.containingPackageJson||w.containingPoetryLock||w.containingPomXml||w.containingPubspecYaml||w.containingTemplateYaml)return w}catch{}}function Pi(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 vi(e,t){var s,l,g;let a=(await(0,Nt.simpleGit)(e).getRemotes(!0)).find(d=>d.name==="origin"),r=((s=a==null?void 0:a.refs)==null?void 0:s.fetch)??((l=a==null?void 0:a.refs)==null?void 0:l.push);if(typeof r=="string"){let d=await Bt(r);if(d)return d}let o=typeof t.repository=="string"?t.repository:(g=t.repository)==null?void 0:g.url;if(o){let d=await Bt(o);if(d&&d.message!=="Not Found")return d}}async function Bt(e){let[t,i]=T.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 bi(){let e=await(0,It.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 $e(t);if(!i){console.error(`there is no valid package.json in ${t}`);continue}let n=i.containingSubPackageJsons?Wt.default.sync("packages/*",{cwd:t}).map(l=>Jt.default.resolve(t,l)):[],r=(await Promise.all(n.map(l=>$e(l)))).filter(l=>!!l),o=[i,...r];if(j.isVerbose)for(let l of o)console.info(l);await Oe(i),await Et(i),await Promise.all([Be(i),Ve(i),ot(i),st(i),xe(i),mt(i),ht(i),ft(i),Ct(i),jt(i),Ot(i),Dt(i)]),await p.promiseAll();let s=[];for(let l of o)await Ze(l,i),await p.promiseAll(),!(!l.root&&!l.containingPackageJson)&&(await ct(l),await nt(l,i,e.skipDeps),s.push(xe(l)),(l.containingTypeScript||l.containingTypeScriptInPackages)&&s.push(kt(l,i)),(l.containingJavaScript||l.containingJavaScriptInPackages||l.containingTypeScript||l.containingTypeScriptInPackages)&&(i.willBoosterConfigs||s.push(Ye(l,i)),s.push(Ae(l))));await Promise.all(s),await p.promiseAll(),v("yarn",["cleanup"],t),v("yarn",["install"],t)}}bi().then();
|
277
|
+
`),t}var dt=c(require("node:fs")),ut=c(require("node:path")),Fe=c(require("deepmerge"));async function ft(e){return d.function("generateReleaserc",async()=>{let t=ut.default.resolve(e.dirPath,".releaserc.json");try{let i=JSON.parse(await dt.default.promises.readFile(t,"utf8")),n=(i==null?void 0:i.plugins)||[];for(let r=0;r<n.length;r++){let o=Array.isArray(n[r])?n[r][0]:n[r],s=Array.isArray(n[r])&&n[r][1]||{};o==="@semantic-release/commit-analyzer"?n[r]=["@semantic-release/commit-analyzer",Fe.default.all([s,{preset:"conventionalcommits"}],{arrayMerge:Y})]:o==="@semantic-release/github"&&(n[r]=["@semantic-release/github",Fe.default.all([s,{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}],{arrayMerge:Y})])}let a=JSON.stringify(i);await p.run(()=>h.generateFile(t,a))}catch{}})}var oe=c(require("node:fs")),se=c(require("node:path")),gt=c(require("deepmerge")),yt=c(require("lodash.clonedeep"));var di={extends:["@willbooster"]};async function ht(e){return d.function("generateRenovateJson",async()=>{let t=(0,yt.default)(di),i=se.default.resolve(e.dirPath,".renovaterc.json");try{let a=await oe.default.promises.readFile(i,"utf8"),r=JSON.parse(a);t=gt.default.all([t,r,t],{arrayMerge:Y})}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 wt=c(require("node:fs")),Pt=c(require("node:path")),vt=c(require("deepmerge")),bt=c(require("lodash.clonedeep"));function q(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 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"]},include:["src/**/*","__tests__/**/*","scripts/**/*","packages/*/src/**/*","packages/*/__tests__/**/*","packages/*/scripts/**/*"]},fi={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 r,o,s,l,g,u,y,m,w;if(t.depending.blitz)return;let i=(0,bt.default)(e.root?ui:fi);!e.containingJsxOrTsx&&!e.containingJsxOrTsxInPackages&&((r=i.compilerOptions)==null||delete r.jsx),e.root&&!e.containingSubPackageJsons&&(i.include=(o=i.include)==null?void 0:o.filter(b=>!b.startsWith("packages/*/"))),e.isEsmPackage&&(i.compilerOptions={...i.compilerOptions,moduleResolution:"NodeNext"});let n=Pt.default.resolve(e.dirPath,"tsconfig.json");try{let b=await wt.default.promises.readFile(n,"utf8"),v=JSON.parse(b);v.extends==="./node_modules/@willbooster/tsconfig/tsconfig.json"&&delete v.extends,(s=i.compilerOptions)==null||delete s.target,(l=i.compilerOptions)==null||delete l.module,(g=i.compilerOptions)==null||delete g.moduleResolution,(u=v.compilerOptions)!=null&&u.jsx&&((y=i.compilerOptions)==null||delete y.jsx),i=vt.default.all([i,v,i],{arrayMerge:U}),i.include=(m=i.include)==null?void 0:m.filter(z=>!z.includes("@types"))}catch{}q(i.compilerOptions??{}),(w=i.include)==null||w.sort();let a=JSON.stringify(i);await p.run(()=>h.generateFile(n,a))})}var E=c(require("node:fs")),$=c(require("node:path")),St=c(require("deepmerge")),Ce=c(require("js-yaml")),Ft=c(require("lodash.clonedeep"));var gi={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-issue-to-project":{uses:"WillBooster/reusable-workflows/.github/workflows/add-issue-to-project.yml@main",secrets:{GH_PROJECT_URL:"${{ secrets.GH_PROJECT_URL }}"}}}}};async function Ct(e){return d.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 a=(await E.default.promises.readdir(t,{withFileTypes:!0})).filter(o=>o.isFile()&&o.name.endsWith(".yml")).map(o=>o.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 o of a){let s=$.default.basename(o,".yml");await p.run(()=>yi(e,t,s))}})}async function yi(e,t,i){var r,o;let n=(0,Ft.default)(gi[i]||{}),a=$.default.join(t,`${i}.yml`);try{let s=await E.default.promises.readFile(a,"utf8"),l=Ce.default.load(s);n=St.default.all([n,l,n],{arrayMerge:U})}catch{}for(let s of Object.values(n.jobs)){if(!((o=(r=s.uses)==null?void 0:r.includes)!=null&&o.call(r,"/reusable-workflows/")))return;hi(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":{xt(n,20,24);break}case"wbfy-merge":{xt(n,0,4);break}}if(wi(n),await _t(n,a),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 _t(n,$.default.join(t,"sync-force.yml"))}}function hi(e,t,i){var n,a,r;if(t.with||={},t.secrets||={},(e.release.github&&i==="test"||i==="release"||i==="wbfy"||i==="wbfy-merge"||i==="add-issue-to-project")&&(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 o=(n=t.with)==null?void 0:n.sync_params_without_dest;o&&(t.with.sync_params_without_dest=o.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/")),Pi(t),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?q(t.with):delete t.with,Object.keys(t.secrets).length>0){let o=q(t.secrets);delete t.secrets,t.secrets=o}else delete t.secrets}function xt(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 u=(a+9)%24,y=t<i?t<=u&&u<i:t<=u||u<i;if(y)return;console.log("setSchedule:",e,n,a,y,u,t,i)}else console.log("setSchedule:",e,n,a);let r=1+Math.floor(Math.random()*59),o=t+Math.floor(Math.random()*(i-t)),s=`${r} ${(o-9+24)%24} * * *`;e.on.schedule=[{cron:s}]}async function _t(e,t){let i=Ce.default.dump(e,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}});await E.default.promises.writeFile(t,i)}function wi(e){delete e.jobs["add-to-project"]}function Pi(e){delete e.with.non_self_hosted,delete e.with.notify_discord,delete e.with.require_fly,delete e.with.require_gcloud}var D=c(require("node:fs")),W=c(require("node:path")),Re=c(require("js-yaml"));async function Et(e){return d.function("generateYarnrcYml",async()=>{var u,y;let t=G("yarn",["--version"],e.dirPath),i=vi("@yarnpkg/cli",e.dirPath);$t(t)<=$t(i)&&t!==i&&k("yarn",["set","version",i],e.dirPath,1);let n=W.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(W.default.join(n,m))),console.log("Removed",W.default.join(n,m)));let a=W.default.resolve(e.dirPath,".yarnrc");await p.run(()=>D.default.promises.rm(a,{force:!0}));let r=W.default.resolve(e.dirPath,".yarnrc.yml"),o=Re.default.load(await D.default.promises.readFile(r,"utf8"));o.defaultSemverRangePrefix="",o.nodeLinker="node-modules",o.nmMode="hardlinks-global",o.enableGlobalCache=!0;let s=((u=o.plugins)==null?void 0:u.length)??0;if(o.plugins=((y=o.plugins)==null?void 0:y.filter(m=>m.path!==".yarn/plugins/undefined.cjs"))??[],o.plugins.length!==s){let m=W.default.resolve(e.dirPath,".yarnrc","undefined.cjs");await p.run(()=>D.default.promises.rm(m,{force:!0}))}o.plugins.length===0&&delete o.plugins,await D.default.promises.writeFile(r,Re.default.dump(o,{lineWidth:-1}));let l=(o.plugins??[]).map(m=>m.spec),g=e.containingTypeScript||e.containingTypeScriptInPackages;Rt(e,l,g,"@yarnpkg/plugin-typescript"),Rt(e,l,e.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),k("yarn",["dlx","yarn-plugin-auto-install"],e.dirPath)})}function vi(e,t){let i=G("npm",["show",e,"versions","--json"],t),n=JSON.parse(i);return n[n.length-1]}function Rt(e,t,i,n){i!==t.includes(n)&&k("yarn",["plugin",i?"import":"remove",n],e.dirPath)}function $t(e){let[t]=e.split(".");return Number(t)}async function Ot(e){return d.function("setupLabels",async()=>{if(!ee)return;let[t,i]=T.getOrgAndName(e.repository??"");if(!(!t||!i)&&!(t!=="WillBooster"&&t!=="WillBoosterLab"))try{await f(t,i,"d1: x-easy :hedgehog:","EDE9FE"),await f(t,i,"d2: easy :rabbit2:","DDD6FE"),await f(t,i,"d3: medium :ox:","C4B5FD"),await f(t,i,"d4: hard :squid:","A78BFA"),await f(t,i,"d5: x-hard :whale2:","8B5CF6"),await f(t,i,"p1: critical :fire::fire::fire:","EF4444"),await f(t,i,"p2: urgent :fire::fire:","F87171"),await f(t,i,"p3: important :fire:","FCA5A5"),await f(t,i,"p4: nice to have :droplet:","FECACA"),await f(t,i,"r: blitz","5300bc"),await f(t,i,"r: firebase","ffca28"),await f(t,i,"r: prisma","0c344b"),await f(t,i,"r: react","61dafb"),await f(t,i,"r: svelte","ff3e00"),await f(t,i,"r: semantic-release","494949"),await f(t,i,"ready :rocket:","22C55E"),await f(t,i,"review requested :mag:","FBCA04"),await f(t,i,"released :bookmark:","6366F1"),await f(t,i,"s: 0.5h :clock1230:","F3F4F6"),await f(t,i,"s: 1h :clock1:","E5E7EB"),await f(t,i,"s: 2h :clock2:","D1D5DB"),await f(t,i,"s: 3h :clock3:","9CA3AF"),await f(t,i,"s: 5h :clock5:","6B7280"),await f(t,i,"s: 8h :clock8:","4B5563"),await f(t,i,"s: 13h :clock1:","374151"),await f(t,i,"t: build :hammer:","BFDBFE"),await f(t,i,"t: chore :broom:","BFDBFE"),await f(t,i,"t: ci :construction_worker:","BFDBFE"),await f(t,i,"t: docs :memo:","BFDBFE"),await f(t,i,"t: feat :sparkles:","BFDBFE"),await f(t,i,"t: fix :bug:","BFDBFE"),await f(t,i,"t: perf :zap:","BFDBFE"),await f(t,i,"t: refactor :recycle:","BFDBFE"),await f(t,i,"t: style :lipstick:","BFDBFE"),await f(t,i,"t: test :test_tube:","BFDBFE"),await f(t,i,"project","24292F"),await S(t,i,"bug"),await S(t,i,"documentation"),await S(t,i,"duplicate"),await S(t,i,"enhancement"),await S(t,i,"good first issue"),await S(t,i,"help wanted"),await S(t,i,"invalid"),await S(t,i,"question"),await S(t,i,"wontfix"),await S(t,i,"ready"),await S(t,i,"review requested"),await S(t,i,"released"),await S(t,i,"semantic-release")}catch(n){console.warn("Skip setupLabels due to:",(n==null?void 0:n.stack)??n)}})}async function f(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 S(e,t,i){try{await C.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:e,repo:t,name:i})}catch{}}var Tt=c(require("dotenv")),B=c(require("libsodium-wrappers"));var bi=["READY_DISCORD_WEBHOOK_URL"];async function jt(e){return d.function("setupSecrets",async()=>{if(!ee)return;let[t,i]=T.getOrgAndName(e.repository??"");if(!t||!i||t!=="WillBoosterLab")return;let n=Tt.default.config().parsed||{};if(Object.keys(n).length!==0)try{for(let s of bi)try{await C.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:t,repo:i,secret_name:s})}catch{}let a=await C.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:t,repo:i}),{key:r,key_id:o}=a.data;await B.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 g=B.default.from_base64(r,B.default.base64_variants.ORIGINAL),u=B.default.from_string(l),y=B.default.crypto_box_seal(u,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:s,encrypted_value:m,key_id:o})}}catch(a){console.warn("Skip setupSecrets due to:",(a==null?void 0:a.stack)??a)}})}async function Dt(e){}var F=c(require("node:fs")),ae=c(require("node:fs/promises")),P=c(require("node:path")),N=c(require("glob")),Nt=require("simple-git");async function $e(e){var i;let t=P.default.resolve(e,"package.json");try{let n=F.default.existsSync(t),a={},r={},o={},s=!1;if(n){let b=F.default.readFileSync(t,"utf8");o=JSON.parse(b),a=o.dependencies??{},r=o.devDependencies??{},s=o.type==="module"}let l=[],g=[];try{let b=P.default.resolve(e,".releaserc.json"),v=JSON.parse(await ae.default.readFile(b,"utf8"));l=(v==null?void 0:v.branches)||[],g=((i=v==null?void 0:v.plugins)==null?void 0:i.flat())||[]}catch{}let u=P.default.basename(P.default.resolve(e,".."))!=="packages"||!F.default.existsSync(P.default.resolve(e,"..","..","package.json")),y;u&&(y=await xi(e,o));let m="";try{let b=await ae.default.readFile(P.default.resolve(e,".tool-versions"),"utf8");m+=b.trim()}catch{}for(let[b,v]of[["node","nodejs"],["python","python"]])try{let z=await ae.default.readFile(P.default.resolve(e,`.${b}-version`),"utf8");m&&(m+=`
|
278
|
+
`),m+=v+" "+z.trim()}catch{}let w={dirPath:e,root:u,publicRepo:(y==null?void 0:y.private)===!1,referredByOtherRepo:!!o.files,repository:y!=null&&y.full_name?`github:${y==null?void 0:y.full_name}`:void 0,isEsmPackage:s,willBoosterConfigs:t.includes(`${P.default.sep}willbooster-configs`),containingSubPackageJsons:N.default.sync("packages/**/package.json",{cwd:e}).length>0,containingDockerfile:F.default.existsSync(P.default.resolve(e,"Dockerfile"))||F.default.existsSync(P.default.resolve(e,"docker-compose.yml")),containingGemfile:F.default.existsSync(P.default.resolve(e,"Gemfile")),containingGoMod:F.default.existsSync(P.default.resolve(e,"go.mod")),containingPackageJson:F.default.existsSync(P.default.resolve(e,"package.json")),containingPoetryLock:F.default.existsSync(P.default.resolve(e,"poetry.lock")),containingPomXml:F.default.existsSync(P.default.resolve(e,"pom.xml")),containingPubspecYaml:F.default.existsSync(P.default.resolve(e,"pubspec.yaml")),containingTemplateYaml:F.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"],playwright:!!r.playwright,prisma:!!a.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")},versionsText:m};if(w.eslintBase=ki(w),w.containingGemfile||w.containingGoMod||w.containingPackageJson||w.containingPoetryLock||w.containingPomXml||w.containingPubspecYaml||w.containingTemplateYaml)return w}catch{}}function ki(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 xi(e,t){var s,l,g;let a=(await(0,Nt.simpleGit)(e).getRemotes(!0)).find(u=>u.name==="origin"),r=((s=a==null?void 0:a.refs)==null?void 0:s.fetch)??((l=a==null?void 0:a.refs)==null?void 0:l.push);if(typeof r=="string"){let u=await Bt(r);if(u)return u}let o=typeof t.repository=="string"?t.repository:(g=t.repository)==null?void 0:g.url;if(o){let u=await Bt(o);if(u&&u.message!=="Not Found")return u}}async function Bt(e){let[t,i]=T.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 _i(){let e=await(0,Wt.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;O.isVerbose=e.verbose;for(let t of e._){if(typeof t=="number")continue;let i=await $e(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=>Jt.default.resolve(t,l)):[],r=(await Promise.all(n.map(l=>$e(l)))).filter(l=>!!l),o=[i,...r];if(O.isVerbose)for(let l of o)console.info(l);await je(i),await Et(i),await Promise.all([Be(i),Ve(i),ot(i),st(i),xe(i),mt(i),ht(i),ft(i),Ct(i),Ot(i),jt(i),Dt(i)]),await p.promiseAll();let s=[];for(let l of o)await Ze(l,i),await p.promiseAll(),!(!l.root&&!l.containingPackageJson)&&(await ct(l),await nt(l,i,e.skipDeps),s.push(xe(l)),(l.containingTypeScript||l.containingTypeScriptInPackages)&&s.push(kt(l,i)),(l.containingJavaScript||l.containingJavaScriptInPackages||l.containingTypeScript||l.containingTypeScriptInPackages)&&(i.willBoosterConfigs||s.push(Ke(l,i)),s.push(Le(l))));await Promise.all(s),await p.promiseAll(),k("yarn",["cleanup"],t),k("yarn",["install"],t)}}_i().then();
|
276
279
|
//# sourceMappingURL=index.min.cjs.map
|