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