wbfy 1.73.1 → 1.75.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/bin/wbfy ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../dist/index.cjs');
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("node:path"),n=require("glob"),t=require("yargs"),r=require("node:fs"),i=require("minimal-promise-pool"),a=require("node:child_process"),o=require("node:fs/promises"),s=require("deepmerge"),c=require("node:os"),u=require("@octokit/core"),l=require("lodash.clonedeep"),p=require("@willbooster/shared-lib"),f=require("js-yaml"),d=require("dotenv"),m=require("libsodium-wrappers"),h=require("simple-git");function v(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function y(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?v(Object(t),!0).forEach((function(n){P(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):v(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function g(){g=function(){return e};var e={},n=Object.prototype,t=n.hasOwnProperty,r=Object.defineProperty||function(e,n,t){e[n]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[n]}try{c({},"")}catch(e){c=function(e,n,t){return e[n]=t}}function u(e,n,t,i){var a=n&&n.prototype instanceof f?n:f,o=Object.create(a.prototype),s=new S(i||[]);return r(o,"_invoke",{value:w(e,t,s)}),o}function l(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var p={};function f(){}function d(){}function m(){}var h={};c(h,a,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(O([])));y&&y!==n&&t.call(y,a)&&(h=y);var b=m.prototype=f.prototype=Object.create(h);function x(e){["next","throw","return"].forEach((function(n){c(e,n,(function(e){return this._invoke(n,e)}))}))}function k(e,n){function i(r,a,o,s){var c=l(e[r],e,a);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&t.call(p,"__await")?n.resolve(p.__await).then((function(e){i("next",e,o,s)}),(function(e){i("throw",e,o,s)})):n.resolve(p).then((function(e){u.value=e,o(u)}),(function(e){return i("throw",e,o,s)}))}s(c.arg)}var a;r(this,"_invoke",{value:function(e,t){function r(){return new n((function(n,r){i(e,t,n,r)}))}return a=a?a.then(r,r):r()}})}function w(e,n,t){var r="suspendedStart";return function(i,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw a;return E()}for(t.method=i,t.arg=a;;){var o=t.delegate;if(o){var s=j(o,t);if(s){if(s===p)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===r)throw r="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);r="executing";var c=l(e,n,t);if("normal"===c.type){if(r=t.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(r="completed",t.method="throw",t.arg=c.arg)}}}function j(e,n){var t=n.method,r=e.iterator[t];if(void 0===r)return n.delegate=null,"throw"===t&&e.iterator.return&&(n.method="return",n.arg=void 0,j(e,n),"throw"===n.method)||"return"!==t&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+t+"' method")),p;var i=l(r,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,p):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function _(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function P(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function O(e){if(e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function n(){for(;++r<e.length;)if(t.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=void 0,n.done=!0,n};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return d.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:d,configurable:!0}),d.displayName=c(m,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===d||"GeneratorFunction"===(n.displayName||n.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,c(e,s,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},x(k.prototype),c(k.prototype,o,(function(){return this})),e.AsyncIterator=k,e.async=function(n,t,r,i,a){void 0===a&&(a=Promise);var o=new k(u(n,t,r,i),a);return e.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},x(b),c(b,s,"Generator"),c(b,a,(function(){return this})),c(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var n=Object(e),t=[];for(var r in n)t.push(r);return t.reverse(),function e(){for(;t.length;){var r=t.pop();if(r in n)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=O,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(P),!e)for(var n in this)"t"===n.charAt(0)&&t.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(t,r){return o.type="throw",o.arg=e,n.next=t,r&&(n.method="next",n.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var s=t.call(a,"catchLoc"),c=t.call(a,"finallyLoc");if(s&&c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,n){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&t.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=n&&n<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=e,o.arg=n,a?(this.method="next",this.next=a.finallyLoc,p):this.complete(o)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),p},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),P(t),p}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var i=r.arg;P(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,t){return this.delegate={iterator:O(e),resultName:n,nextLoc:t},"next"===this.method&&(this.arg=void 0),p}},e}function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function x(e,n,t,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void t(e)}s.done?n(c):Promise.resolve(c).then(r,i)}function k(e){return function(){var n=this,t=arguments;return new Promise((function(r,i){var a=e.apply(n,t);function o(e){x(a,r,i,o,s,"next",e)}function s(e){x(a,r,i,o,s,"throw",e)}o(void 0)}))}}function w(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function j(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,R(r.key),r)}}function _(e,n,t){return n&&j(e.prototype,n),t&&j(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function P(e,n,t){return(n=R(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function S(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,a,o,s=[],c=!0,u=!1;try{if(a=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=a.call(t)).done)&&(s.push(r.value),s.length!==n);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(e,n)||E(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e){return function(e){if(Array.isArray(e))return F(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e,n){if(e){if("string"==typeof e)return F(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?F(e,n):void 0}}function F(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function T(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=E(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==t.return||t.return()}finally{if(s)throw a}}}}function R(e){var n=function(e,n){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:String(n)}var D=new(_((function e(){w(this,e),P(this,"isVerbose",void 0),this.isVerbose=!1}))),B=new(function(){function e(){w(this,e)}var n;return _(e,[{key:"function",value:(n=k(g().mark((function e(n,t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return D.isVerbose&&console.info("--------- ".concat(n," start ---------")),e.next=3,t();case 3:D.isVerbose&&console.info("---------- ".concat(n," end ----------"));case 4:case"end":return e.stop()}}),e)}))),function(e,t){return n.apply(this,arguments)})}]),e}()),L=new i.PromisePool;function N(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;do{var i=A(e,n,t),o=S(i,3),s=o[0],c=o[1],u=o[2];console.log("$ ".concat(s," ").concat(c.join(" ")," at ").concat(u.cwd));var l=a.spawnSync(s,c,u);if(0===l.status)break}while(--r>=0)}function I(e,n,t){var r=S(A(e,n,t),3),i=r[0],o=r[1],s=r[2];s.stdio="pipe";var c=a.spawnSync(i,o,s),u=c.stderr.toString().trim();return u&&console.error("".concat(i," [").concat(o.map((function(e){return'"'.concat(e,'"')})),"] caused the following error:\n ").concat(u)),c.stdout.toString().trim()}function A(e,n,t){var r=y({},process.env);return r.PATH&&r.BERRY_BIN_FOLDER&&(r.PATH=r.PATH.replace("".concat(r.BERRY_BIN_FOLDER,":"),"")),r.ASDF_DIR&&(n=["-l","-c",". ".concat(r.ASDF_DIR,"/asdf.sh && ").concat(e," ").concat(n.join(" "))],e="bash"),[e,n,{cwd:t,env:r,shell:!1,stdio:"inherit"}]}function W(e){return $.apply(this,arguments)}function $(){return($=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("generateVersionConfigs",k(g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,G(n);case 2:case"end":return e.stop()}}),e)})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var C="1.3.1",J="3.9.16",z="adoptopenjdk-11.0.17+8";function G(e){return q.apply(this,arguments)}function q(){return(q=k(g().mark((function n(t){var i,a,o,s,c,u;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.versionsText){n.next=2;break}return n.abrupt("return");case 2:i=[],a=T(t.versionsText.trim().split("\n")),n.prev=4,s=g().mark((function n(){var a,s,c,u,l,p;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(a=o.value,s=a.trim(),c=s.split(/\s+/),u=S(c,2),l=u[0],p=u[1],l&&p){n.next=5;break}return n.abrupt("return","continue");case 5:if("nodejs"!==l){n.next=10;break}return n.next=8,L.run((function(){return r.promises.writeFile(e.resolve(t.dirPath,".node-version"),p+"\n")}));case 8:n.next=16;break;case 10:if("python"!==l){n.next=15;break}return n.next=13,L.run((function(){return r.promises.writeFile(e.resolve(t.dirPath,".python-version"),p+"\n")}));case 13:n.next=16;break;case 15:i.push(s);case 16:case"end":return n.stop()}}),n)})),a.s();case 7:if((o=a.n()).done){n.next=14;break}return n.delegateYield(s(),"t0",9);case 9:if("continue"!==n.t0){n.next=12;break}return n.abrupt("continue",12);case 12:n.next=7;break;case 14:n.next=19;break;case 16:n.prev=16,n.t1=n.catch(4),a.e(n.t1);case 19:return n.prev=19,a.f(),n.finish(19);case 22:return t.containingPoetryLock&&(M(i,"poetry",C),r.existsSync(e.resolve(t.dirPath,".python-version"))||M(i,"python",J,!0)),t.depending.firebase&&M(i,"java",z,!0,!0),t.containingPackageJson&&(c=I("npm",["show","yarn","version"],t.dirPath),M(i,"yarn",c)),u=e.resolve(t.dirPath,".tool-versions"),n.next=28,i.length>0?L.run((function(){return r.promises.writeFile(u,i.join("\n")+"\n")})):L.run((function(){return r.promises.rm(u,{force:!0})}));case 28:return n.next=30,L.promiseAll();case 30:N("asdf",["plugin","update","--all"],t.dirPath),N("asdf",["install"],t.dirPath);case 32:case"end":return n.stop()}}),n,null,[[4,16,19,22]])})))).apply(this,arguments)}function M(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=e.findIndex((function(e){return e.split(/\s+/)[0]===n})),o="".concat(n," ").concat(t);if(a>=0){var s=e[a].split(/\s+/),c=S(s,2),u=c[1];(i||H(t)>H(u))&&(e[a]=o)}else e.splice(r?0:e.length,0,o)}function H(e){var n,t=0,r=1,i=T(e.split(/[+.-]/).map(Number).filter(Number.isNaN));try{for(i.s();!(n=i.n()).done;){t+=n.value*r,r/=1e3}}catch(e){i.e(e)}finally{i.f()}return t}var U={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()},Y=function(e){return k(g().mark((function n(){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,o.readFile(e,"utf8");case 3:return n.abrupt("return",n.sent);case 6:n.prev=6,n.t0=n.catch(0);case 8:case"end":return n.stop()}}),n,null,[[0,6]])})))()},K=function(e,n){return k(g().mark((function t(){return g().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.writeFile(e,n);case 2:console.log("Generated ".concat(e));case 3:case"end":return t.stop()}}),t)})))()},V="root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n".concat(Q(U.codeWith2IndentSize),"\nindent_size = 2\nindent_style = space\n\n").concat(Q(U.codeWith4IndentSize),"\nindent_size = 4\nindent_style = space\n\n").concat(Q(U.codeWith8IndentSize),"\nindent_size = 8\nindent_style = space\n\n").concat(Q(U.markdownLike),"\nmax_line_length = off\ntrim_trailing_whitespace = false\n\n[{Makefile,*.mk}]\nindent_style = tab\n");function X(e){return Z.apply(this,arguments)}function Z(){return(Z=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateEditorconfig",k(g().mark((function n(){var r;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.resolve(t.dirPath,".editorconfig"),n.next=3,L.run((function(){return K(r,V)}));case 3:case"end":return n.stop()}}),n)})))));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Q(e){return e.length>1?"[*.{".concat(e.join(","),"}]"):"[*.".concat(e[0],"]")}var ee="# Project-specific settings",ne=/# Project-specific settings[^\n]*\n/gm,te="# Generated by wbfy",re="".concat(ee," (head)\n\n\n").concat(te,"\n"),ie="\n".concat(ee," (tail)\n"),ae={separator:te,separatorPrefix:"# Generated by ",defaultHeadUserContent:re,defaultTailUserContent:ie,readGitignoreWithoutSeparators:function(e){return k(g().mark((function n(){var t,i;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,r.promises.readFile(e,"utf8");case 3:return t=n.sent,(i=oe(t))>0&&(t=t.slice(0,i-1)),n.abrupt("return",t.replace(ne,"").replace(/# Generated by [^\n]*\n/gm,"").replace(/\r?\n\r?\n(\r?\n)+/gm,"\n\n").trim()+"\n");case 9:n.prev=9,n.t0=n.catch(0);case 11:case"end":return n.stop()}}),n,null,[[0,9]])})))()},getHeadUserContent:function(e){var n=e.indexOf(this.separatorPrefix);return n>=0?e.slice(0,e.indexOf("\n",n)+1).replace(ne,"".concat(ee," (head)\n")):re},getTailUserContent:function(e){var n=oe(e);return n>0?e.slice(n-1):ie},isBerryZeroInstallEnabled:function(e){return k(g().mark((function n(){var t;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,r.promises.readFile(e,"utf8");case 3:return t=n.sent,n.abrupt("return",t.includes("\n!.yarn/cache"));case 7:return n.prev=7,n.t0=n.catch(0),n.abrupt("return",!1);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()}};function oe(e){var n=e.indexOf(ee),t=e.lastIndexOf(ee);return t>n?t:-1}var se="\n3rd-party/\n@types/\n__generated__/\nandroid/\nios/\nno-format/\ntest-fixtures/\n*.config.*js\n*.d.ts\n*.min.*js\n.yarn/\n.pnp.js\n";function ce(e){return ue.apply(this,arguments)}function ue(){return ue=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateEslintignore",k(g().mark((function n(){var r,i,a,o,s,c,u,l;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.resolve(t.dirPath,".eslintignore"),n.next=3,Y(i);case 3:if(n.t1=r=n.sent,n.t0=null!==n.t1,!n.t0){n.next=7;break}n.t0=void 0!==r;case 7:if(!n.t0){n.next=11;break}n.t2=r,n.next=12;break;case 11:n.t2="";case 12:return a=n.t2,o=ae.getHeadUserContent(a)+se,s=ae.getTailUserContent(a),c=e.resolve(t.dirPath,".gitignore"),n.next=18,ae.readGitignoreWithoutSeparators(c);case 18:if(n.t3=n.sent,n.t3){n.next=21;break}n.t3="";case 21:return u=n.t3,l=o+se+u+s,n.next=25,L.run((function(){return K(i,l)}));case 25:case"end":return n.stop()}}),n)})))));case 1:case"end":return n.stop()}}),n)}))),ue.apply(this,arguments)}function le(e,n){return n}function pe(e,n,t){var r,i=O(e),a=T(n.entries());try{for(a.s();!(r=a.n()).done;){var o=S(r.value,2),c=o[0],u=o[1];void 0===i[c]?i[c]=t.cloneUnlessOtherwiseSpecified(u,t):t.isMergeableObject(u)?i[c]=s(e[c],u,t):e.includes(u)||i.push(u)}}catch(e){a.e(e)}finally{a.f()}return i}function fe(e,n){return de.apply(this,arguments)}function de(){return de=k(g().mark((function n(t,i){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateEslintrc",k(g().mark((function n(){var a,o,c,u,l,p,f;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("2"!==i.depending.blitz){n.next=2;break}return n.abrupt("return");case 2:return a=[],t.eslintBase&&a.push(t.eslintBase),t!==i&&a.push("../../.eslintrc.json"),o={root:!0,extends:a},c=e.resolve(t.dirPath,".eslintrc.json"),n.prev=7,n.next=10,r.promises.readFile(c,"utf8");case 10:u=n.sent,(l=JSON.parse(u)).extends&&(l.extends=l.extends.filter((function(e){return!e.startsWith("@willbooster/")&&"../../.eslintrc.json"!==e}))),0===a.length&&(l.extends=[]),p=o.extends,o.extends=l.extends,l.extends=p,o=s.all([o,l,o],{arrayMerge:pe}),"0"===t.depending.blitz?me(o,"blitz"):"2"===t.depending.blitz&&me(o,"@blitzjs/next/eslint"),n.next=23;break;case 21:n.prev=21,n.t0=n.catch(7);case 23:return f=JSON.stringify(o),n.next=26,L.run((function(){return K(c,f)}));case 26:case"end":return n.stop()}}),n,null,[[7,21]])})))));case 1:case"end":return n.stop()}}),n)}))),de.apply(this,arguments)}function me(e,n){e.extends=[n].concat(O(e.extends.filter((function(e){return e!==n}))))}var he="* text=auto\n\n*.vcproj text eol=crlf\n\n".concat([].concat(O(U.codeWith2IndentSize),O(U.codeWith4IndentSize),O(U.markdownLike)).map((function(e){return"*.".concat(e," text eol=lf")})).join("\n"),"\n");function ve(e){return ye.apply(this,arguments)}function ye(){return(ye=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateGitattributes",k(g().mark((function n(){var r;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.resolve(t.dirPath,".gitattributes"),n.next=3,L.run((function(){return K(r,he)}));case 3:case"end":return n.stop()}}),n)})))));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var ge=["windows","macos","linux","jetbrains","visualstudiocode","emacs","vim","yarn"],be="\n.devcontainer/\ndist/\ntemp/\nIcon[\r]\n!.keep\n";function xe(e,n){return ke.apply(this,arguments)}function ke(){return ke=k(g().mark((function n(t,r){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateGitignore",k(g().mark((function n(){var i,a,o,s,c,u,l,p,f,d,m,h;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.resolve(t.dirPath,".gitignore"),n.next=3,Y(a);case 3:if(n.t1=i=n.sent,n.t0=null!==n.t1,!n.t0){n.next=7;break}n.t0=void 0!==i;case 7:if(!n.t0){n.next=11;break}n.t2=i,n.next=12;break;case 11:n.t2="";case 12:o=n.t2,s=ae.getHeadUserContent(o)+be,c=ae.getTailUserContent(o),u=[].concat(ge),t.containingGemfile&&u.push("ruby"),t.containingGoMod&&(u.push("go"),s+="".concat(e.basename(t.dirPath),"\n")),t.containingPackageJson&&u.push("node"),t.containingPomXml&&(u.push("maven"),s+=".idea/google-java-format.xml\n"),t.containingPubspecYaml&&(u.push("flutter","AndroidStudio","ruby"),s+=".flutter-plugins-dependencies\nandroid/key.properties\nios/.bundle\n.idea/runConfigurations.xml\n"),t.containingTemplateYaml&&(s+=".aws-sam/\npackaged.yaml\n"),t.containingPoetryLock&&(u.push("python"),s+=".venv/\n"),r.depending.blitz&&(u.push("nextjs"),s+=".blitz/\n.blitz**\n"),(r.depending.firebase||t.depending.firebase)&&u.push("firebase"),r.depending.prisma&&(s+="*.sqlite3\n*.sqlite3-journal\n"),r.depending.playwright&&(s+="test-results/\n"),(r.depending.reactNative||t.depending.reactNative)&&(u.push("reactnative"),s+="google-services.json\nandroid/app/src/main/assets/\n"),r.depending.storybook&&u.push("storybookjs"),l="",p=T(u),n.prev=31,d=g().mark((function e(){var n,t,r,i,a,o;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=f.value,e.next=3,Pe(t);case 3:if(e.t1=n=e.sent,e.t0=null!==e.t1,!e.t0){e.next=7;break}e.t0=void 0!==n;case 7:if(!e.t0){e.next=11;break}e.t2=n,e.next=12;break;case 11:e.t2="";case 12:if(r=e.t2){e.next=28;break}return i="https://www.toptal.com/developers/gitignore/api/".concat(t),e.next=17,fetch(i);case 17:return a=e.sent,e.next=20,a.text();case 20:if(!(o=e.sent).includes("Attention Required!")){e.next=24;break}return console.error("Failed to fetch ".concat(i)),e.abrupt("return",{v:void 0});case 24:return r=o.trim(),e.next=27,L.run((function(){return je(t,r)}));case 27:D.isVerbose&&console.info("Fetched ".concat(i));case 28:l&&(l+="\n"),l+=r+"\n";case 30:case"end":return e.stop()}}),e)})),p.s();case 34:if((f=p.n()).done){n.next=41;break}return n.delegateYield(d(),"t3",36);case 36:if("object"!==b(m=n.t3)){n.next=39;break}return n.abrupt("return",m.v);case 39:n.next=34;break;case 41:n.next=46;break;case 43:n.prev=43,n.t4=n.catch(31),p.e(n.t4);case 46:return n.prev=46,p.f(),n.finish(46);case 49:return n.next=51,ae.isBerryZeroInstallEnabled(a);case 51:if(n.sent){n.next=53;break}l=l.replace("!.yarn/cache","# !.yarn/cache").replace("# .pnp.*",".pnp.*");case 53:return(t.containingPomXml||t.containingPubspecYaml)&&(l=l.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"),t.containingPubspecYaml&&(l=l.replace(/^.idea\/modules.xml$/gm,"# .idea/modules.xml"))),l=l.replace(/^.idea\/?$/gm,"# .idea"),(r.depending.reactNative||t.depending.reactNative||t.containingPubspecYaml)&&(l=l.replace(/^(.idea\/.+)$/gm,"$1\nandroid/$1")),h=s+l+c,n.next=59,L.run((function(){return K(a,h)}));case 59:case"end":return n.stop()}}),n,null,[[31,43,46,49]])})))));case 1:case"end":return n.stop()}}),n)}))),ke.apply(this,arguments)}var we=e.join(c.homedir(),".cache","wbfy","gitignore");function je(e,n){return _e.apply(this,arguments)}function _e(){return(_e=k(g().mark((function n(t,i){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,r.promises.mkdir(we,{recursive:!0});case 2:return n.next=4,r.promises.writeFile(e.join(we,t),i);case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Pe(e){return Se.apply(this,arguments)}function Se(){return(Se=k(g().mark((function n(t){var i;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,r.promises.stat(e.join(we,t));case 3:if(i=n.sent,!(Date.now()-i.mtimeMs>216e5)){n.next=6;break}return n.abrupt("return");case 6:return n.next=8,r.promises.readFile(e.join(we,t),"utf8");case 8:return n.abrupt("return",n.sent);case 11:n.prev=11,n.t0=n.catch(0);case 13:case"end":return n.stop()}}),n,null,[[0,11]])})))).apply(this,arguments)}var Oe=function(e){return e.containingJsxOrTsx?' --rule "{ react-hooks/exhaustive-deps: 0 }"':""},Ee=process.env.GH_BOT_PAT||process.env.PUBLIC_GH_BOT_PAT||process.env.GH_TOKEN||process.env.GITHUB_TOKEN,Fe=!!Ee,Te=new u.Octokit({auth:Ee}),Re=new(function(){function e(){w(this,e)}return _(e,[{key:"getOrgAndName",value:function(e){var n,t,r,i=e.split(":").at(-1),a=null==i?void 0:i.split("/");return[null!==(n=null==a?void 0:a.at(-2))&&void 0!==n?n:"",null!==(t=null==a||null===(r=a.at(-1))||void 0===r?void 0:r.replace(/.git$/,""))&&void 0!==t?t:""]}}]),e}()),De={node:["src","__tests__","scripts"].sort(),blitz0:["__tests__","scripts","app","db","integrations","mailers","test"].sort(),blitz2:["src","__tests__","scripts","db","integrations","mailers"].sort()};function Be(e){return e.depending.blitz?"0"===e.depending.blitz?De.blitz0:De.blitz2:De.node}var Le=["eslint","eslint-config-prettier","eslint-plugin-import","eslint-plugin-sort-class-members","eslint-plugin-sort-destructure-keys","eslint-plugin-unicorn"],Ne=[].concat(Le,["@typescript-eslint/eslint-plugin","@typescript-eslint/parser","eslint-import-resolver-typescript"]),Ie=["eslint-plugin-react","eslint-plugin-react-hooks"],Ae={"@willbooster/eslint-config-js":["@willbooster/eslint-config-js"].concat(Le),"@willbooster/eslint-config-js-react":["@willbooster/eslint-config-js-react"].concat(Le,Ie),"@willbooster/eslint-config-ts":["@willbooster/eslint-config-ts"].concat(O(Ne)),"@willbooster/eslint-config-ts-react":["@willbooster/eslint-config-ts-react"].concat(O(Ne),Ie),"../../.eslintrc.json":[]};function We(e,n,t){return $e.apply(this,arguments)}function $e(){return($e=k(g().mark((function e(n,t,r){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("generatePackageJson",k(g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ce(n,t,r);case 2:case"end":return e.stop()}}),e)})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ce(e,n,t){return Je.apply(this,arguments)}function Je(){return Je=k(g().mark((function n(t,i,a){var o,c,u,l,p,f,d,m,h,v,y,b,x,w,j,_,P,E,F,T,R,D,B;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return u=e.resolve(t.dirPath,"package.json"),n.next=3,r.promises.readFile(u,"utf8");case 3:return l=n.sent,(p=JSON.parse(l)).scripts=p.scripts||{},p.dependencies=p.dependencies||{},p.devDependencies=p.devDependencies||{},p.peerDependencies=p.peerDependencies||{},n.next=11,ze(p);case 11:for("@willbooster/prettier-config"!==p.name&&(p.prettier="@willbooster/prettier-config"),f=0,d=Object.keys(p.scripts);f<d.length;f++)m=d[f],p.scripts[m].includes("git clone")||(p.scripts[m]=p.scripts[m].replace(/yarn\s*&&\s*/,"").replace(/yarn\s*install\s*&&\s*/,""));return p.scripts=s(p.scripts,qe(t)),n.t0=p.scripts.prettify,n.next=17,Me(t.dirPath);case 17:if(p.scripts.prettify=n.t0+=n.sent,h=[],v=["lint-staged","prettier","sort-package-json","@willbooster/prettier-config"],y=[],t.root&&(v.push("husky","@willbooster/renovate-config"),(t.publicRepo||t.referredByOtherRepo)&&(v.push("pinst"),p.scripts.prepack="pinst --disable",p.scripts.postpack="pinst --enable"),t.depending.semanticRelease&&(v.push("conventional-changelog-conventionalcommits"),p.devDependencies["semantic-release"]||p.devDependencies["multi-semantic-release"]||p.devDependencies["@qiwi/multi-semantic-release"]||v.push("semantic-release"),p.version="0.0.0-semantically-released"),t.containingSubPackageJsons?p.workspaces=["packages/*"]:delete p.workspaces),(t.containingJavaScript||t.containingJavaScriptInPackages||t.containingTypeScript||t.containingTypeScriptInPackages)&&(v.push("eslint","micromatch"),t.containingTypeScriptInPackages&&v.push("@typescript-eslint/parser")),(t.containingTypeScript||t.containingTypeScriptInPackages)&&v.push("typescript"),t.eslintBase&&(b=v).push.apply(b,O(Ae[t.eslintBase])),t.willBoosterConfigs&&(h=h.filter((function(e){return!e.includes("@willbooster/")})),v=v.filter((function(e){return!e.includes("@willbooster/")}))),p.name||(p.name=e.basename(t.dirPath)),t.containingSubPackageJsons&&(p.private=!0),p.license||(p.license="UNLICENSED"),!p.private&&"UNLICENSED"!==p.license&&i.publicRepo&&(null!==(x=p.publishConfig)&&void 0!==x||(p.publishConfig={}),null!==(j=(w=p.publishConfig).access)&&void 0!==j||(w.access="public")),_=Re.getOrgAndName(null!==(o=t.repository)&&void 0!==o?o:""),P=S(_,1),"WillBooster"!==(E=P[0])&&"WillBoosterLab"!==E||(p.author="WillBooster Inc."),t.containingTypeScript||t.containingTypeScriptInPackages||delete p.scripts.typecheck,t.depending.semanticRelease&&t.release.npm&&(p.resolutions||(p.resolutions={}),p.resolutions["npm/chalk"]="^4.1.2"),t.containingSubPackageJsons){n.next=48;break}if(t.containingJavaScript||t.containingTypeScript?p.scripts["lint-fix"]+=Oe(t):(delete p.scripts.lint,delete p.scripts["lint-fix"],p.scripts.cleanup=p.scripts.cleanup.replace(" && yarn lint-fix","")),t.containingPubspecYaml&&(p.scripts.lint="flutter analyze",p.scripts["lint-fix"]="yarn lint",(F=["lib","test","test_driver"].filter((function(n){return r.existsSync(e.resolve(t.dirPath,n))}))).length>0&&(p.scripts["format-code"]="flutter format $(find ".concat(F.join(" ")," -name generated -prune -o -name '*.freezed.dart' -prune -o -name '*.g.dart' -prune -o -name '*.dart' -print)"),p.scripts.format+=" && yarn format-code")),!t.containingPoetryLock){n.next=47;break}return"poetry install"===p.scripts.postinstall&&delete p.scripts.postinstall,n.next=41,r.promises.readdir(t.dirPath,{withFileTypes:!0});case 41:return T=n.sent,n.next=44,Promise.all(T.map(function(){var n=k(g().mark((function n(i){var a,o;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i.isDirectory()){n.next=2;break}return n.abrupt("return","");case 2:return a=e.resolve(t.dirPath,i.name),n.next=5,r.promises.readdir(a);case 5:return o=n.sent,n.abrupt("return",o.some((function(e){return e.endsWith(".py")}))?i.name:"");case 7:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()));case 44:R=n.sent,(D=R.filter(Boolean)).length>0&&(p.scripts["format-code"]="poetry run isort --profile black ".concat(D.join(" ")," && poetry run black ").concat(D.join(" ")),p.scripts.lint="poetry run flake8 ".concat(D.join(" ")),p.scripts["lint-fix"]="yarn lint",p.scripts.format+=" && yarn format-code",y.push("black","isort","flake8"));case 47:t.repository&&(p.repository=t.repository);case 48:return t.depending.blitz?("0"===t.depending.blitz&&(v=(v=v.filter((function(e){return!e.includes("@typescript-eslint/")}))).filter((function(e){return"eslint-plugin-react"!==e&&"eslint-import-resolver-typescript"!==e&&"eslint-plugin-import"!==e&&"eslint-plugin-react-hooks"!==e}))),null!==(B=p.scripts["gen-code"])&&void 0!==B&&B.startsWith("blitz codegen")||(p.scripts["gen-code"]="blitz codegen")):!t.depending.prisma||null!==(c=p.scripts["gen-code"])&&void 0!==c&&c.startsWith("prisma generate")||(p.scripts["gen-code"]="prisma generate"),0===Object.keys(p.dependencies).length&&delete p.dependencies,0===Object.keys(p.devDependencies).length&&delete p.devDependencies,0===Object.keys(p.peerDependencies).length&&delete p.peerDependencies,n.next=54,r.promises.writeFile(u,JSON.stringify(p));case 54:a||((h=h.filter((function(e){var n;return!(null!==(n=p.devDependencies)&&void 0!==n&&n[e])}))).length>0&&N("yarn",["add"].concat(O(new Set(h))),t.dirPath),(v=v.filter((function(e){var n;return!(null!==(n=p.dependencies)&&void 0!==n&&n[e])}))).length>0&&N("yarn",["add","-D"].concat(O(new Set(v))),t.dirPath),y.length>0&&N("poetry",["add"].concat(O(new Set(y))),t.dirPath));case 55:case"end":return n.stop()}}),n)}))),Je.apply(this,arguments)}function ze(e){return Ge.apply(this,arguments)}function Ge(){return Ge=k(g().mark((function e(n){var t,i,a,o,s,c;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for("WillBooster LLC"===n.author&&(n.author="WillBooster Inc."),delete n.scripts["sort-package-json"],delete n.scripts["sort-all-package-json"],delete n.scripts["typecheck:codegen"],delete n.dependencies.tslib,delete n.devDependencies["@willbooster/eslint-config"],delete n.devDependencies["@willbooster/eslint-config-react"],delete n.devDependencies["@willbooster/tsconfig"],delete n.devDependencies["eslint-import-resolver-node"],delete n.devDependencies["eslint-plugin-prettier"],delete n.devDependencies.lerna,delete n.devDependencies.pinst,delete n.scripts["flutter-format"],delete n.scripts["format-flutter"],delete n.scripts["python-format"],delete n.scripts["format-python"],delete n.scripts.prettier,t=0,i=Object.values(Ae);t<i.length;t++){a=i[t],o=T(a);try{for(o.s();!(s=o.n()).done;)c=s.value,delete n.devDependencies[c]}catch(e){o.e(e)}finally{o.f()}}return e.next=20,L.run((function(){return r.promises.rm("lerna.json",{force:!0})}));case 20:case"end":return e.stop()}}),e)}))),Ge.apply(this,arguments)}function qe(e){var n={cleanup:"yarn format && yarn lint-fix",format:"sort-package-json && yarn prettify",lint:'eslint --color "./{'.concat(Be(e),"}/**/*.{").concat(U.eslint.join(","),'}"'),"lint-fix":"yarn lint --fix",prettify:'prettier --cache --color --write "**/{.*/,}*.{'.concat(U.prettier.join(","),'}" "!**/test-fixtures/**"'),typecheck:"tsc --noEmit --Pretty"};return e.containingSubPackageJsons&&(n=s(y({},n),{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 "**/{.*/,}*.{'.concat(U.prettier.join(","),'}" "!**/packages/**" "!**/test-fixtures/**"'),test:"yarn workspaces foreach --verbose run test",typecheck:"yarn workspaces foreach --parallel --verbose run typecheck"})),e.depending.blitz&&(n.typecheck="".concat(n.typecheck," || yarn run typecheck/warn"),n["typecheck/warn"]="echo 'Please try \"yarn gen-code\" if you face unknown type errors.' && exit 1",n["typecheck:gen-code"]="yarn gen-code && tsc --noEmit --Pretty"),n}function Me(e){return He.apply(this,arguments)}function He(){return He=k(g().mark((function n(t){var i,a,o,s,c;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.resolve(t,".prettierignore"),n.next=3,r.promises.readFile(i,"utf8");case 3:if(a=n.sent,!((o=a.indexOf(ae.separatorPrefix))<0)){n.next=7;break}return n.abrupt("return","");case 7:return s=a.slice(0,o),c=s.split("\n").map((function(e){var n=e.trim();return n.endsWith("/")?n.slice(0,-1):n})).filter((function(e){return e&&!e.startsWith("#")&&!e.includes("/")})),n.abrupt("return",c.map((function(e){return' "!**/'.concat(e,'/**"')})).join(""));case 10:case"end":return n.stop()}}),n)}))),He.apply(this,arguments)}var Ue="npm test",Ye={preCommit:"node node_modules/.bin/lint-staged",prePush:"yarn typecheck",prePushForLab:'\nif [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "exkazuu@gmail.com" ]; then\n echo "************************************************"\n echo "*** Don\'t push main branch directly. Use PR! ***"\n echo "************************************************"\n exit 1\nfi\n\nyarn typecheck\n'.trim(),postMerge:'\nchanged_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"\n\nrun_if_changed() {\n if echo "$changed_files" | grep --quiet -E "$1"; then\n eval "$2"\n fi\n}\n'.trim()};function Ke(e){return Ve.apply(this,arguments)}function Ve(){return(Ve=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("generateHuskyrc",k(g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Xe(n);case 2:case"end":return e.stop()}}),e)})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Xe(e){return Ze.apply(this,arguments)}function Ze(){return Ze=k(g().mark((function n(t){var i,a,o,s,c,u,l,p,f,d,m,h,v;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.resolve(t.dirPath,"package.json"),n.next=3,r.promises.readFile(a,"utf8");case 3:return o=n.sent,(s=JSON.parse(o)).scripts||(s.scripts={}),delete s.scripts.postinstall,delete s.scripts.postpublish,delete s.scripts.prepare,delete s.scripts.prepublishOnly,delete s.scripts.prepack,delete s.scripts.postpack,c=e.resolve(t.dirPath,".husky"),n.next=15,Promise.all([r.promises.writeFile(a,JSON.stringify(s,void 0,2)),r.promises.rm(c,{force:!0,recursive:!0})]);case 15:return N("yarn",["dlx","husky-init","--yarn2"],t.dirPath),u=e.resolve(c,"pre-commit"),n.next=19,r.promises.readFile(u,"utf8");case 19:return l=n.sent,n.next=22,L.run((function(){return r.promises.rm(e.resolve(t.dirPath,".huskyrc.json"),{force:!0})}));case 22:return n.next=24,L.run((function(){return r.promises.writeFile(u,l.replace(Ue,Ye.preCommit))}));case 24:if(!t.containingTypeScript&&!t.containingTypeScriptInPackages){n.next=30;break}return f=null!==(p=t.repository)&&void 0!==p&&p.startsWith("github:WillBoosterLab/")?Ye.prePushForLab:Ye.prePush,d=qe(t),m=d.typecheck,f=f.replace("yarn typecheck",m.replace("tsc","node node_modules/.bin/tsc")),n.next=30,L.run((function(){return r.promises.writeFile(e.resolve(c,"pre-push"),l.replace(Ue,f),{mode:493})}));case 30:return h=[],t.versionsText&&h.push('run_if_changed "\\..+-version" "asdf plugin update --all"'),null!==(i=t.versionsText)&&void 0!==i&&i.includes("python ")&&h.push('run_if_changed "\\..+-version" "asdf install python"'),t.versionsText&&h.push('run_if_changed "\\..+-version" "asdf install"'),h.push('run_if_changed "package\\.json" "yarn"'),t.containingPoetryLock&&h.push('run_if_changed "poetry\\.lock" "poetry install"'),t.depending.blitz?h.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"'):t.depending.prisma&&h.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"'),v=l.replace(Ue,"".concat(Ye.postMerge,"\n\n").concat(h.join("\n"))),n.next=40,L.run((function(){return r.promises.writeFile(e.resolve(c,"post-merge"),v,{mode:493})}));case 40:case"end":return n.stop()}}),n)}))),Ze.apply(this,arguments)}var Qe='<?xml version="1.0" encoding="UTF-8"?>\n<project version="4">\n <component name="ProjectTasksOptions">\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="ts" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.ts)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="tsx" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.tsx)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="js" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.js)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="json" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.json)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="md" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.md)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled="true">\n <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />\n <option name="checkSyntaxErrors" value="false" />\n <option name="description" />\n <option name="exitCodeBehavior" value="ERROR" />\n <option name="fileExtension" value="html" />\n <option name="immediateSync" value="false" />\n <option name="name" value="Prettier (.html)" />\n <option name="output" value="$FilePathRelativeToProjectRoot$" />\n <option name="outputFilters">\n <array />\n </option>\n <option name="outputFromStdout" value="false" />\n <option name="program" value="yarn" />\n <option name="runOnExternalChanges" value="false" />\n <option name="scopeName" value="Project Files" />\n <option name="trackOnlyRoot" value="false" />\n <option name="workingDir" value="$ProjectFileDir$" />\n <envs />\n </TaskOptions>\n </component>\n</project>\n';function en(e){return nn.apply(this,arguments)}function nn(){return nn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateIdeaSettings",k(g().mark((function n(){var i,a;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i=e.resolve(t.dirPath,".idea"),!r.existsSync(i)){n.next=5;break}return a=e.resolve(i,"watcherTasks.xml"),n.next=5,t.containingJavaScript||t.containingJavaScriptInPackages||t.containingTypeScript||t.containingTypeScriptInPackages||t.containingPackageJson&&!t.containingPubspecYaml&&!t.containingGemfile&&!t.containingGoMod&&!t.containingPomXml?L.run((function(){return K(a,Qe)})):L.run((function(){return r.promises.rm(a,{force:!0})}));case 5:case"end":return n.stop()}}),n)})))));case 1:case"end":return n.stop()}}),n)}))),nn.apply(this,arguments)}function tn(e){return rn.apply(this,arguments)}function rn(){return(rn=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("generateLintstagedrc",k(g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,an(n);case 2:case"end":return e.stop()}}),e)})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function an(e){return on.apply(this,arguments)}function on(){return on=k(g().mark((function n(t){var i,a,o,s,c,u;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=t.root?"node node_modules/.bin/":"node ../../node_modules/.bin/",a=[],(t.containingJavaScript||t.containingTypeScript)&&(o="\n '".concat(sn(t),"': [").concat(JSON.stringify("".concat(i,"eslint --fix").concat(Oe(t))),", '").concat(i,"prettier --cache --write'],"),a.push(o)),s=t.root?" && !file.includes('/packages/')":"",a.push("\n './**/*.{".concat(U.prettier.join(","),"}': files => {\n ").concat(t.containingJavaScript||t.containingTypeScript?cn(t):"","\n const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')").concat(s,");\n if (filteredFiles.length === 0) return [];\n const commands = [`").concat(i,"prettier --cache --write ${filteredFiles.join(' ')}`];\n if (filteredFiles.some(file => file.endsWith('package.json'))) {\n commands.push('").concat(i,"sort-package-json');\n }\n return commands;\n },")),t.containingPubspecYaml&&a.push("\n './{lib,test,test_driver}/**/*.dart': files => {\n const filteredFiles = files.filter(file => !file.includes('generated'))\n .filter(file => !file.endsWith('.freezed.dart') && !file.endsWith('.g.dart'));\n if (filteredFiles.length === 0) return [];\n return [`flutter format ${filteredFiles.join(' ')}`];\n },"),t.containingPoetryLock&&a.push("\n './**/*.py': [\n 'poetry run isort --profile black --filter-files',\n 'poetry run black',\n 'poetry run flake8'\n ],"),c="".concat(t.containingJavaScript||t.containingTypeScript?"const micromatch = require('micromatch');":"","\n\nmodule.exports = {").concat(a.join(""),"\n};\n"),u=e.resolve(t.dirPath,".lintstagedrc.cjs"),n.next=11,L.run((function(){return r.promises.rm(e.resolve(t.dirPath,".lintstagedrc.js"),{force:!0})}));case 11:return n.next=13,L.run((function(){return r.promises.rm(e.resolve(t.dirPath,".lintstagedrc.json"),{force:!0})}));case 13:return n.next=15,L.run((function(){return K(u,c)}));case 15:case"end":return n.stop()}}),n)}))),on.apply(this,arguments)}function sn(e){var n=Be(e);return"./{".concat(n.join(","),"}/**/*.{").concat(U.eslint.join(","),"}")}function cn(e){return"files = micromatch.not(files, '".concat(sn(e),"');")}var un="\n3rd-party/\nandroid/\nios/\nno-format/\ntest-fixtures/\n*.d.ts\n*.min.js\n.yarn/\n.pnp.js\n";function ln(e){return pn.apply(this,arguments)}function pn(){return pn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generatePrettierignore",k(g().mark((function n(){var r,i,a,o,s,c,u,l,p;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.resolve(t.dirPath,".prettierignore"),n.next=3,Y(i);case 3:if(n.t1=r=n.sent,n.t0=null!==n.t1,!n.t0){n.next=7;break}n.t0=void 0!==r;case 7:if(!n.t0){n.next=11;break}n.t2=r,n.next=12;break;case 11:n.t2="";case 12:return a=n.t2,o=ae.getHeadUserContent(a)+un,s=ae.getTailUserContent(a),c=e.resolve(t.dirPath,".gitignore"),n.next=18,ae.readGitignoreWithoutSeparators(c);case 18:if(n.t3=n.sent,n.t3){n.next=21;break}n.t3="";case 21:return u=n.t3,l="",t.containingPubspecYaml&&(l="\nandroid/app/\nios/Runner/Assets.xcassets/\npubspec.yaml\n"),p=o+un+l+u+s,n.next=27,L.run((function(){return K(i,p)}));case 27:case"end":return n.stop()}}),n)})))));case 1:case"end":return n.stop()}}),n)}))),pn.apply(this,arguments)}function fn(e){return dn.apply(this,arguments)}function dn(){return dn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateReadme",k(g().mark((function n(){var i,a,o,s,c,u,l,p,f,d,m;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=e.resolve(t.dirPath,"README.md"),n.next=3,r.promises.readFile(o,"utf8");case 3:s=n.sent,s=hn(t,s,mn,".releaserc.json"),c=null===(i=t.repository)||void 0===i?void 0:i.slice((null===(a=t.repository)||void 0===a?void 0:a.indexOf(":"))+1),u=r.readdirSync("".concat(t.dirPath,"/.github/workflows")),l=T(u),n.prev=8,l.s();case 10:if((p=l.n()).done){n.next=21;break}if((f=p.value).startsWith("test")||f.startsWith("deploy")){n.next=14;break}return n.abrupt("continue",19);case 14:d=(d=(d=f).charAt(0).toUpperCase()+d.slice(1,d.indexOf("."))).replace("-"," "),m="[![".concat(d,"](https://github.com/").concat(c,"/actions/workflows/").concat(f,"/badge.svg)](https://github.com/").concat(c,"/actions/workflows/").concat(f,")"),s=hn(t,s,m,".github/workflows/".concat(f));case 19:n.next=10;break;case 21:n.next=26;break;case 23:n.prev=23,n.t0=n.catch(8),l.e(n.t0);case 26:return n.prev=26,l.f(),n.finish(26);case 29:return n.next=31,L.run((function(){return K(o,s)}));case 31:case"end":return n.stop()}}),n,null,[[8,23,26,29]])})))));case 1:case"end":return n.stop()}}),n)}))),dn.apply(this,arguments)}var mn="[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)";function hn(n,t,i,a){if(!r.existsSync(e.resolve(n.dirPath,a)))return t;var o=t.indexOf(i);o>=0&&(t=t.slice(0,o)+t.slice(o+i.length));for(var s=!1,c=0;c<t.length;c++)if("\n"===t[c]){s=!0,t="".concat(t.slice(0,c+1)).concat(i,"\n").concat(t.slice(c+1));break}return s||(t="".concat(t,"\n").concat(i,"\n")),t}function vn(e){return yn.apply(this,arguments)}function yn(){return yn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateReleaserc",k(g().mark((function n(){var i,a,o,c,u,l,p;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.resolve(t.dirPath,".releaserc.json"),n.prev=1,n.t0=JSON,n.next=5,r.promises.readFile(i,"utf8");case 5:for(n.t1=n.sent,a=n.t0.parse.call(n.t0,n.t1),o=(null==a?void 0:a.plugins)||[],c=0;c<o.length;c++)u=Array.isArray(o[c])?o[c][0]:o[c],l=Array.isArray(o[c])&&o[c][1]||{},"@semantic-release/commit-analyzer"===u?o[c]=["@semantic-release/commit-analyzer",s.all([l,{preset:"conventionalcommits"}],{arrayMerge:le})]:"@semantic-release/github"===u&&(o[c]=["@semantic-release/github",s.all([l,{successComment:!1,labels:["r: semantic-release"],releasedLabels:["released :bookmark:"]}],{arrayMerge:le})]);return p=JSON.stringify(a),n.next=12,L.run((function(){return K(i,p)}));case 12:n.next=16;break;case 14:n.prev=14,n.t2=n.catch(1);case 16:case"end":return n.stop()}}),n,null,[[1,14]])})))));case 1:case"end":return n.stop()}}),n)}))),yn.apply(this,arguments)}var gn={extends:["@willbooster"]};function bn(e){return xn.apply(this,arguments)}function xn(){return xn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateRenovateJson",k(g().mark((function n(){var i,a,o,c,u;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=l(gn),a=e.resolve(t.dirPath,".renovaterc.json"),n.prev=2,n.next=5,r.promises.readFile(a,"utf8");case 5:o=n.sent,c=JSON.parse(o),i=s.all([i,c,i],{arrayMerge:le}),n.next=12;break;case 10:n.prev=10,n.t0=n.catch(2);case 12:return n.next=14,L.run((function(){return r.promises.rm(e.resolve(t.dirPath,".dependabot"),{force:!0})}));case 14:return n.next=16,L.run((function(){return r.promises.rm(e.resolve(t.dirPath,"renovate.json"),{force:!0})}));case 16:return u=JSON.stringify(i),n.next=19,L.run((function(){return K(a,u)}));case 19:case"end":return n.stop()}}),n,null,[[2,10]])})))));case 1:case"end":return n.stop()}}),n)}))),xn.apply(this,arguments)}function kn(e){var n,t=T(Object.entries(e).sort((function(e,n){var t=S(e,1)[0],r=S(n,1)[0];return t.localeCompare(r)})));try{for(t.s();!(n=t.n()).done;){var r=S(n.value,2),i=r[0],a=r[1];delete e[i],e[i]=a}}catch(e){t.e(e)}finally{t.f()}return e}var wn={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/**/*"]},jn={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/**/*"]};function _n(e,n){return Pn.apply(this,arguments)}function Pn(){return Pn=k(g().mark((function n(t,i){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateTsconfig",k(g().mark((function n(){var a,o,c,u,p,f,d,m,h,v,b,x,k,w,j;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!i.depending.blitz){n.next=2;break}return n.abrupt("return");case 2:return c=l(t.root?wn:jn),t.containingJsxOrTsx||t.containingJsxOrTsxInPackages||null===(u=c.compilerOptions)||void 0===u||delete u.jsx,t.root&&!t.containingSubPackageJsons&&(c.include=null===(p=c.include)||void 0===p?void 0:p.filter((function(e){return!e.startsWith("packages/*/")}))),t.isEsmPackage&&(c.compilerOptions=y(y({},c.compilerOptions),{},{moduleResolution:"NodeNext"})),f=e.resolve(t.dirPath,"tsconfig.json"),n.prev=7,n.next=10,r.promises.readFile(f,"utf8");case 10:x=n.sent,"./node_modules/@willbooster/tsconfig/tsconfig.json"===(k=JSON.parse(x)).extends&&delete k.extends,null===(d=c.compilerOptions)||void 0===d||delete d.target,null===(m=c.compilerOptions)||void 0===m||delete m.module,null===(h=c.compilerOptions)||void 0===h||delete h.moduleResolution,null!==(v=k.compilerOptions)&&void 0!==v&&v.jsx&&(null===(w=c.compilerOptions)||void 0===w||delete w.jsx),(c=s.all([c,k,c],{arrayMerge:pe})).include=null===(b=c.include)||void 0===b?void 0:b.filter((function(e){return!e.includes("@types")})),n.next=23;break;case 21:n.prev=21,n.t0=n.catch(7);case 23:return kn(null!==(a=c.compilerOptions)&&void 0!==a?a:{}),null===(o=c.include)||void 0===o||o.sort(),j=JSON.stringify(c),n.next=28,L.run((function(){return K(f,j)}));case 28:case"end":return n.stop()}}),n,null,[[7,21]])})))));case 1:case"end":return n.stop()}}),n)}))),Pn.apply(this,arguments)}function Sn(e){return On.apply(this,arguments)}function On(){return(On=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("fixTypeDefinitions",k(g().mark((function n(){var r,i,a,s,c,u;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.resolve(t.dirPath,"@types"),i=t.root&&t.containingSubPackageJsons?void 0:e.resolve(t.dirPath,"src","types"),n.next=4,p.ignoreEnoentAsync((function(){return o.readdir(r,{withFileTypes:!0})}));case 4:if(a=n.sent){n.next=7;break}return n.abrupt("return");case 7:s=T(a),n.prev=8,u=g().mark((function n(){var a,s,u,l,f,d,m;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(f=c.value,d=f.name.slice(0,-5),m=(null===(a=t.packageJson)||void 0===a||null===(s=a.dependencies)||void 0===s?void 0:s[d])||(null===(u=t.packageJson)||void 0===u||null===(l=u.devDependencies)||void 0===l?void 0:l[d]),!f.isFile()||!f.name.endsWith(".d.ts")){n.next=18;break}if(!m){n.next=11;break}return n.next=7,o.mkdir(e.join(r,d));case 7:return n.next=9,L.run((function(){return o.rename(e.join(r,f.name),e.join(r,d,"index.d.ts"))}));case 9:n.next=16;break;case 11:if(!i){n.next=16;break}return n.next=14,o.mkdir(i,{recursive:!0});case 14:return n.next=16,L.run((function(){return o.rename(e.join(r,f.name),e.join(i,f.name))}));case 16:n.next=23;break;case 18:if(!f.isDirectory()||!i||m){n.next=23;break}return n.next=21,o.mkdir(i,{recursive:!0});case 21:return n.next=23,L.run((function(){return p.ignoreEnoentAsync((function(){return o.rename(e.join(r,f.name),e.join(i,"".concat(d,".d.ts")))}))}));case 23:case"end":return n.stop()}}),n)})),s.s();case 11:if((c=s.n()).done){n.next=15;break}return n.delegateYield(u(),"t0",13);case 13:n.next=11;break;case 15:n.next=20;break;case 17:n.prev=17,n.t1=n.catch(8),s.e(n.t1);case 20:return n.prev=20,s.f(),n.finish(20);case 23:case"end":return n.stop()}}),n,null,[[8,17,20,23]])})))));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var En={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 }}"}}}}};function Fn(e){return Tn.apply(this,arguments)}function Tn(){return(Tn=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateWorkflow",k(g().mark((function n(){var i,a,o,s,c,u,l,p;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.resolve(t.dirPath,".github","workflows"),n.next=3,r.promises.mkdir(a,{recursive:!0});case 3:return o=e.resolve(t.dirPath,".github","semantic.yml"),n.next=6,L.run((function(){return r.promises.rm(o,{force:!0,recursive:!0})}));case 6:return n.next=8,r.promises.readdir(a,{withFileTypes:!0});case 8:s=n.sent,c=s.filter((function(e){return e.isFile()&&e.name.endsWith(".yml")})).map((function(e){return e.name})),t.depending.semanticRelease&&c.push("release.yml"),(t.publicRepo||null!==(i=t.repository)&&void 0!==i&&i.startsWith("github:WillBoosterLab/"))&&c.push("notify-ready.yml"),c.push("test.yml","wbfy.yml","wbfy-merge.yml","semantic-pr.yml","close-comment.yml","add-issue-to-project.yml"),u=T(c),n.prev=14,p=g().mark((function n(){var r,i;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=l.value,i=e.basename(r,".yml"),n.next=4,L.run((function(){return Rn(t,a,i)}));case 4:case"end":return n.stop()}}),n)})),u.s();case 17:if((l=u.n()).done){n.next=21;break}return n.delegateYield(p(),"t0",19);case 19:n.next=17;break;case 21:n.next=26;break;case 23:n.prev=23,n.t1=n.catch(14),u.e(n.t1);case 26:return n.prev=26,u.f(),n.finish(26);case 29:case"end":return n.stop()}}),n,null,[[14,23,26,29]])})))));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Rn(e,n,t){return Dn.apply(this,arguments)}function Dn(){return(Dn=k(g().mark((function n(t,i,a){var o,c,u,p,d,m,h,v,y,b,x;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=l(En[a]||{}),c=e.join(i,"".concat(a,".yml")),n.prev=2,n.next=5,r.promises.readFile(c,"utf8");case 5:u=n.sent,p=f.load(u),o=s.all([o,p,o],{arrayMerge:pe}),n.next=12;break;case 10:n.prev=10,n.t0=n.catch(2);case 12:d=0,m=Object.values(o.jobs);case 13:if(!(d<m.length)){n.next=21;break}if(b=m[d],null!==(h=b.uses)&&void 0!==h&&null!==(v=(y=h).includes)&&void 0!==v&&v.call(y,"/reusable-workflows/")){n.next=17;break}return n.abrupt("return");case 17:Bn(t,b,a);case 18:d++,n.next=13;break;case 21:n.t1=a,n.next="release"===n.t1?24:"wbfy"===n.t1?36:"wbfy-merge"===n.t1?38:40;break;case 24:if(!o.on.schedule){n.next=28;break}delete o.on.push,n.next=35;break;case 28:if(!(t.release.branches.length>0)){n.next=32;break}o.on.push.branches=t.release.branches,n.next=35;break;case 32:return n.next=34,r.promises.rm(e.join(i,"release.yml"),{force:!0});case 34:return n.abrupt("return");case 35:return n.abrupt("break",40);case 36:return Ln(o,20,24),n.abrupt("break",40);case 38:return Ln(o,0,4),n.abrupt("break",40);case 40:return An(o),n.next=43,Nn(o,c);case 43:if("release"!==a){n.next=48;break}return n.next=46,r.promises.rm(e.join(i,"semantic-release.yml"),{force:!0});case 46:n.next=63;break;case 48:if("sync"!==a){n.next=63;break}return n.next=51,r.promises.rm(e.join(i,"sync-init.yml"),{force:!0});case 51:if(o.jobs.sync){n.next=53;break}return n.abrupt("return");case 53:if(o.jobs["sync-force"]=o.jobs.sync,x=o.jobs.sync.with.sync_params_without_dest){n.next=57;break}return n.abrupt("return");case 57:return o.jobs.sync.with.sync_params_without_dest="--force ".concat(x),o.name="Force to Sync",o.on={workflow_dispatch:null},delete o.jobs.sync,n.next=63,Nn(o,e.join(i,"sync-force.yml"));case 63:case"end":return n.stop()}}),n,null,[[2,10]])})))).apply(this,arguments)}function Bn(e,n,t){var r,i;if(n.with||(n.with={}),n.secrets||(n.secrets={}),(e.release.github&&"test"===t||"release"===t||"wbfy"===t||"wbfy-merge"===t||"add-issue-to-project"===t)&&(n.secrets.GH_TOKEN=e.publicRepo?"${{ secrets.PUBLIC_GH_BOT_PAT }}":"${{ secrets.GH_BOT_PAT }}"),!e.release.npm||"release"!==t&&"test"!==t||(n.secrets.NPM_TOKEN="${{ secrets.NPM_TOKEN }}"),n.secrets.FIREBASE_TOKEN&&(n.secrets.GCP_SA_KEY_JSON_FOR_FIREBASE="${{ secrets.GCP_SA_KEY_JSON_FOR_FIREBASE }}",delete n.secrets.FIREBASE_TOKEN),(n.secrets.DISCORD_WEBHOOK_URL&&("release"===t||t.startsWith("deploy"))||n.with.server_url&&t.startsWith("deploy"))&&(n.secrets.DISCORD_WEBHOOK_URL="${{ secrets.DISCORD_WEBHOOK_URL_FOR_RELEASE }}"),"sync"===t){var a,o=null===(a=n.with)||void 0===a?void 0:a.sync_params_without_dest;o&&(n.with.sync_params_without_dest=o.replace("sync ",""))}if(null!==(r=e.repository)&&void 0!==r&&r.startsWith("github:WillBooster/")?n.uses=n.uses.replace("WillBoosterLab/","WillBooster/"):null!==(i=e.repository)&&void 0!==i&&i.startsWith("github:WillBoosterLab/")&&(n.uses=n.uses.replace("WillBooster/","WillBoosterLab/")),function(e){delete e.with.non_self_hosted,delete e.with.notify_discord,delete e.with.require_fly,delete e.with.require_gcloud}(n),".env"===n.with.dot_env_path&&delete n.with.dot_env_path,e.containingDockerfile&&t.startsWith("deploy")&&(n.with.cpu_arch="X64"),"release"===t||"test"===t||"wbfy"===t||"wbfy-merge"===t||t.startsWith("deploy")?e.publicRepo&&(n.with.github_hosted_runner=!0):delete n.with.github_hosted_runner,Object.keys(n.with).length>0?kn(n.with):delete n.with,Object.keys(n.secrets).length>0){var s=kn(n.secrets);delete n.secrets,n.secrets=s}else delete n.secrets}function Ln(e,n,t){var r,i,a,o=S((null!==(r=null===(i=e.on.schedule)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.cron)&&void 0!==r?r:"").split(" ").map(Number),2),s=o[0],c=o[1];if(0!==s&&Number.isInteger(c)){var u=(c+9)%24,l=n<t?n<=u&&u<t:n<=u||u<t;if(l)return;console.log("setSchedule:",e,s,c,l,u,n,t)}else console.log("setSchedule:",e,s,c);var p=1+Math.floor(59*Math.random()),f=n+Math.floor(Math.random()*(t-n)),d="".concat(p," ").concat((f-9+24)%24," * * *");e.on.schedule=[{cron:d}]}function Nn(e,n){return In.apply(this,arguments)}function In(){return(In=k(g().mark((function e(n,t){var i;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=f.dump(n,{lineWidth:-1,noCompatMode:!0,styles:{"!!null":"empty"}}),e.next=3,r.promises.writeFile(t,i);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function An(e){delete e.jobs["add-to-project"]}function Wn(e){return $n.apply(this,arguments)}function $n(){return $n=k(g().mark((function n(t){return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",B.function("generateYarnrcYml",k(g().mark((function n(){var i,a,o,s,c,u,l,p,d,m,h,v,y,b,x,k,w,j;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return u=I("yarn",["--version"],t.dirPath),l=Cn("@yarnpkg/cli",t.dirPath),zn(u)<=zn(l)&&u!==l&&N("yarn",["set","version",l],t.dirPath,1),p=e.join(t.dirPath,".yarn","releases"),n.next=6,r.promises.mkdir(p,{recursive:!0});case 6:return n.t0=T,n.next=9,r.promises.readdir(p);case 9:n.t1=n.sent,d=(0,n.t0)(n.t1),n.prev=11,h=g().mark((function n(){var t;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!(t=m.value).startsWith("yarn-")||t.startsWith("yarn-".concat(l,"."))){n.next=5;break}return n.next=4,L.run((function(){return r.promises.rm(e.join(p,t))}));case 4:console.log("Removed",e.join(p,t));case 5:case"end":return n.stop()}}),n)})),d.s();case 14:if((m=d.n()).done){n.next=18;break}return n.delegateYield(h(),"t2",16);case 16:n.next=14;break;case 18:n.next=23;break;case 20:n.prev=20,n.t3=n.catch(11),d.e(n.t3);case 23:return n.prev=23,d.f(),n.finish(23);case 26:return v=e.resolve(t.dirPath,".yarnrc"),n.next=29,L.run((function(){return r.promises.rm(v,{force:!0})}));case 29:return y=e.resolve(t.dirPath,".yarnrc.yml"),n.t4=f,n.next=33,r.promises.readFile(y,"utf8");case 33:if(n.t5=n.sent,(b=n.t4.load.call(n.t4,n.t5)).defaultSemverRangePrefix="",b.nodeLinker="node-modules",b.nmMode="hardlinks-global",b.enableGlobalCache=!0,x=null!==(i=null===(a=b.plugins)||void 0===a?void 0:a.length)&&void 0!==i?i:0,b.plugins=null!==(o=null===(s=b.plugins)||void 0===s?void 0:s.filter((function(e){return".yarn/plugins/undefined.cjs"!==e.path})))&&void 0!==o?o:[],b.plugins.length===x){n.next=45;break}return k=e.resolve(t.dirPath,".yarnrc","undefined.cjs"),n.next=45,L.run((function(){return r.promises.rm(k,{force:!0})}));case 45:return 0===b.plugins.length&&delete b.plugins,n.next=48,r.promises.writeFile(y,f.dump(b,{lineWidth:-1}));case 48:w=(null!==(c=b.plugins)&&void 0!==c?c:[]).map((function(e){return e.spec})),j=t.containingTypeScript||t.containingTypeScriptInPackages,Jn(t,w,j,"@yarnpkg/plugin-typescript"),Jn(t,w,t.containingSubPackageJsons,"@yarnpkg/plugin-workspace-tools"),N("yarn",["dlx","yarn-plugin-auto-install"],t.dirPath);case 53:case"end":return n.stop()}}),n,null,[[11,20,23,26]])})))));case 1:case"end":return n.stop()}}),n)}))),$n.apply(this,arguments)}function Cn(e,n){var t=I("npm",["show",e,"versions","--json"],n),r=JSON.parse(t);return r[r.length-1]}function Jn(e,n,t,r){t!==n.includes(r)&&N("yarn",["plugin",t?"import":"remove",r],e.dirPath)}function zn(e){var n=S(e.split("."),1)[0];return Number(n)}function Gn(e){return qn.apply(this,arguments)}function qn(){return(qn=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("setupLabels",k(g().mark((function e(){var t,r,i,a,o,s;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Fe){e.next=2;break}return e.abrupt("return");case 2:if(r=Re.getOrgAndName(null!==(t=n.repository)&&void 0!==t?t:""),i=S(r,2),a=i[0],o=i[1],a&&o){e.next=5;break}return e.abrupt("return");case 5:if("WillBooster"===a||"WillBoosterLab"===a){e.next=7;break}return e.abrupt("return");case 7:return e.prev=7,e.next=10,Mn(a,o,"d1: x-easy :hedgehog:","EDE9FE");case 10:return e.next=12,Mn(a,o,"d2: easy :rabbit2:","DDD6FE");case 12:return e.next=14,Mn(a,o,"d3: medium :ox:","C4B5FD");case 14:return e.next=16,Mn(a,o,"d4: hard :squid:","A78BFA");case 16:return e.next=18,Mn(a,o,"d5: x-hard :whale2:","8B5CF6");case 18:return e.next=20,Mn(a,o,"p1: critical :fire::fire::fire:","EF4444");case 20:return e.next=22,Mn(a,o,"p2: urgent :fire::fire:","F87171");case 22:return e.next=24,Mn(a,o,"p3: important :fire:","FCA5A5");case 24:return e.next=26,Mn(a,o,"p4: nice to have :droplet:","FECACA");case 26:return e.next=28,Mn(a,o,"r: blitz","5300bc");case 28:return e.next=30,Mn(a,o,"r: firebase","ffca28");case 30:return e.next=32,Mn(a,o,"r: prisma","0c344b");case 32:return e.next=34,Mn(a,o,"r: react","61dafb");case 34:return e.next=36,Mn(a,o,"r: svelte","ff3e00");case 36:return e.next=38,Mn(a,o,"r: semantic-release","494949");case 38:return e.next=40,Mn(a,o,"ready :rocket:","22C55E");case 40:return e.next=42,Mn(a,o,"review requested :mag:","FBCA04");case 42:return e.next=44,Mn(a,o,"released :bookmark:","6366F1");case 44:return e.next=46,Mn(a,o,"s: 0.5h :clock1230:","F3F4F6");case 46:return e.next=48,Mn(a,o,"s: 1h :clock1:","E5E7EB");case 48:return e.next=50,Mn(a,o,"s: 2h :clock2:","D1D5DB");case 50:return e.next=52,Mn(a,o,"s: 3h :clock3:","9CA3AF");case 52:return e.next=54,Mn(a,o,"s: 5h :clock5:","6B7280");case 54:return e.next=56,Mn(a,o,"s: 8h :clock8:","4B5563");case 56:return e.next=58,Mn(a,o,"s: 13h :clock1:","374151");case 58:return e.next=60,Mn(a,o,"t: build :hammer:","BFDBFE");case 60:return e.next=62,Mn(a,o,"t: chore :broom:","BFDBFE");case 62:return e.next=64,Mn(a,o,"t: ci :construction_worker:","BFDBFE");case 64:return e.next=66,Mn(a,o,"t: docs :memo:","BFDBFE");case 66:return e.next=68,Mn(a,o,"t: feat :sparkles:","BFDBFE");case 68:return e.next=70,Mn(a,o,"t: fix :bug:","BFDBFE");case 70:return e.next=72,Mn(a,o,"t: perf :zap:","BFDBFE");case 72:return e.next=74,Mn(a,o,"t: refactor :recycle:","BFDBFE");case 74:return e.next=76,Mn(a,o,"t: style :lipstick:","BFDBFE");case 76:return e.next=78,Mn(a,o,"t: test :test_tube:","BFDBFE");case 78:return e.next=80,Mn(a,o,"project","24292F");case 80:return e.next=82,Un(a,o,"bug");case 82:return e.next=84,Un(a,o,"documentation");case 84:return e.next=86,Un(a,o,"duplicate");case 86:return e.next=88,Un(a,o,"enhancement");case 88:return e.next=90,Un(a,o,"good first issue");case 90:return e.next=92,Un(a,o,"help wanted");case 92:return e.next=94,Un(a,o,"invalid");case 94:return e.next=96,Un(a,o,"question");case 96:return e.next=98,Un(a,o,"wontfix");case 98:return e.next=100,Un(a,o,"ready");case 100:return e.next=102,Un(a,o,"review requested");case 102:return e.next=104,Un(a,o,"released");case 104:return e.next=106,Un(a,o,"semantic-release");case 106:e.next=111;break;case 108:e.prev=108,e.t0=e.catch(7),console.warn("Skip setupLabels due to:",null!==(s=null===e.t0||void 0===e.t0?void 0:e.t0.stack)&&void 0!==s?s:e.t0);case 111:case"end":return e.stop()}}),e,null,[[7,108]])})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Mn(e,n,t,r){return Hn.apply(this,arguments)}function Hn(){return(Hn=k(g().mark((function e(n,t,r,i){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Te.request("POST /repos/{owner}/{repo}/labels",{owner:n,repo:t,name:r,color:i});case 3:e.next=9;break;case 5:return e.prev=5,e.t0=e.catch(0),e.next=9,Te.request("PATCH /repos/{owner}/{repo}/labels/{name}",{owner:n,repo:t,name:r,color:i});case 9:case"end":return e.stop()}}),e,null,[[0,5]])})))).apply(this,arguments)}function Un(e,n,t){return Yn.apply(this,arguments)}function Yn(){return(Yn=k(g().mark((function e(n,t,r){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Te.request("DELETE /repos/{owner}/{repo}/labels/{name}",{owner:n,repo:t,name:r});case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,null,[[0,5]])})))).apply(this,arguments)}var Kn=["READY_DISCORD_WEBHOOK_URL"];function Vn(e){return Xn.apply(this,arguments)}function Xn(){return(Xn=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",B.function("setupSecrets",k(g().mark((function e(){var t,r,i,a,o,s,c,u,l,p,f,h,v,y,b,x,k,w,j,_,P,O,E;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Fe){e.next=2;break}return e.abrupt("return");case 2:if(r=Re.getOrgAndName(null!==(t=n.repository)&&void 0!==t?t:""),i=S(r,2),a=i[0],o=i[1],a&&o&&"WillBoosterLab"===a){e.next=5;break}return e.abrupt("return");case 5:if(s=d.config().parsed||{},0!==Object.keys(s).length){e.next=8;break}return e.abrupt("return");case 8:e.prev=8,c=T(Kn),e.prev=10,c.s();case 12:if((u=c.n()).done){e.next=23;break}return l=u.value,e.prev=14,e.next=17,Te.request("DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:a,repo:o,secret_name:l});case 17:e.next=21;break;case 19:e.prev=19,e.t0=e.catch(14);case 21:e.next=12;break;case 23:e.next=28;break;case 25:e.prev=25,e.t1=e.catch(10),c.e(e.t1);case 28:return e.prev=28,c.f(),e.finish(28);case 31:return e.next=33,Te.request("GET /repos/{owner}/{repo}/actions/secrets/public-key",{owner:a,repo:o});case 33:return p=e.sent,f=p.data,h=f.key,v=f.key_id,e.next=37,m.ready;case 37:y=0,b=Object.entries(s);case 38:if(!(y<b.length)){e.next=53;break}if(x=S(b[y],2),k=x[0],w=x[1],!n.publicRepo||"GH_BOT_PAT"!==k){e.next=42;break}return e.abrupt("continue",50);case 42:if(n.publicRepo||"PUBLIC_GH_BOT_PAT"!==k){e.next=44;break}return e.abrupt("continue",50);case 44:return j=m.from_base64(h,m.base64_variants.ORIGINAL),_=m.from_string(w),P=m.crypto_box_seal(_,j),O=m.to_base64(P,m.base64_variants.ORIGINAL),e.next=50,Te.request("PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}",{owner:a,repo:o,secret_name:k,encrypted_value:O,key_id:v});case 50:y++,e.next=38;break;case 53:e.next=58;break;case 55:e.prev=55,e.t2=e.catch(8),console.warn("Skip setupSecrets due to:",null!==(E=null===e.t2||void 0===e.t2?void 0:e.t2.stack)&&void 0!==E?E:e.t2);case 58:case"end":return e.stop()}}),e,null,[[8,55],[10,25,28,31],[14,19]])})))));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Zn(e){return Qn.apply(this,arguments)}function Qn(){return(Qn=k(g().mark((function e(n){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function et(e){return nt.apply(this,arguments)}function nt(){return nt=k(g().mark((function t(i){var a,s,c,u,l,p,f,d,m,h,v,y,b,x,k,w,j,_,P,O,E,F,T,R,D,B,L,N;return g().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=e.resolve(i,"package.json"),t.prev=1,l=r.existsSync(a),p={},f={},d={},m=!1,l&&(y=r.readFileSync(a,"utf8"),d=JSON.parse(y),p=null!==(h=d.dependencies)&&void 0!==h?h:{},f=null!==(v=d.devDependencies)&&void 0!==v?v:{},m="module"===d.type),b=[],x=[],t.prev=10,w=e.resolve(i,".releaserc.json"),t.t0=JSON,t.next=15,o.readFile(w,"utf8");case 15:t.t1=t.sent,j=t.t0.parse.call(t.t0,t.t1),b=(null==j?void 0:j.branches)||[],x=(null==j||null===(k=j.plugins)||void 0===k?void 0:k.flat())||[],t.next=23;break;case 21:t.prev=21,t.t2=t.catch(10);case 23:if(!(_="packages"!==e.basename(e.resolve(i,".."))||!r.existsSync(e.resolve(i,"..","..","package.json")))){t.next=28;break}return t.next=27,rt(i,d);case 27:P=t.sent;case 28:return O="",t.prev=29,t.next=32,o.readFile(e.resolve(i,".tool-versions"),"utf8");case 32:E=t.sent,O+=E.trim(),t.next=38;break;case 36:t.prev=36,t.t3=t.catch(29);case 38:F=0,T=[["node","nodejs"],["python","python"]];case 39:if(!(F<T.length)){t.next=54;break}return R=S(T[F],2),D=R[0],B=R[1],t.prev=41,t.next=44,o.readFile(e.resolve(i,".".concat(D,"-version")),"utf8");case 44:L=t.sent,O&&(O+="\n"),O+=B+" "+L.trim(),t.next=51;break;case 49:t.prev=49,t.t4=t.catch(41);case 51:F++,t.next=39;break;case 54:if((N={dirPath:i,root:_,publicRepo:!1===(null===(s=P)||void 0===s?void 0:s.private),referredByOtherRepo:!!d.files,repository:null!==(c=P)&&void 0!==c&&c.full_name?"github:".concat(null===(u=P)||void 0===u?void 0:u.full_name):void 0,isEsmPackage:m,willBoosterConfigs:a.includes("".concat(e.sep,"willbooster-configs")),containingSubPackageJsons:n.sync("packages/**/package.json",{cwd:i}).length>0,containingDockerfile:r.existsSync(e.resolve(i,"Dockerfile"))||r.existsSync(e.resolve(i,"docker-compose.yml")),containingGemfile:r.existsSync(e.resolve(i,"Gemfile")),containingGoMod:r.existsSync(e.resolve(i,"go.mod")),containingPackageJson:r.existsSync(e.resolve(i,"package.json")),containingPoetryLock:r.existsSync(e.resolve(i,"poetry.lock")),containingPomXml:r.existsSync(e.resolve(i,"pom.xml")),containingPubspecYaml:r.existsSync(e.resolve(i,"pubspec.yaml")),containingTemplateYaml:r.existsSync(e.resolve(i,"template.yaml")),containingJavaScript:n.sync("@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:i}).length>0,containingTypeScript:n.sync("@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:i}).length>0,containingJsxOrTsx:n.sync("@(app|src|__tests__)/**/*.{t,j}sx",{cwd:i}).length>0,containingJavaScriptInPackages:n.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}",{cwd:i}).length>0,containingTypeScriptInPackages:n.sync("packages/**/@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}",{cwd:i}).length>0,containingJsxOrTsxInPackages:n.sync("packages/**/@(app|src|__tests__)/**/*.{t,j}sx",{cwd:i}).length>0,depending:{blitz:(p.blitz||f.blitz||"").replace("^","")[0],firebase:!!f["firebase-tools"],playwright:!!f.playwright,prisma:!!p.prisma,reactNative:!!p["react-native"],semanticRelease:!!(f["semantic-release"]||b.length>0||x.length>0),storybook:!!f["@storybook/react"]},release:{branches:b,github:x.includes("@semantic-release/github"),npm:x.includes("@semantic-release/npm")},versionsText:O,packageJson:d}).eslintBase=tt(N),!(N.containingGemfile||N.containingGoMod||N.containingPackageJson||N.containingPoetryLock||N.containingPomXml||N.containingPubspecYaml||N.containingTemplateYaml)){t.next=58;break}return t.abrupt("return",N);case 58:t.next=62;break;case 60:t.prev=60,t.t5=t.catch(1);case 62:case"end":return t.stop()}}),t,null,[[1,60],[10,21],[29,36],[41,49]])}))),nt.apply(this,arguments)}function tt(e){return e.containingTypeScript?e.containingJsxOrTsx?"@willbooster/eslint-config-ts-react":"@willbooster/eslint-config-ts":e.containingJsxOrTsx?"@willbooster/eslint-config-js-react":e.containingJavaScript?"@willbooster/eslint-config-js":void 0}function rt(e,n){return it.apply(this,arguments)}function it(){return it=k(g().mark((function e(n,t){var r,i,a,o,s,c,u,l,p,f,d;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=h.simpleGit(n),e.next=3,s.getRemotes(!0);case 3:if(c=e.sent,u=c.find((function(e){return"origin"===e.name})),"string"!=typeof(l=null!==(r=null==u||null===(i=u.refs)||void 0===i?void 0:i.fetch)&&void 0!==r?r:null==u||null===(a=u.refs)||void 0===a?void 0:a.push)){e.next=12;break}return e.next=9,at(l);case 9:if(!(p=e.sent)){e.next=12;break}return e.abrupt("return",p);case 12:if(!(f="string"==typeof t.repository?t.repository:null===(o=t.repository)||void 0===o?void 0:o.url)){e.next=19;break}return e.next=16,at(f);case 16:if(!(d=e.sent)||"Not Found"===d.message){e.next=19;break}return e.abrupt("return",d);case 19:case"end":return e.stop()}}),e)}))),it.apply(this,arguments)}function at(e){return ot.apply(this,arguments)}function ot(){return(ot=k(g().mark((function e(n){var t,r,i,a,o,s;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=Re.getOrgAndName(n),r=S(t,2),i=r[0],a=r[1],i&&a){e.next=3;break}return e.abrupt("return");case 3:return o={full_name:"".concat(i,"/").concat(a)},e.prev=4,e.next=7,Te.request("GET /repos/{owner}/{repo}",{owner:i,repo:a});case 7:s=e.sent,Object.assign(o,s.data),e.next=13;break;case 11:e.prev=11,e.t0=e.catch(4);case 13:return e.abrupt("return",o);case 14:case"end":return e.stop()}}),e,null,[[4,11]])})))).apply(this,arguments)}function st(){return(st=k(g().mark((function r(){var i,a,o,s;return g().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,t(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;case 2:i=r.sent,D.isVerbose=i.verbose,a=T(i._),r.prev=5,s=g().mark((function t(){var r,a,s,c,u,l,p,f,d,m,h,v,y;return g().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("number"!=typeof(r=o.value)){t.next=3;break}return t.abrupt("return","continue");case 3:return t.next=5,et(r);case 5:if(a=t.sent){t.next=9;break}return console.error("there is no valid package.json in ".concat(r)),t.abrupt("return","continue");case 9:return s=a.containingSubPackageJsons?n.sync("packages/*",{cwd:r}).map((function(n){return e.resolve(r,n)})):[],t.next=12,Promise.all(s.map((function(e){return et(e)})));case 12:if(c=t.sent,u=c.filter((function(e){return!!e})),l=[a].concat(O(u)),D.isVerbose){p=T(l);try{for(p.s();!(f=p.n()).done;)d=f.value,console.info(d)}catch(e){p.e(e)}finally{p.f()}}return t.next=18,W(a);case 18:return t.next=20,Wn(a);case 20:return t.next=22,Promise.all([X(a),ve(a),Ke(a),en(a),tn(a),fn(a),bn(a),vn(a),Fn(a),Gn(a),Vn(a),Zn(a)]);case 22:return t.next=24,L.promiseAll();case 24:m=[],h=T(l),t.prev=26,h.s();case 28:if((v=h.n()).done){t.next=46;break}return(y=v.value).containingTypeScript&&m.push(Sn(y)),t.next=33,xe(y,a);case 33:return t.next=35,L.promiseAll();case 35:if(y.root||y.containingPackageJson){t.next=37;break}return t.abrupt("continue",44);case 37:return t.next=39,ln(y);case 39:return t.next=41,We(y,a,i.skipDeps);case 41:m.push(tn(y)),(y.containingTypeScript||y.containingTypeScriptInPackages)&&m.push(_n(y,a)),(y.containingJavaScript||y.containingJavaScriptInPackages||y.containingTypeScript||y.containingTypeScriptInPackages)&&(a.willBoosterConfigs||m.push(fe(y,a)),m.push(ce(y)));case 44:t.next=28;break;case 46:t.next=51;break;case 48:t.prev=48,t.t0=t.catch(26),h.e(t.t0);case 51:return t.prev=51,h.f(),t.finish(51);case 54:return t.next=56,Promise.all(m);case 56:return t.next=58,L.promiseAll();case 58:N("yarn",["cleanup"],r),N("yarn",["install"],r);case 60:case"end":return t.stop()}}),t,null,[[26,48,51,54]])})),a.s();case 8:if((o=a.n()).done){r.next=15;break}return r.delegateYield(s(),"t0",10);case 10:if("continue"!==r.t0){r.next=13;break}return r.abrupt("continue",13);case 13:r.next=8;break;case 15:r.next=20;break;case 17:r.prev=17,r.t1=r.catch(5),a.e(r.t1);case 20:return r.prev=20,a.f(),r.finish(20);case 23:case"end":return r.stop()}}),r,null,[[5,17,20,23]])})))).apply(this,arguments)}(function(){return st.apply(this,arguments)})().then();
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "wbfy",
3
- "version": "1.73.1",
3
+ "version": "1.75.0",
4
4
  "description": "A tool for applying WillBooster's conventional configures to npm packages",
5
5
  "repository": "github:WillBooster/wbfy",
6
6
  "license": "Apache-2.0",
7
7
  "author": "WillBooster Inc.",
8
- "bin": "./bin/index.cjs",
8
+ "bin": "./bin/wbfy",
9
9
  "files": [
10
10
  "bin/",
11
11
  "dist/"
12
12
  ],
13
13
  "scripts": {
14
- "build": "node esbuild.js",
14
+ "build": "build-ts build -t app",
15
15
  "cleanup": "yarn format && yarn lint-fix",
16
16
  "format": "sort-package-json && yarn prettify",
17
17
  "_postinstall": "husky install",
@@ -21,9 +21,9 @@
21
21
  "postpack": "pinst --enable",
22
22
  "prettify": "prettier --cache --color --write \"**/{.*/,}*.{cjs,css,cts,htm,html,js,json,json5,jsx,md,mjs,mts,scss,ts,tsx,vue,yaml,yml}\" \"!**/test-fixtures/**\"",
23
23
  "release": "yarn build && semantic-release",
24
- "start": "dotenv -- node -r esbuild-register src",
24
+ "start": "dotenv -- build-ts run src --",
25
25
  "start-prod": "yarn build && yarn wbfy",
26
- "test": "yarn jest --color __tests__",
26
+ "test": "vitest __tests__",
27
27
  "test/ci-setup": "cd .. && pwd && rm -Rf test-fixtures-for-wbfy && git clone https://github.com/WillBooster/test-fixtures-for-wbfy.git",
28
28
  "typecheck": "tsc --noEmit --Pretty"
29
29
  },
@@ -33,6 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@octokit/core": "4.1.0",
36
+ "@willbooster/shared-lib": "1.7.1",
36
37
  "deepmerge": "4.2.2",
37
38
  "dotenv": "16.0.3",
38
39
  "dotenv-cli": "6.0.0",
@@ -40,7 +41,7 @@
40
41
  "js-yaml": "4.1.0",
41
42
  "libsodium-wrappers": "0.7.10",
42
43
  "lodash.clonedeep": "4.5.0",
43
- "minimal-promise-pool": "2.1.1",
44
+ "minimal-promise-pool": "2.1.2",
44
45
  "simple-git": "3.15.1",
45
46
  "yargs": "17.6.2"
46
47
  },
@@ -53,24 +54,23 @@
53
54
  "@types/lodash.clonedeep": "4.5.7",
54
55
  "@types/micromatch": "4.0.2",
55
56
  "@types/node": "18.11.18",
56
- "@types/yargs": "17.0.18",
57
- "@typescript-eslint/eslint-plugin": "5.47.1",
58
- "@typescript-eslint/parser": "5.47.1",
57
+ "@types/yargs": "17.0.19",
58
+ "@typescript-eslint/eslint-plugin": "5.48.0",
59
+ "@typescript-eslint/parser": "5.48.0",
59
60
  "@willbooster/eslint-config-ts": "10.0.8",
60
61
  "@willbooster/prettier-config": "9.1.1",
61
- "@willbooster/renovate-config": "9.4.2",
62
+ "@willbooster/renovate-config": "9.5.0",
62
63
  "@yarnpkg/core": "4.0.0-rc.34",
64
+ "build-ts": "3.2.1",
63
65
  "conventional-changelog-conventionalcommits": "5.0.0",
64
- "esbuild": "0.16.12",
65
- "esbuild-register": "3.4.2",
66
- "eslint": "8.30.0",
67
- "eslint-config-prettier": "8.5.0",
66
+ "eslint": "8.31.0",
67
+ "eslint-config-prettier": "8.6.0",
68
68
  "eslint-import-resolver-typescript": "3.5.2",
69
69
  "eslint-plugin-import": "2.26.0",
70
70
  "eslint-plugin-sort-class-members": "1.16.0",
71
71
  "eslint-plugin-sort-destructure-keys": "1.4.0",
72
72
  "eslint-plugin-unicorn": "45.0.2",
73
- "husky": "8.0.2",
73
+ "husky": "8.0.3",
74
74
  "jest": "29.3.1",
75
75
  "lint-staged": "13.1.0",
76
76
  "micromatch": "4.0.5",
@@ -78,8 +78,9 @@
78
78
  "prettier": "2.8.1",
79
79
  "semantic-release": "19.0.5",
80
80
  "sort-package-json": "2.1.0",
81
- "type-fest": "3.5.0",
82
- "typescript": "4.9.4"
81
+ "type-fest": "3.5.1",
82
+ "typescript": "4.9.4",
83
+ "vitest": "0.26.3"
83
84
  },
84
85
  "packageManager": "yarn@4.0.0-rc.34",
85
86
  "engines": {
package/bin/index.cjs DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- require('../dist/index.min.cjs');
@@ -1,279 +0,0 @@
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
- `)+`
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
-
7
- [*]
8
- charset = utf-8
9
- end_of_line = lf
10
- insert_final_newline = true
11
- trim_trailing_whitespace = true
12
-
13
- ${X(x.codeWith2IndentSize)}
14
- indent_size = 2
15
- indent_style = space
16
-
17
- ${X(x.codeWith4IndentSize)}
18
- indent_size = 4
19
- indent_style = space
20
-
21
- ${X(x.codeWith8IndentSize)}
22
- indent_size = 8
23
- indent_style = space
24
-
25
- ${X(x.markdownLike)}
26
- max_line_length = off
27
- trim_trailing_whitespace = false
28
-
29
- [{Makefile,*.mk}]
30
- indent_style = tab
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
-
33
-
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
-
39
- `).trim()+`
40
- `}catch{}},getHeadUserContent(e){let t=e.indexOf(this.separatorPrefix);return t>=0?e.slice(0,e.indexOf(`
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
- 3rd-party/
45
- @types/
46
- __generated__/
47
- android/
48
- ios/
49
- no-format/
50
- test-fixtures/
51
- *.config.*js
52
- *.d.ts
53
- *.min.*js
54
- .yarn/
55
- .pnp.js
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
-
58
- *.vcproj text eol=crlf
59
-
60
- ${[...x.codeWith2IndentSize,...x.codeWith4IndentSize,...x.markdownLike].map(e=>`*.${e} text eol=lf`).join(`
61
- `)}
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
- .devcontainer/
64
- .venv/
65
- dist/
66
- temp/
67
- Icon[\r]
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)}
69
- `),e.containingPackageJson&&o.push("node"),e.containingPomXml&&(o.push("maven"),a+=`.idea/google-java-format.xml
70
- `),e.containingPubspecYaml&&(o.push("flutter","AndroidStudio","ruby"),a+=`.flutter-plugins-dependencies
71
- android/key.properties
72
- ios/.bundle
73
- .idea/runConfigurations.xml
74
- `),e.containingTemplateYaml&&(a+=`.aws-sam/
75
- packaged.yaml
76
- `),e.containingPoetryLock&&(o.push("python"),a+=`.venv/
77
- `),t.depending.blitz&&(o.push("nextjs"),a+=`.blitz/
78
- .blitz**
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:`
89
- if [ $(git branch --show-current) = "main" ] && [ $(git config user.email) != "exkazuu@gmail.com" ]; then
90
- echo "************************************************"
91
- echo "*** Don't push main branch directly. Use PR! ***"
92
- echo "************************************************"
93
- exit 1
94
- fi
95
-
96
- yarn typecheck
97
- `.trim(),postMerge:`
98
- changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
99
-
100
- run_if_changed() {
101
- if echo "$changed_files" | grep --quiet -E "$1"; then
102
- eval "$2"
103
- fi
104
- }
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}
106
-
107
- ${s.join(`
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"?>
109
- <project version="4">
110
- <component name="ProjectTasksOptions">
111
- <TaskOptions isEnabled="true">
112
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
113
- <option name="checkSyntaxErrors" value="false" />
114
- <option name="description" />
115
- <option name="exitCodeBehavior" value="ERROR" />
116
- <option name="fileExtension" value="ts" />
117
- <option name="immediateSync" value="false" />
118
- <option name="name" value="Prettier (.ts)" />
119
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
120
- <option name="outputFilters">
121
- <array />
122
- </option>
123
- <option name="outputFromStdout" value="false" />
124
- <option name="program" value="yarn" />
125
- <option name="runOnExternalChanges" value="false" />
126
- <option name="scopeName" value="Project Files" />
127
- <option name="trackOnlyRoot" value="false" />
128
- <option name="workingDir" value="$ProjectFileDir$" />
129
- <envs />
130
- </TaskOptions>
131
- <TaskOptions isEnabled="true">
132
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
133
- <option name="checkSyntaxErrors" value="false" />
134
- <option name="description" />
135
- <option name="exitCodeBehavior" value="ERROR" />
136
- <option name="fileExtension" value="tsx" />
137
- <option name="immediateSync" value="false" />
138
- <option name="name" value="Prettier (.tsx)" />
139
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
140
- <option name="outputFilters">
141
- <array />
142
- </option>
143
- <option name="outputFromStdout" value="false" />
144
- <option name="program" value="yarn" />
145
- <option name="runOnExternalChanges" value="false" />
146
- <option name="scopeName" value="Project Files" />
147
- <option name="trackOnlyRoot" value="false" />
148
- <option name="workingDir" value="$ProjectFileDir$" />
149
- <envs />
150
- </TaskOptions>
151
- <TaskOptions isEnabled="true">
152
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
153
- <option name="checkSyntaxErrors" value="false" />
154
- <option name="description" />
155
- <option name="exitCodeBehavior" value="ERROR" />
156
- <option name="fileExtension" value="js" />
157
- <option name="immediateSync" value="false" />
158
- <option name="name" value="Prettier (.js)" />
159
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
160
- <option name="outputFilters">
161
- <array />
162
- </option>
163
- <option name="outputFromStdout" value="false" />
164
- <option name="program" value="yarn" />
165
- <option name="runOnExternalChanges" value="false" />
166
- <option name="scopeName" value="Project Files" />
167
- <option name="trackOnlyRoot" value="false" />
168
- <option name="workingDir" value="$ProjectFileDir$" />
169
- <envs />
170
- </TaskOptions>
171
- <TaskOptions isEnabled="true">
172
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
173
- <option name="checkSyntaxErrors" value="false" />
174
- <option name="description" />
175
- <option name="exitCodeBehavior" value="ERROR" />
176
- <option name="fileExtension" value="json" />
177
- <option name="immediateSync" value="false" />
178
- <option name="name" value="Prettier (.json)" />
179
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
180
- <option name="outputFilters">
181
- <array />
182
- </option>
183
- <option name="outputFromStdout" value="false" />
184
- <option name="program" value="yarn" />
185
- <option name="runOnExternalChanges" value="false" />
186
- <option name="scopeName" value="Project Files" />
187
- <option name="trackOnlyRoot" value="false" />
188
- <option name="workingDir" value="$ProjectFileDir$" />
189
- <envs />
190
- </TaskOptions>
191
- <TaskOptions isEnabled="true">
192
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
193
- <option name="checkSyntaxErrors" value="false" />
194
- <option name="description" />
195
- <option name="exitCodeBehavior" value="ERROR" />
196
- <option name="fileExtension" value="md" />
197
- <option name="immediateSync" value="false" />
198
- <option name="name" value="Prettier (.md)" />
199
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
200
- <option name="outputFilters">
201
- <array />
202
- </option>
203
- <option name="outputFromStdout" value="false" />
204
- <option name="program" value="yarn" />
205
- <option name="runOnExternalChanges" value="false" />
206
- <option name="scopeName" value="Project Files" />
207
- <option name="trackOnlyRoot" value="false" />
208
- <option name="workingDir" value="$ProjectFileDir$" />
209
- <envs />
210
- </TaskOptions>
211
- <TaskOptions isEnabled="true">
212
- <option name="arguments" value="node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$" />
213
- <option name="checkSyntaxErrors" value="false" />
214
- <option name="description" />
215
- <option name="exitCodeBehavior" value="ERROR" />
216
- <option name="fileExtension" value="html" />
217
- <option name="immediateSync" value="false" />
218
- <option name="name" value="Prettier (.html)" />
219
- <option name="output" value="$FilePathRelativeToProjectRoot$" />
220
- <option name="outputFilters">
221
- <array />
222
- </option>
223
- <option name="outputFromStdout" value="false" />
224
- <option name="program" value="yarn" />
225
- <option name="runOnExternalChanges" value="false" />
226
- <option name="scopeName" value="Project Files" />
227
- <option name="trackOnlyRoot" value="false" />
228
- <option name="workingDir" value="$ProjectFileDir$" />
229
- <envs />
230
- </TaskOptions>
231
- </component>
232
- </project>
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):""}
237
- const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')${n});
238
- if (filteredFiles.length === 0) return [];
239
- const commands = [\`${t}prettier --cache --write \${filteredFiles.join(' ')}\`];
240
- if (filteredFiles.some(file => file.endsWith('package.json'))) {
241
- commands.push('${t}sort-package-json');
242
- }
243
- return commands;
244
- },`),e.containingPubspecYaml&&i.push(`
245
- './{lib,test,test_driver}/**/*.dart': files => {
246
- const filteredFiles = files.filter(file => !file.includes('generated'))
247
- .filter(file => !file.endsWith('.freezed.dart') && !file.endsWith('.g.dart'));
248
- if (filteredFiles.length === 0) return [];
249
- return [\`flutter format \${filteredFiles.join(' ')}\`];
250
- },`),e.containingPoetryLock&&i.push(`
251
- './**/*.py': [
252
- 'poetry run isort --profile black --filter-files',
253
- 'poetry run black',
254
- 'poetry run flake8'
255
- ],`);let a=`${e.containingJavaScript||e.containingTypeScript?"const micromatch = require('micromatch');":""}
256
-
257
- module.exports = {${i.join("")}
258
- };
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=`
260
- 3rd-party/
261
- android/
262
- ios/
263
- no-format/
264
- test-fixtures/
265
- *.d.ts
266
- *.min.js
267
- .yarn/
268
- .pnp.js
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=`
270
- android/app/
271
- ios/Runner/Assets.xcassets/
272
- pubspec.yaml
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=`[![${l}](https://github.com/${n}/actions/workflows/${s}/badge.svg)](https://github.com/${n}/actions/workflows/${s})`;i=pt(e,i,g,`.github/workflows/${s}`)}await p.run(()=>h.generateFile(t,i))})}var mi="[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)";function 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]===`
274
- `){r=!0,t=`${t.slice(0,o+1)}${i}
275
- ${t.slice(o+1)}`;break}return r||(t=`${t}
276
- ${i}
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();
279
- //# sourceMappingURL=index.min.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/generators/asdf.ts", "../src/options.ts", "../src/logger.ts", "../src/utils/promisePool.ts", "../src/utils/spawnUtil.ts", "../src/generators/editorconfig.ts", "../src/utils/extensions.ts", "../src/utils/fsUtil.ts", "../src/generators/eslintignore.ts", "../src/utils/ignoreFileUtil.ts", "../src/generators/eslintrc.ts", "../src/utils/mergeUtil.ts", "../src/generators/gitattributes.ts", "../src/generators/gitignore.ts", "../src/generators/huskyrc.ts", "../src/generators/packageJson.ts", "../src/utils/eslintUtil.ts", "../src/utils/githubUtil.ts", "../src/utils/srcDirectories.ts", "../src/generators/idea.ts", "../src/generators/lintstagedrc.ts", "../src/generators/prettierignore.ts", "../src/generators/readme.ts", "../src/generators/releaserc.ts", "../src/generators/renovaterc.ts", "../src/generators/tsconfig.ts", "../src/utils/objectUtil.ts", "../src/generators/workflow.ts", "../src/generators/yarnrc.ts", "../src/github/label.ts", "../src/github/secret.ts", "../src/github/settings.ts", "../src/packageConfig.ts"],
4
- "sourcesContent": ["import path from 'node:path';\n\nimport glob from 'glob';\nimport yargs from 'yargs';\n\nimport { generateVersionConfigs } from './generators/asdf';\nimport { generateEditorconfig } from './generators/editorconfig';\nimport { generateEslintignore } from './generators/eslintignore';\nimport { generateEslintrc } from './generators/eslintrc';\nimport { generateGitattributes } from './generators/gitattributes';\nimport { generateGitignore } from './generators/gitignore';\nimport { generateHuskyrc } from './generators/huskyrc';\nimport { generateIdeaSettings } from './generators/idea';\nimport { generateLintstagedrc } from './generators/lintstagedrc';\nimport { generatePackageJson } from './generators/packageJson';\nimport { generatePrettierignore } from './generators/prettierignore';\nimport { generateReadme } from './generators/readme';\nimport { generateReleaserc } from './generators/releaserc';\nimport { generateRenovateJson } from './generators/renovaterc';\nimport { generateTsconfig } from './generators/tsconfig';\nimport { generateWorkflow } from './generators/workflow';\nimport { generateYarnrcYml } from './generators/yarnrc';\nimport { setupLabels } from './github/label';\nimport { setupSecrets } from './github/secret';\nimport { setupSettings } from './github/settings';\nimport { options } from './options';\nimport { getPackageConfig, PackageConfig } from './packageConfig';\nimport { promisePool } from './utils/promisePool';\nimport { spawnSync } from './utils/spawnUtil';\n\nasync function main(): Promise<void> {\n const argv = await yargs(process.argv.slice(2))\n .command('wbfy <paths...>', 'Generate/update project files for WillBooster')\n .demandCommand(1)\n .alias('d', 'skipDeps')\n .boolean('skipDeps')\n .default('skipDeps', false)\n .describe('skipDeps', 'Skip dependency installation')\n .alias('v', 'verbose')\n .boolean('verbose')\n .default('verbose', false).argv;\n options.isVerbose = argv.verbose;\n\n for (const rootDirPath of argv._) {\n if (typeof rootDirPath === 'number') continue;\n\n const rootConfig = await getPackageConfig(rootDirPath);\n if (!rootConfig) {\n console.error(`there is no valid package.json in ${rootDirPath}`);\n continue;\n }\n\n const subDirPaths = rootConfig.containingSubPackageJsons\n ? glob.sync('packages/*', { cwd: rootDirPath }).map((subDirPath) => path.resolve(rootDirPath, subDirPath))\n : [];\n const nullableSubPackageConfigs = await Promise.all(subDirPaths.map((subDirPath) => getPackageConfig(subDirPath)));\n const subPackageConfigs = nullableSubPackageConfigs.filter((config) => !!config) as PackageConfig[];\n const allPackageConfigs = [rootConfig, ...subPackageConfigs];\n\n if (options.isVerbose) {\n for (const config of allPackageConfigs) {\n console.info(config);\n }\n }\n\n // Install tools via asdf at first\n await generateVersionConfigs(rootConfig);\n // Install yarn berry\n await generateYarnrcYml(rootConfig);\n await Promise.all([\n generateEditorconfig(rootConfig),\n generateGitattributes(rootConfig),\n generateHuskyrc(rootConfig),\n generateIdeaSettings(rootConfig),\n generateLintstagedrc(rootConfig),\n generateReadme(rootConfig),\n generateRenovateJson(rootConfig),\n generateReleaserc(rootConfig),\n generateWorkflow(rootConfig),\n setupLabels(rootConfig),\n setupSecrets(rootConfig),\n setupSettings(rootConfig),\n ]);\n await promisePool.promiseAll();\n\n const promises: Promise<void>[] = [];\n for (const config of allPackageConfigs) {\n await generateGitignore(config, rootConfig);\n await promisePool.promiseAll();\n if (!config.root && !config.containingPackageJson) {\n continue;\n }\n await generatePrettierignore(config);\n await generatePackageJson(config, rootConfig, argv.skipDeps);\n\n promises.push(generateLintstagedrc(config));\n if (config.containingTypeScript || config.containingTypeScriptInPackages) {\n promises.push(generateTsconfig(config, rootConfig));\n }\n if (\n config.containingJavaScript ||\n config.containingJavaScriptInPackages ||\n config.containingTypeScript ||\n config.containingTypeScriptInPackages\n ) {\n if (!rootConfig.willBoosterConfigs) {\n promises.push(generateEslintrc(config, rootConfig));\n }\n promises.push(generateEslintignore(config));\n }\n }\n await Promise.all(promises);\n await promisePool.promiseAll();\n\n spawnSync('yarn', ['cleanup'], rootDirPath);\n // 'yarn install' should be after `yarn cleanup` because yarn berry generates yarn.lock\n // corresponding to the contents of dependant sub-package in monorepo\n spawnSync('yarn', ['install'], rootDirPath);\n }\n}\n\nmain().then();\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { promisePool } from '../utils/promisePool';\nimport { spawnSync, spawnSyncWithStringResult } from '../utils/spawnUtil';\n\nexport async function generateVersionConfigs(config: PackageConfig): Promise<void> {\n return logger.function('generateVersionConfigs', async () => {\n await core(config);\n });\n}\n\nconst POETRY_VERSION = '1.3.1';\nconst PYTHON_VERSION = '3.9.16';\nconst JAVA_VERSION = 'adoptopenjdk-17.0.5+8';\n\nasync function core(config: PackageConfig): Promise<void> {\n if (!config.versionsText) return;\n\n const lines: string[] = [];\n for (const versionText of config.versionsText.trim().split('\\n')) {\n const line = versionText.trim();\n const [name, version] = line.split(/\\s+/);\n if (!name || !version) continue;\n if (name === 'nodejs') {\n await promisePool.run(() => fs.promises.writeFile(path.resolve(config.dirPath, '.node-version'), version));\n } else if (name === 'python') {\n await promisePool.run(() => fs.promises.writeFile(path.resolve(config.dirPath, '.python-version'), version));\n } else {\n lines.push(line);\n }\n }\n if (config.containingPoetryLock) {\n updateLine(`poetry ${POETRY_VERSION}`, 0, lines);\n // Don't update python in .python-version automatically\n if (!fs.existsSync(path.resolve(config.dirPath, '.python-version'))) {\n updateLine(`python ${PYTHON_VERSION}`, 0, lines);\n }\n }\n if (config.depending.firebase) {\n updateLine(`java ${JAVA_VERSION}`, 0, lines);\n }\n if (config.containingPackageJson) {\n const version = spawnSyncWithStringResult('npm', ['show', 'yarn', 'version'], config.dirPath);\n updateLine(`yarn ${version}`, lines.length, lines);\n }\n\n const toolVersionsPath = path.resolve(config.dirPath, '.tool-versions');\n await (lines.length > 0\n ? promisePool.run(() => fs.promises.writeFile(toolVersionsPath, lines.join('\\n') + '\\n'))\n : promisePool.run(() => fs.promises.rm(toolVersionsPath, { force: true })));\n await promisePool.promiseAll();\n spawnSync('asdf', ['plugin', 'update', '--all'], config.dirPath);\n spawnSync('asdf', ['install'], config.dirPath);\n}\n\nfunction updateLine(line: string, insertionIndex: number, lines: string[]): void {\n const [toolName] = line.split(' ');\n const index = lines.findIndex((l) => l.split(/\\s+/)[0] === toolName);\n if (index >= 0) {\n lines[index] = line;\n } else {\n lines.splice(insertionIndex, 0, line);\n }\n}\n", "class Options {\n isVerbose: boolean;\n\n constructor() {\n this.isVerbose = false;\n }\n}\n\nexport const options = new Options();\n", "import { options } from './options';\n\nclass Logger {\n async function(name: string, func: () => Promise<void>): Promise<void> {\n if (options.isVerbose) {\n console.info(`--------- ${name} start ---------`);\n }\n await func();\n if (options.isVerbose) {\n console.info(`---------- ${name} end ----------`);\n }\n }\n}\n\nexport const logger = new Logger();\n", "import { PromisePool } from 'minimal-promise-pool';\n\nexport const promisePool = new PromisePool();\n", "import child_process, { SpawnSyncOptions } from 'node:child_process';\n\nexport function spawnSync(command: string, args: string[], cwd: string, retry = 0): void {\n do {\n const [newCmd, newArgs, options] = getSpawnSyncArgs(command, args, cwd);\n console.log(`$ ${newCmd} ${newArgs.join(' ')} at ${options.cwd}`);\n const ret = child_process.spawnSync(newCmd, newArgs, options);\n if (ret.status === 0) break;\n } while (--retry >= 0);\n}\n\nexport function spawnSyncWithStringResult(command: string, args: string[], cwd: string): string {\n const [newCmd, newArgs, options] = getSpawnSyncArgs(command, args, cwd);\n options.stdio = 'pipe';\n const proc = child_process.spawnSync(newCmd, newArgs, options);\n const error = proc.stderr.toString().trim();\n if (error) {\n console.error(`${newCmd} [${newArgs.map((s) => `\"${s}\"`)}] caused the following error:\\n ${error}`);\n }\n return proc.stdout.toString().trim();\n}\n\nexport function getSpawnSyncArgs(command: string, args: string[], cwd: string): [string, string[], SpawnSyncOptions] {\n const env = { ...process.env };\n // Remove berry from PATH\n if (env.PATH && env.BERRY_BIN_FOLDER) {\n env.PATH = env.PATH.replace(`${env.BERRY_BIN_FOLDER}:`, '');\n }\n\n if (env.ASDF_DIR) {\n args = ['-l', '-c', `. ${env.ASDF_DIR}/asdf.sh && ${command} ${args.join(' ')}`];\n command = 'bash';\n }\n return [\n command,\n args,\n {\n cwd,\n env,\n shell: false,\n stdio: 'inherit',\n },\n ];\n}\n", "import path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { extensions } from '../utils/extensions';\nimport { FsUtil } from '../utils/fsUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst newContent = `root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n${generateExtensions(extensions.codeWith2IndentSize)}\nindent_size = 2\nindent_style = space\n\n${generateExtensions(extensions.codeWith4IndentSize)}\nindent_size = 4\nindent_style = space\n\n${generateExtensions(extensions.codeWith8IndentSize)}\nindent_size = 8\nindent_style = space\n\n${generateExtensions(extensions.markdownLike)}\nmax_line_length = off\ntrim_trailing_whitespace = false\n\n[{Makefile,*.mk}]\nindent_style = tab\n`;\n\nexport async function generateEditorconfig(config: PackageConfig): Promise<void> {\n return logger.function('generateEditorconfig', async () => {\n const filePath = path.resolve(config.dirPath, '.editorconfig');\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n\nfunction generateExtensions(extensions: string[]): string {\n return extensions.length > 1 ? `[*.{${extensions.join(',')}}]` : `[*.${extensions[0]}]`;\n}\n", "export const extensions = {\n codeWith2IndentSize: [\n 'cjs',\n 'mjs',\n 'js',\n 'jsx',\n 'cts',\n 'mts',\n 'ts',\n 'tsx',\n 'json',\n 'json5',\n 'cpp',\n 'dart',\n 'htm',\n 'html',\n 'pu',\n 'puml',\n 'rb',\n 'vue',\n 'yaml',\n 'yml',\n ].sort(),\n codeWith4IndentSize: ['go', 'gradle', 'py'].sort(),\n codeWith8IndentSize: ['sh'].sort(),\n markdownLike: ['md'].sort(),\n eslint: ['cjs', 'mjs', 'js', 'cts', 'mts', 'ts', 'tsx', 'jsx'].sort(),\n prettier: [\n 'cjs',\n 'mjs',\n 'js',\n 'jsx',\n 'cts',\n 'mts',\n 'ts',\n 'tsx',\n 'json',\n 'json5',\n 'css',\n 'htm',\n 'html',\n 'md',\n 'scss',\n 'vue',\n 'yaml',\n 'yml',\n ].sort(),\n};\n", "import fsp from 'node:fs/promises';\n\nexport const FsUtil = {\n async readFileIgnoringError(filePath: string): Promise<string | undefined> {\n try {\n return await fsp.readFile(filePath, 'utf8');\n } catch {\n // do nothing\n }\n },\n async generateFile(filePath: string, content: string): Promise<void> {\n await fsp.writeFile(filePath, content);\n console.log(`Generated ${filePath}`);\n },\n};\n", "import path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { ignoreFileUtil } from '../utils/ignoreFileUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst commonContent = `\n3rd-party/\n@types/\n__generated__/\nandroid/\nios/\nno-format/\ntest-fixtures/\n*.config.*js\n*.d.ts\n*.min.*js\n.yarn/\n.pnp.js\n`;\n\nexport async function generateEslintignore(config: PackageConfig): Promise<void> {\n return logger.function('generateEslintignore', async () => {\n const filePath = path.resolve(config.dirPath, '.eslintignore');\n const content = (await FsUtil.readFileIgnoringError(filePath)) ?? '';\n const headUserContent = ignoreFileUtil.getHeadUserContent(content) + commonContent;\n const tailUserContent = ignoreFileUtil.getTailUserContent(content);\n\n const gitignoreFilePath = path.resolve(config.dirPath, '.gitignore');\n const gitignoreContent = (await ignoreFileUtil.readGitignoreWithoutSeparators(gitignoreFilePath)) || '';\n\n const newContent = headUserContent + commonContent + gitignoreContent + tailUserContent;\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n", "import fs from 'node:fs';\n\nconst userContentHeader = '# Project-specific settings';\nconst userContentHeaderRegex = /# Project-specific settings[^\\n]*\\n/gm;\nconst separator = '# Generated by wbfy';\nconst separatorPrefix = '# Generated by ';\nconst defaultHeadUserContent = `${userContentHeader} (head)\n\n\n${separator}\n`;\nconst defaultTailUserContent = `\n${userContentHeader} (tail)\n`;\n\nexport const ignoreFileUtil = {\n separator,\n separatorPrefix,\n defaultHeadUserContent,\n defaultTailUserContent,\n async readGitignoreWithoutSeparators(filePath: string): Promise<string | undefined> {\n try {\n let content = await fs.promises.readFile(filePath, 'utf8');\n const lastHeaderIndex = getIndexOfTailUserContentHeader(content);\n if (lastHeaderIndex > 0) {\n content = content.slice(0, lastHeaderIndex - 1);\n }\n return (\n content\n .replace(userContentHeaderRegex, '')\n .replace(/# Generated by [^\\n]*\\n/gm, '')\n .replace(/\\r?\\n\\r?\\n(\\r?\\n)+/gm, '\\n\\n')\n .trim() + '\\n'\n );\n } catch {\n // do nothing\n }\n },\n getHeadUserContent(content: string): string {\n const index = content.indexOf(this.separatorPrefix);\n if (index >= 0) {\n return content\n .slice(0, content.indexOf('\\n', index) + 1)\n .replace(userContentHeaderRegex, `${userContentHeader} (head)\\n`);\n }\n return defaultHeadUserContent;\n },\n getTailUserContent(content: string): string | undefined {\n const lastHeaderIndex = getIndexOfTailUserContentHeader(content);\n if (lastHeaderIndex > 0) {\n return content.slice(lastHeaderIndex - 1);\n }\n return defaultTailUserContent;\n },\n async isBerryZeroInstallEnabled(filePath: string): Promise<boolean> {\n try {\n const content = await fs.promises.readFile(filePath, 'utf8');\n return content.includes('\\n!.yarn/cache');\n } catch {\n return false;\n }\n },\n};\n\nfunction getIndexOfTailUserContentHeader(content: string): number {\n const index = content.indexOf(userContentHeader);\n const lastIndex = content.lastIndexOf(userContentHeader);\n return lastIndex > index ? lastIndex : -1;\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { combineMerge } from '../utils/mergeUtil';\nimport { promisePool } from '../utils/promisePool';\n\nexport async function generateEslintrc(config: PackageConfig, rootConfig: PackageConfig): Promise<void> {\n return logger.function('generateEslintrc', async () => {\n // TODO: support Blitz v2\n if (rootConfig.depending.blitz === '2') return;\n\n const bases = [];\n if (config.eslintBase) {\n bases.push(config.eslintBase);\n }\n if (config !== rootConfig) {\n bases.push('../../.eslintrc.json');\n }\n let newSettings: any = { root: true, extends: bases };\n\n const filePath = path.resolve(config.dirPath, '.eslintrc.json');\n try {\n const oldContent = await fs.promises.readFile(filePath, 'utf8');\n const oldSettings = JSON.parse(oldContent);\n if (oldSettings.extends) {\n oldSettings.extends = oldSettings.extends.filter(\n (ext: string) => !ext.startsWith('@willbooster/') && ext !== '../../.eslintrc.json'\n );\n }\n if (bases.length === 0) {\n oldSettings.extends = [];\n }\n const newExtends = newSettings.extends;\n newSettings.extends = oldSettings.extends;\n oldSettings.extends = newExtends;\n newSettings = merge.all([newSettings, oldSettings, newSettings], { arrayMerge: combineMerge });\n if (config.depending.blitz === '0') {\n addExtensionToHead(newSettings, 'blitz');\n } else if (config.depending.blitz === '2') {\n addExtensionToHead(newSettings, '@blitzjs/next/eslint');\n }\n } catch {\n // do nothing\n }\n const newContent = JSON.stringify(newSettings);\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n\nfunction addExtensionToHead(newSettings: any, extension: string): void {\n newSettings.extends = [extension, ...newSettings.extends.filter((e: string) => e !== extension)];\n}\n", "import merge from 'deepmerge';\n\nexport function overwriteMerge(destinationArray: any[], sourceArray: any[]): any[] {\n return sourceArray;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function combineMerge(target: any[], source: any[], options: any): any[] {\n const destination = [...target];\n\n for (const [index, item] of source.entries()) {\n if (destination[index] === undefined) {\n destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);\n } else if (options.isMergeableObject(item)) {\n destination[index] = merge(target[index], item, options);\n } else if (!target.includes(item)) {\n destination.push(item);\n }\n }\n return destination;\n}\n", "import path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { extensions } from '../utils/extensions';\nimport { FsUtil } from '../utils/fsUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst newContent = `* text=auto\n\n*.vcproj text eol=crlf\n\n${[...extensions.codeWith2IndentSize, ...extensions.codeWith4IndentSize, ...extensions.markdownLike]\n .map((ext) => `*.${ext} text eol=lf`)\n .join('\\n')}\n`;\n\nexport async function generateGitattributes(config: PackageConfig): Promise<void> {\n return logger.function('generateGitattributes', async () => {\n const filePath = path.resolve(config.dirPath, '.gitattributes');\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n", "import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { options } from '../options';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { ignoreFileUtil } from '../utils/ignoreFileUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst defaultNames = ['windows', 'macos', 'linux', 'jetbrains', 'visualstudiocode', 'emacs', 'vim', 'yarn'];\n\nconst commonContent = `\n.devcontainer/\n.venv/\ndist/\ntemp/\nIcon[\\r]\n`;\n\nexport async function generateGitignore(config: PackageConfig, rootConfig: PackageConfig): Promise<void> {\n return logger.function('generateGitignore', async () => {\n const filePath = path.resolve(config.dirPath, '.gitignore');\n const content = (await FsUtil.readFileIgnoringError(filePath)) ?? '';\n let headUserContent = ignoreFileUtil.getHeadUserContent(content) + commonContent;\n const tailUserContent = ignoreFileUtil.getTailUserContent(content);\n\n const names = [...defaultNames];\n if (config.containingGemfile) {\n names.push('ruby');\n }\n if (config.containingGoMod) {\n names.push('go');\n headUserContent += `${path.basename(config.dirPath)}\n`;\n }\n if (config.containingPackageJson) {\n names.push('node');\n }\n if (config.containingPomXml) {\n names.push('maven');\n headUserContent += `.idea/google-java-format.xml\n`;\n }\n if (config.containingPubspecYaml) {\n names.push('flutter', 'AndroidStudio', 'ruby');\n headUserContent += `.flutter-plugins-dependencies\nandroid/key.properties\nios/.bundle\n.idea/runConfigurations.xml\n`;\n }\n if (config.containingTemplateYaml) {\n headUserContent += `.aws-sam/\npackaged.yaml\n`;\n }\n // Because .venv should be ignored on root directory\n if (config.containingPoetryLock) {\n names.push('python');\n headUserContent += `.venv/\n`;\n }\n\n if (rootConfig.depending.blitz) {\n names.push('nextjs');\n headUserContent += `.blitz/\n.blitz**\n`;\n }\n if (rootConfig.depending.firebase || config.depending.firebase) {\n names.push('firebase');\n }\n if (rootConfig.depending.prisma) {\n headUserContent += `*.sqlite3\n*.sqlite3-journal\n`;\n }\n if (rootConfig.depending.playwright) {\n headUserContent += `test-results/\n`;\n }\n if (rootConfig.depending.reactNative || config.depending.reactNative) {\n names.push('reactnative');\n headUserContent += `google-services.json\nandroid/app/src/main/assets/\n`;\n }\n if (rootConfig.depending.storybook) {\n names.push('storybookjs');\n }\n\n let generated = '';\n for (const name of names) {\n let content = (await readCache(name)) ?? '';\n if (!content) {\n const url = `https://www.toptal.com/developers/gitignore/api/${name}`;\n const response = await fetch(url);\n const responseText = await response.text();\n if (responseText.includes('Attention Required!')) {\n console.error(`Failed to fetch ${url}`);\n return;\n }\n content = responseText.trim();\n await promisePool.run(() => writeCache(name, content));\n if (options.isVerbose) {\n console.info(`Fetched ${url}`);\n }\n }\n if (generated) generated += '\\n';\n generated += content + '\\n';\n }\n if (!(await ignoreFileUtil.isBerryZeroInstallEnabled(filePath))) {\n generated = generated.replace('!.yarn/cache', '# !.yarn/cache').replace('# .pnp.*', '.pnp.*');\n }\n if (config.containingPomXml || config.containingPubspecYaml) {\n generated = generated\n .replace(/^# .idea\\/artifacts$/gm, '.idea/artifacts')\n .replace(/^# .idea\\/compiler.xml$/gm, '.idea/compiler.xml')\n .replace(/^# .idea\\/jarRepositories.xml$/gm, '.idea/jarRepositories.xml')\n .replace(/^# .idea\\/modules.xml$/gm, '.idea/modules.xml')\n .replace(/^# .idea\\/*.iml$/gm, '.idea/*.iml')\n .replace(/^# .idea\\/modules$/gm, '.idea/modules')\n .replace(/^# *.iml$/gm, '*.iml')\n .replace(/^# *.ipr$/gm, '*.ipr');\n if (config.containingPubspecYaml) {\n generated = generated.replace(/^.idea\\/modules.xml$/gm, '# .idea/modules.xml');\n }\n }\n generated = generated.replace(/^.idea\\/?$/gm, '# .idea');\n if (rootConfig.depending.reactNative || config.depending.reactNative || config.containingPubspecYaml) {\n generated = generated.replace(/^(.idea\\/.+)$/gm, '$1\\nandroid/$1');\n }\n const newContent = headUserContent + generated + tailUserContent;\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n\nconst dirPath = path.join(os.homedir(), '.cache', 'wbfy', 'gitignore');\n\nasync function writeCache(name: string, content: string): Promise<void> {\n await fs.promises.mkdir(dirPath, { recursive: true });\n await fs.promises.writeFile(path.join(dirPath, name), content);\n}\n\nasync function readCache(name: string): Promise<string | undefined> {\n try {\n const stat = await fs.promises.stat(path.join(dirPath, name));\n if (Date.now() - stat.mtimeMs > 6 * 60 * 60 * 1000) {\n return;\n }\n return await fs.promises.readFile(path.join(dirPath, name), 'utf8');\n } catch {\n // do nothing\n }\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { promisePool } from '../utils/promisePool';\nimport { spawnSync } from '../utils/spawnUtil';\n\nimport { generateScripts } from './packageJson';\n\nconst DEFAULT_COMMAND = 'npm test';\n\nconst settings = {\n preCommit: 'node node_modules/.bin/lint-staged',\n prePush: `yarn typecheck`,\n prePushForLab: `\nif [ $(git branch --show-current) = \"main\" ] && [ $(git config user.email) != \"exkazuu@gmail.com\" ]; then\n echo \"************************************************\"\n echo \"*** Don't push main branch directly. Use PR! ***\"\n echo \"************************************************\"\n exit 1\nfi\n\nyarn typecheck\n`.trim(),\n postMerge: `\nchanged_files=\"$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)\"\n\nrun_if_changed() {\n if echo \"$changed_files\" | grep --quiet -E \"$1\"; then\n eval \"$2\"\n fi\n}\n`.trim(),\n};\n\nexport async function generateHuskyrc(config: PackageConfig): Promise<void> {\n return logger.function('generateHuskyrc', async () => {\n await core(config);\n });\n}\n\nasync function core(config: PackageConfig): Promise<void> {\n const packageJsonPath = path.resolve(config.dirPath, 'package.json');\n const jsonText = await fs.promises.readFile(packageJsonPath, 'utf8');\n const packageJson = JSON.parse(jsonText);\n packageJson.scripts ||= {};\n delete packageJson.scripts['postinstall'];\n delete packageJson.scripts['postpublish'];\n delete packageJson.scripts['prepare'];\n delete packageJson.scripts['prepublishOnly'];\n delete packageJson.scripts['prepack'];\n delete packageJson.scripts['postpack'];\n\n const dirPath = path.resolve(config.dirPath, '.husky');\n await Promise.all([\n fs.promises.writeFile(packageJsonPath, JSON.stringify(packageJson, undefined, 2)),\n fs.promises.rm(dirPath, { force: true, recursive: true }),\n ]);\n spawnSync('yarn', ['dlx', 'husky-init', '--yarn2'], config.dirPath);\n\n const preCommitFilePath = path.resolve(dirPath, 'pre-commit');\n const content = await fs.promises.readFile(preCommitFilePath, 'utf8');\n\n await promisePool.run(() => fs.promises.rm(path.resolve(config.dirPath, '.huskyrc.json'), { force: true }));\n await promisePool.run(() =>\n fs.promises.writeFile(preCommitFilePath, content.replace(DEFAULT_COMMAND, settings.preCommit))\n );\n\n if (config.containingTypeScript || config.containingTypeScriptInPackages) {\n let prePush = config.repository?.startsWith('github:WillBoosterLab/') ? settings.prePushForLab : settings.prePush;\n const { typecheck } = generateScripts(config);\n prePush = prePush.replace('yarn typecheck', typecheck.replace('tsc', 'node node_modules/.bin/tsc'));\n await promisePool.run(() =>\n fs.promises.writeFile(path.resolve(dirPath, 'pre-push'), content.replace(DEFAULT_COMMAND, prePush), {\n mode: 0o755,\n })\n );\n }\n\n const postMergeCommands: string[] = [];\n if (config.versionsText) {\n postMergeCommands.push('run_if_changed \"\\\\..+-version\" \"asdf plugin update --all\"');\n }\n // Python\u304C\u306A\u3044\u3068\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3067\u304D\u306A\u3044\u51E6\u7406\u7CFB\u304C\u5B58\u5728\u3059\u308B\u305F\u3081\u3001\u5F37\u5236\u7684\u306B\u6700\u521D\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B\u3002\n if (config.versionsText?.includes('python ')) {\n postMergeCommands.push('run_if_changed \"\\\\..+-version\" \"asdf install python\"');\n }\n if (config.versionsText) {\n postMergeCommands.push('run_if_changed \"\\\\..+-version\" \"asdf install\"');\n }\n postMergeCommands.push('run_if_changed \"package\\\\.json\" \"yarn\"');\n if (config.containingPoetryLock) {\n postMergeCommands.push('run_if_changed \"poetry\\\\.lock\" \"poetry install\"');\n }\n if (config.depending.blitz) {\n postMergeCommands.push(\n 'run_if_changed \"db/schema.prisma\" \"node node_modules/.bin/blitz prisma migrate deploy\"',\n 'run_if_changed \"db/schema.prisma\" \"node node_modules/.bin/blitz blitz codegen\"'\n );\n } else if (config.depending.prisma) {\n postMergeCommands.push(\n 'run_if_changed \"prisma/schema.prisma\" \"node node_modules/.bin/prisma migrate deploy\"',\n 'run_if_changed \"prisma/schema.prisma\" \"node node_modules/.bin/prisma generate\"'\n );\n }\n const postMergeCommand = content.replace(DEFAULT_COMMAND, `${settings.postMerge}\\n\\n${postMergeCommands.join('\\n')}`);\n await promisePool.run(() =>\n fs.promises.writeFile(path.resolve(dirPath, 'post-merge'), postMergeCommand, {\n mode: 0o755,\n })\n );\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { EslintUtil } from '../utils/eslintUtil';\nimport { extensions } from '../utils/extensions';\nimport { gitHubUtil } from '../utils/githubUtil';\nimport { ignoreFileUtil } from '../utils/ignoreFileUtil';\nimport { promisePool } from '../utils/promisePool';\nimport { spawnSync } from '../utils/spawnUtil';\nimport { getSrcDirs } from '../utils/srcDirectories';\n\nconst jsCommonDeps = [\n 'eslint',\n 'eslint-config-prettier',\n 'eslint-plugin-import',\n 'eslint-plugin-sort-class-members',\n 'eslint-plugin-sort-destructure-keys',\n 'eslint-plugin-unicorn',\n];\n\nconst tsCommonDeps = [\n ...jsCommonDeps,\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'eslint-import-resolver-typescript',\n];\n\nconst reactCommonDeps = ['eslint-plugin-react', 'eslint-plugin-react-hooks'];\n\nconst devDeps: { [prop: string]: string[] } = {\n '@willbooster/eslint-config-js': ['@willbooster/eslint-config-js', ...jsCommonDeps],\n '@willbooster/eslint-config-js-react': ['@willbooster/eslint-config-js-react', ...jsCommonDeps, ...reactCommonDeps],\n '@willbooster/eslint-config-ts': ['@willbooster/eslint-config-ts', ...tsCommonDeps],\n '@willbooster/eslint-config-ts-react': ['@willbooster/eslint-config-ts-react', ...tsCommonDeps, ...reactCommonDeps],\n '../../.eslintrc.json': [],\n};\n\nexport async function generatePackageJson(\n config: PackageConfig,\n rootConfig: PackageConfig,\n skipAddingDeps: boolean\n): Promise<void> {\n return logger.function('generatePackageJson', async () => {\n await core(config, rootConfig, skipAddingDeps);\n });\n}\n\nasync function core(config: PackageConfig, rootConfig: PackageConfig, skipAddingDeps: boolean): Promise<void> {\n const filePath = path.resolve(config.dirPath, 'package.json');\n const jsonText = await fs.promises.readFile(filePath, 'utf8');\n const jsonObj = JSON.parse(jsonText);\n jsonObj.scripts = jsonObj.scripts || {};\n jsonObj.dependencies = jsonObj.dependencies || {};\n jsonObj.devDependencies = jsonObj.devDependencies || {};\n jsonObj.peerDependencies = jsonObj.peerDependencies || {};\n\n await removeDeprecatedStuff(jsonObj);\n\n if (jsonObj.name !== '@willbooster/prettier-config') {\n jsonObj.prettier = '@willbooster/prettier-config';\n }\n\n for (const scriptKey of Object.keys(jsonObj.scripts)) {\n // Fresh repo still requires 'yarn install'\n if (!jsonObj.scripts[scriptKey].includes('git clone')) {\n jsonObj.scripts[scriptKey] = jsonObj.scripts[scriptKey]\n .replace(/yarn\\s*&&\\s*/, '')\n .replace(/yarn\\s*install\\s*&&\\s*/, '');\n }\n }\n\n jsonObj.scripts = merge(jsonObj.scripts, generateScripts(config));\n jsonObj.scripts.prettify += await generatePrettierSuffix(config.dirPath);\n\n let dependencies: string[] = [];\n let devDependencies = ['lint-staged', 'prettier', 'sort-package-json', '@willbooster/prettier-config'];\n const poetryDependencies: string[] = [];\n\n if (config.root) {\n // To install the latest pinst\n devDependencies.push('husky', '@willbooster/renovate-config');\n if (config.publicRepo || config.referredByOtherRepo) {\n // https://typicode.github.io/husky/#/?id=install-1\n devDependencies.push('pinst');\n jsonObj.scripts['prepack'] = 'pinst --disable';\n jsonObj.scripts['postpack'] = 'pinst --enable';\n }\n if (config.depending.semanticRelease) {\n devDependencies.push('conventional-changelog-conventionalcommits');\n if (\n !jsonObj.devDependencies['semantic-release'] &&\n !jsonObj.devDependencies['multi-semantic-release'] &&\n !jsonObj.devDependencies['@qiwi/multi-semantic-release']\n ) {\n devDependencies.push('semantic-release');\n }\n jsonObj.version = '0.0.0-semantically-released';\n }\n if (config.containingSubPackageJsons) {\n jsonObj.workspaces = ['packages/*'];\n } else {\n delete jsonObj.workspaces;\n }\n }\n\n if (\n config.containingJavaScript ||\n config.containingJavaScriptInPackages ||\n config.containingTypeScript ||\n config.containingTypeScriptInPackages\n ) {\n devDependencies.push('eslint', 'micromatch');\n // TODO: not needed anymore?\n if (config.containingTypeScriptInPackages) {\n devDependencies.push('@typescript-eslint/parser');\n }\n }\n\n if (config.containingTypeScript || config.containingTypeScriptInPackages) {\n devDependencies.push('typescript');\n }\n\n if (config.eslintBase) {\n devDependencies.push(...devDeps[config.eslintBase]);\n }\n\n if (config.willBoosterConfigs) {\n dependencies = dependencies.filter((dep) => !dep.includes('@willbooster/'));\n devDependencies = devDependencies.filter((dep) => !dep.includes('@willbooster/'));\n }\n\n if (!jsonObj.name) {\n jsonObj.name = path.basename(config.dirPath);\n }\n\n if (config.containingSubPackageJsons) {\n jsonObj.private = true;\n }\n if (!jsonObj.license) {\n jsonObj.license = 'UNLICENSED';\n }\n if (!jsonObj.private && jsonObj.license !== 'UNLICENSED' && rootConfig.publicRepo) {\n jsonObj.publishConfig ??= {};\n jsonObj.publishConfig.access ??= 'public';\n }\n const [owner] = gitHubUtil.getOrgAndName(config.repository ?? '');\n if (owner === 'WillBooster' || owner === 'WillBoosterLab') {\n jsonObj.author = 'WillBooster Inc.';\n }\n\n if (!config.containingTypeScript && !config.containingTypeScriptInPackages) {\n delete jsonObj.scripts.typecheck;\n }\n\n // https://github.com/semantic-release/semantic-release/issues/2323#issuecomment-1032341621\n if (config.depending.semanticRelease && config.release.npm) {\n jsonObj.resolutions ||= {};\n jsonObj.resolutions['npm/chalk'] = '^4.1.2';\n }\n\n if (!config.containingSubPackageJsons) {\n if (!config.containingJavaScript && !config.containingTypeScript) {\n delete jsonObj.scripts.lint;\n delete jsonObj.scripts['lint-fix'];\n jsonObj.scripts.cleanup = jsonObj.scripts.cleanup.replace(' && yarn lint-fix', '');\n } else {\n jsonObj.scripts['lint-fix'] += EslintUtil.getLintFixSuffix(config);\n }\n\n if (config.containingPubspecYaml) {\n jsonObj.scripts.lint = 'flutter analyze';\n jsonObj.scripts['lint-fix'] = 'yarn lint';\n const dirs = ['lib', 'test', 'test_driver'].filter((dir) => fs.existsSync(path.resolve(config.dirPath, dir)));\n if (dirs.length > 0) {\n jsonObj.scripts['format-code'] = `flutter format $(find ${dirs.join(\n ' '\n )} -name generated -prune -o -name '*.freezed.dart' -prune -o -name '*.g.dart' -prune -o -name '*.dart' -print)`;\n jsonObj.scripts.format += ` && yarn format-code`;\n }\n }\n\n if (config.containingPoetryLock) {\n if (jsonObj.scripts.postinstall === 'poetry install') {\n delete jsonObj.scripts.postinstall;\n }\n const entries = await fs.promises.readdir(config.dirPath, { withFileTypes: true });\n const dirNames = await Promise.all(\n entries.map(async (entry) => {\n if (!entry.isDirectory()) return '';\n const dirPath = path.resolve(config.dirPath, entry.name);\n const fileNames = await fs.promises.readdir(dirPath);\n return fileNames.some((fileName) => fileName.endsWith('.py')) ? entry.name : '';\n })\n );\n const filteredDirNames = dirNames.filter(Boolean);\n if (filteredDirNames.length > 0) {\n jsonObj.scripts['format-code'] = `poetry run isort --profile black ${filteredDirNames.join(\n ' '\n )} && poetry run black ${filteredDirNames.join(' ')}`;\n jsonObj.scripts.lint = `poetry run flake8 ${filteredDirNames.join(' ')}`;\n jsonObj.scripts['lint-fix'] = 'yarn lint';\n jsonObj.scripts.format += ` && yarn format-code`;\n poetryDependencies.push('black', 'isort', 'flake8');\n }\n }\n\n if (config.repository) {\n jsonObj.repository = config.repository;\n }\n }\n\n if (config.depending.blitz) {\n if (config.depending.blitz === '0') {\n // These cause an error of eslint-plugin-import loading\n devDependencies = devDependencies.filter((dep) => !dep.includes('@typescript-eslint/'));\n // This causes eslint errors\n devDependencies = devDependencies.filter(\n (d) =>\n d !== 'eslint-plugin-react' &&\n d !== 'eslint-import-resolver-typescript' &&\n d !== 'eslint-plugin-import' &&\n d !== 'eslint-plugin-react-hooks'\n );\n }\n if (!jsonObj.scripts['gen-code']?.startsWith('blitz codegen')) {\n jsonObj.scripts['gen-code'] = 'blitz codegen';\n }\n } else if (config.depending.prisma && !jsonObj.scripts['gen-code']?.startsWith('prisma generate')) {\n jsonObj.scripts['gen-code'] = 'prisma generate';\n }\n if (Object.keys(jsonObj.dependencies).length === 0) {\n delete jsonObj.dependencies;\n }\n if (Object.keys(jsonObj.devDependencies).length === 0) {\n delete jsonObj.devDependencies;\n }\n if (Object.keys(jsonObj.peerDependencies).length === 0) {\n delete jsonObj.peerDependencies;\n }\n\n await fs.promises.writeFile(filePath, JSON.stringify(jsonObj));\n\n if (!skipAddingDeps) {\n dependencies = dependencies.filter((dep) => !jsonObj.devDependencies?.[dep]);\n if (dependencies.length > 0) {\n spawnSync('yarn', ['add', ...new Set(dependencies)], config.dirPath);\n }\n devDependencies = devDependencies.filter((dep) => !jsonObj.dependencies?.[dep]);\n if (devDependencies.length > 0) {\n spawnSync('yarn', ['add', '-D', ...new Set(devDependencies)], config.dirPath);\n }\n if (poetryDependencies.length > 0) {\n spawnSync('poetry', ['add', ...new Set(poetryDependencies)], config.dirPath);\n }\n }\n}\n\n// TODO: remove the following migration code in future\nasync function removeDeprecatedStuff(jsonObj: any): Promise<void> {\n if (jsonObj.author === 'WillBooster LLC') {\n jsonObj.author = 'WillBooster Inc.';\n }\n delete jsonObj.scripts['sort-package-json'];\n delete jsonObj.scripts['sort-all-package-json'];\n delete jsonObj.scripts['typecheck:codegen'];\n delete jsonObj.dependencies['tslib'];\n delete jsonObj.devDependencies['@willbooster/eslint-config'];\n delete jsonObj.devDependencies['@willbooster/eslint-config-react'];\n delete jsonObj.devDependencies['@willbooster/tsconfig'];\n delete jsonObj.devDependencies['eslint-import-resolver-node'];\n delete jsonObj.devDependencies['eslint-plugin-prettier'];\n delete jsonObj.devDependencies['lerna'];\n // To install the latest pinst\n delete jsonObj.devDependencies['pinst'];\n delete jsonObj.scripts['flutter-format'];\n delete jsonObj.scripts['format-flutter'];\n delete jsonObj.scripts['python-format'];\n delete jsonObj.scripts['format-python'];\n delete jsonObj.scripts['prettier'];\n for (const deps of Object.values(devDeps)) {\n for (const dep of deps) {\n delete jsonObj.devDependencies[dep];\n }\n }\n await promisePool.run(() => fs.promises.rm('lerna.json', { force: true }));\n}\n\nexport function generateScripts(config: PackageConfig): Record<string, string> {\n let scripts = {\n cleanup: 'yarn format && yarn lint-fix',\n format: `sort-package-json && yarn prettify`,\n lint: `eslint --color \"./{${getSrcDirs(config)}}/**/*.{${extensions.eslint.join(',')}}\"`,\n 'lint-fix': 'yarn lint --fix',\n prettify: `prettier --cache --color --write \"**/{.*/,}*.{${extensions.prettier.join(',')}}\" \"!**/test-fixtures/**\"`,\n typecheck: 'tsc --noEmit --Pretty',\n };\n if (config.containingSubPackageJsons) {\n scripts = merge(\n { ...scripts },\n {\n format: `sort-package-json && yarn prettify && yarn workspaces foreach --parallel --verbose run format`,\n lint: `yarn workspaces foreach --parallel --verbose run lint`,\n 'lint-fix': 'yarn workspaces foreach --parallel --verbose run lint-fix',\n prettify: `prettier --cache --color --write \"**/{.*/,}*.{${extensions.prettier.join(\n ','\n )}}\" \"!**/packages/**\" \"!**/test-fixtures/**\"`,\n test: 'yarn workspaces foreach --verbose run test',\n typecheck: 'yarn workspaces foreach --parallel --verbose run typecheck',\n }\n );\n }\n if (config.depending.blitz) {\n scripts.typecheck = `${scripts.typecheck} || yarn run typecheck/warn`;\n (scripts as Record<string, string>)[\n 'typecheck/warn'\n ] = `echo 'Please try \"yarn gen-code\" if you face unknown type errors.' && exit 1`;\n (scripts as Record<string, string>)['typecheck:gen-code'] = 'yarn gen-code && tsc --noEmit --Pretty';\n }\n return scripts;\n}\n\nasync function generatePrettierSuffix(dirPath: string): Promise<string> {\n const filePath = path.resolve(dirPath, '.prettierignore');\n const existingContent = await fs.promises.readFile(filePath, 'utf8');\n const index = existingContent.indexOf(ignoreFileUtil.separatorPrefix);\n if (index < 0) return '';\n\n const originalContent = existingContent.slice(0, index);\n const lines = originalContent\n .split('\\n')\n .map((line) => {\n const newLine = line.trim();\n return newLine.endsWith('/') ? newLine.slice(0, -1) : newLine;\n })\n .filter((l) => l && !l.startsWith('#') && !l.includes('/'));\n\n return lines.map((line) => ` \"!**/${line}/**\"`).join('');\n}\n", "import { PackageConfig } from '../packageConfig';\n\nexport const EslintUtil = {\n getLintFixSuffix(config: PackageConfig): string {\n return config.containingJsxOrTsx ? ' --rule \"{ react-hooks/exhaustive-deps: 0 }\"' : '';\n },\n};\n", "import { Octokit } from '@octokit/core';\n\nconst token =\n process.env.GH_BOT_PAT || process.env.PUBLIC_GH_BOT_PAT || process.env.GH_TOKEN || process.env.GITHUB_TOKEN;\nexport const hasGitHubToken = !!token;\nexport const octokit = new Octokit({\n auth: token,\n});\n\nclass GitHubUtil {\n getOrgAndName(urlOrFullName: string): [string, string] {\n const urlWithoutProtocol = urlOrFullName.split(':').at(-1);\n const names = urlWithoutProtocol?.split('/');\n const org = names?.at(-2) ?? '';\n const name = names?.at(-1)?.replace(/.git$/, '') ?? '';\n return [org, name];\n }\n}\n\nexport const gitHubUtil = new GitHubUtil();\n", "import { PackageConfig } from '../packageConfig';\n\nconst srcDirectories = {\n node: ['src', '__tests__', 'scripts'].sort(),\n blitz0: ['__tests__', 'scripts', 'app', 'db', 'integrations', 'mailers', 'test'].sort(),\n // We rename 'test' directory to '__tests__'\n blitz2: ['src', '__tests__', 'scripts', 'db', 'integrations', 'mailers'].sort(),\n};\n\nexport function getSrcDirs(config: PackageConfig): string[] {\n if (config.depending.blitz) {\n return config.depending.blitz === '0' ? srcDirectories.blitz0 : srcDirectories.blitz2;\n }\n return srcDirectories.node;\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst newContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectTasksOptions\">\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"ts\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.ts)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"tsx\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.tsx)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"js\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.js)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"json\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.json)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"md\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.md)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n <TaskOptions isEnabled=\"true\">\n <option name=\"arguments\" value=\"node node_modules/.bin/prettier --cache --write $FilePathRelativeToProjectRoot$\" />\n <option name=\"checkSyntaxErrors\" value=\"false\" />\n <option name=\"description\" />\n <option name=\"exitCodeBehavior\" value=\"ERROR\" />\n <option name=\"fileExtension\" value=\"html\" />\n <option name=\"immediateSync\" value=\"false\" />\n <option name=\"name\" value=\"Prettier (.html)\" />\n <option name=\"output\" value=\"$FilePathRelativeToProjectRoot$\" />\n <option name=\"outputFilters\">\n <array />\n </option>\n <option name=\"outputFromStdout\" value=\"false\" />\n <option name=\"program\" value=\"yarn\" />\n <option name=\"runOnExternalChanges\" value=\"false\" />\n <option name=\"scopeName\" value=\"Project Files\" />\n <option name=\"trackOnlyRoot\" value=\"false\" />\n <option name=\"workingDir\" value=\"$ProjectFileDir$\" />\n <envs />\n </TaskOptions>\n </component>\n</project>\n`;\n\nexport async function generateIdeaSettings(config: PackageConfig): Promise<void> {\n return logger.function('generateIdeaSettings', async () => {\n const dirPath = path.resolve(config.dirPath, '.idea');\n if (fs.existsSync(dirPath)) {\n const filePath = path.resolve(dirPath, 'watcherTasks.xml');\n await (config.containingJavaScript ||\n config.containingJavaScriptInPackages ||\n config.containingTypeScript ||\n config.containingTypeScriptInPackages ||\n (config.containingPackageJson &&\n !config.containingPubspecYaml &&\n !config.containingGemfile &&\n !config.containingGoMod &&\n !config.containingPomXml)\n ? promisePool.run(() => FsUtil.generateFile(filePath, newContent))\n : promisePool.run(() => fs.promises.rm(filePath, { force: true })));\n }\n });\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { EslintUtil } from '../utils/eslintUtil';\nimport { extensions } from '../utils/extensions';\nimport { FsUtil } from '../utils/fsUtil';\nimport { promisePool } from '../utils/promisePool';\nimport { getSrcDirs } from '../utils/srcDirectories';\n\nexport async function generateLintstagedrc(config: PackageConfig): Promise<void> {\n return logger.function('generateLintstagedrc', async () => {\n await core(config);\n });\n}\n\nasync function core(config: PackageConfig): Promise<void> {\n const packagePrefix = config.root ? 'node node_modules/.bin/' : 'node ../../node_modules/.bin/';\n const lines: string[] = [];\n if (config.containingJavaScript || config.containingTypeScript) {\n const eslint = `\n '${getEslintKey(config)}': [${JSON.stringify(\n `${packagePrefix}eslint --fix${EslintUtil.getLintFixSuffix(config)}`\n )}, '${packagePrefix}prettier --cache --write'],`;\n lines.push(eslint);\n }\n const packagesFilter = config.root ? \" && !file.includes('/packages/')\" : '';\n lines.push(`\n './**/*.{${extensions.prettier.join(',')}}': files => {\n ${config.containingJavaScript || config.containingTypeScript ? getEslintFilterForPrettier(config) : ''}\n const filteredFiles = files.filter(file => !file.includes('/test-fixtures/')${packagesFilter});\n if (filteredFiles.length === 0) return [];\n const commands = [\\`${packagePrefix}prettier --cache --write \\${filteredFiles.join(' ')}\\`];\n if (filteredFiles.some(file => file.endsWith('package.json'))) {\n commands.push('${packagePrefix}sort-package-json');\n }\n return commands;\n },`);\n if (config.containingPubspecYaml) {\n lines.push(`\n './{lib,test,test_driver}/**/*.dart': files => {\n const filteredFiles = files.filter(file => !file.includes('generated'))\n .filter(file => !file.endsWith('.freezed.dart') && !file.endsWith('.g.dart'));\n if (filteredFiles.length === 0) return [];\n return [\\`flutter format \\${filteredFiles.join(' ')}\\`];\n },`);\n }\n if (config.containingPoetryLock) {\n lines.push(`\n './**/*.py': [\n 'poetry run isort --profile black --filter-files',\n 'poetry run black',\n 'poetry run flake8'\n ],`);\n }\n\n const newContent = `${\n config.containingJavaScript || config.containingTypeScript ? \"const micromatch = require('micromatch');\" : ''\n }\n\nmodule.exports = {${lines.join('')}\n};\n`;\n\n const filePath = path.resolve(config.dirPath, '.lintstagedrc.cjs');\n await promisePool.run(() => fs.promises.rm(path.resolve(config.dirPath, '.lintstagedrc.js'), { force: true }));\n await promisePool.run(() => fs.promises.rm(path.resolve(config.dirPath, '.lintstagedrc.json'), { force: true }));\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n}\n\nfunction getEslintKey(config: PackageConfig): string {\n const dirs = getSrcDirs(config);\n return `./{${dirs.join(',')}}/**/*.{${extensions.eslint.join(',')}}`;\n}\n\nfunction getEslintFilterForPrettier(config: PackageConfig): string {\n return `files = micromatch.not(files, '${getEslintKey(config)}');`;\n}\n", "import path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { ignoreFileUtil } from '../utils/ignoreFileUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst commonContent = `\n3rd-party/\nandroid/\nios/\nno-format/\ntest-fixtures/\n*.d.ts\n*.min.js\n.yarn/\n.pnp.js\n`;\n\nexport async function generatePrettierignore(config: PackageConfig): Promise<void> {\n return logger.function('generatePrettierignore', async () => {\n const filePath = path.resolve(config.dirPath, '.prettierignore');\n const content = (await FsUtil.readFileIgnoringError(filePath)) ?? '';\n const headUserContent = ignoreFileUtil.getHeadUserContent(content) + commonContent;\n const tailUserContent = ignoreFileUtil.getTailUserContent(content);\n\n const gitignoreFilePath = path.resolve(config.dirPath, '.gitignore');\n const gitignoreContent = (await ignoreFileUtil.readGitignoreWithoutSeparators(gitignoreFilePath)) || '';\n\n let additionalContent = '';\n if (config.containingPubspecYaml) {\n additionalContent = `\nandroid/app/\nios/Runner/Assets.xcassets/\npubspec.yaml\n`;\n }\n\n const newContent = headUserContent + commonContent + additionalContent + gitignoreContent + tailUserContent;\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { promisePool } from '../utils/promisePool';\n\nexport async function generateReadme(config: PackageConfig): Promise<void> {\n return logger.function('generateReadme', async () => {\n const filePath = path.resolve(config.dirPath, 'README.md');\n let newContent = await fs.promises.readFile(filePath, 'utf8');\n\n newContent = insertBadge(config, newContent, semanticReleaseBadge, '.releaserc.json');\n\n const repository = config.repository?.slice(config.repository?.indexOf(':') + 1);\n const fileNames = fs.readdirSync(`${config.dirPath}/.github/workflows`);\n for (const fileName of fileNames) {\n if (!fileName.startsWith('test') && !fileName.startsWith('deploy')) continue;\n\n let badgeName = fileName;\n badgeName = badgeName.charAt(0).toUpperCase() + badgeName.slice(1, badgeName.indexOf('.'));\n badgeName = badgeName.replace('-', ' ');\n const badge = `[![${badgeName}](https://github.com/${repository}/actions/workflows/${fileName}/badge.svg)](https://github.com/${repository}/actions/workflows/${fileName})`;\n newContent = insertBadge(config, newContent, badge, `.github/workflows/${fileName}`);\n }\n\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n\nconst semanticReleaseBadge =\n '[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)';\n\nfunction insertBadge(config: PackageConfig, newContent: string, badge: string, fileName: string): string {\n if (!fs.existsSync(path.resolve(config.dirPath, fileName))) {\n return newContent;\n }\n\n // \u65E2\u306Bbadge\u304C\u3042\u308B\u5834\u5408\u306F\u524A\u9664\n const badgePos = newContent.indexOf(badge);\n if (badgePos >= 0) {\n newContent = newContent.slice(0, badgePos) + newContent.slice(badgePos + badge.length);\n }\n let inserted = false;\n for (let i = 0; i < newContent.length; i++) {\n if (newContent[i] === '\\n') {\n inserted = true;\n newContent = `${newContent.slice(0, i + 1)}${badge}\\n${newContent.slice(i + 1)}`;\n break;\n }\n }\n if (!inserted) newContent = `${newContent}\\n${badge}\\n`;\n return newContent;\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { overwriteMerge } from '../utils/mergeUtil';\nimport { promisePool } from '../utils/promisePool';\n\nexport async function generateReleaserc(rootConfig: PackageConfig): Promise<void> {\n return logger.function('generateReleaserc', async () => {\n const filePath = path.resolve(rootConfig.dirPath, '.releaserc.json');\n try {\n const settings = JSON.parse(await fs.promises.readFile(filePath, 'utf8'));\n const plugins = settings?.plugins || [];\n for (let i = 0; i < plugins.length; i++) {\n const plugin = Array.isArray(plugins[i]) ? plugins[i][0] : plugins[i];\n const oldConfig = (Array.isArray(plugins[i]) && plugins[i][1]) || {};\n if (plugin === '@semantic-release/commit-analyzer') {\n plugins[i] = [\n '@semantic-release/commit-analyzer',\n merge.all(\n [\n oldConfig,\n {\n preset: 'conventionalcommits',\n },\n ],\n { arrayMerge: overwriteMerge }\n ),\n ];\n } else if (plugin === '@semantic-release/github') {\n plugins[i] = [\n '@semantic-release/github',\n merge.all(\n [\n oldConfig,\n {\n successComment: false,\n labels: ['r: semantic-release'],\n releasedLabels: ['released :bookmark:'],\n },\n ],\n { arrayMerge: overwriteMerge }\n ),\n ];\n }\n }\n const newContent = JSON.stringify(settings);\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n } catch {\n // do nothing\n }\n });\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { overwriteMerge } from '../utils/mergeUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst jsonObj = {\n extends: ['@willbooster'],\n};\n\nexport async function generateRenovateJson(config: PackageConfig): Promise<void> {\n return logger.function('generateRenovateJson', async () => {\n let newSettings: any = cloneDeep(jsonObj);\n const filePath = path.resolve(config.dirPath, '.renovaterc.json');\n try {\n const oldContent = await fs.promises.readFile(filePath, 'utf8');\n const oldSettings = JSON.parse(oldContent) as any;\n newSettings = merge.all([newSettings, oldSettings, newSettings], { arrayMerge: overwriteMerge });\n } catch {\n // do nothing\n }\n await promisePool.run(() => fs.promises.rm(path.resolve(config.dirPath, '.dependabot'), { force: true }));\n await promisePool.run(() => fs.promises.rm(path.resolve(config.dirPath, 'renovate.json'), { force: true }));\n const newContent = JSON.stringify(newSettings);\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\nimport cloneDeep from 'lodash.clonedeep';\nimport { TsConfigJson } from 'type-fest';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { FsUtil } from '../utils/fsUtil';\nimport { combineMerge } from '../utils/mergeUtil';\nimport { sortKeys } from '../utils/objectUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst rootJsonObj = {\n compilerOptions: {\n target: 'ESNext',\n module: 'ESNext',\n moduleResolution: 'Node',\n jsx: 'react-jsx',\n alwaysStrict: true,\n strict: true,\n skipLibCheck: true,\n allowSyntheticDefaultImports: true,\n esModuleInterop: true,\n resolveJsonModule: true,\n declaration: true,\n sourceMap: true,\n importHelpers: false,\n outDir: 'dist',\n typeRoots: ['./node_modules/@types', './@types'],\n },\n include: [\n 'src/**/*',\n '__tests__/**/*',\n 'scripts/**/*',\n 'packages/*/src/**/*',\n 'packages/*/__tests__/**/*',\n 'packages/*/scripts/**/*',\n ],\n};\n\nconst subJsonObj = {\n compilerOptions: {\n target: 'ESNext',\n module: 'ESNext',\n moduleResolution: 'Node',\n jsx: 'react-jsx',\n alwaysStrict: true,\n strict: true,\n skipLibCheck: true,\n allowSyntheticDefaultImports: true,\n esModuleInterop: true,\n resolveJsonModule: true,\n declaration: true,\n sourceMap: true,\n importHelpers: false,\n outDir: 'dist',\n typeRoots: ['../../node_modules/@types', '../../@types', './@types'],\n },\n include: ['src/**/*', '__tests__/**/*', 'scripts/**/*'],\n};\n\nexport async function generateTsconfig(config: PackageConfig, rootConfig: PackageConfig): Promise<void> {\n return logger.function('generateTsconfig', async () => {\n if (rootConfig.depending.blitz) return;\n\n let newSettings = cloneDeep(config.root ? rootJsonObj : subJsonObj) as TsConfigJson;\n if (!config.containingJsxOrTsx && !config.containingJsxOrTsxInPackages) {\n delete newSettings.compilerOptions?.jsx;\n }\n if (config.root && !config.containingSubPackageJsons) {\n newSettings.include = newSettings.include?.filter((dirPath: string) => !dirPath.startsWith('packages/*/'));\n }\n if (config.isEsmPackage) {\n newSettings.compilerOptions = { ...newSettings.compilerOptions, moduleResolution: 'NodeNext' };\n }\n\n const filePath = path.resolve(config.dirPath, 'tsconfig.json');\n try {\n const existingContent = await fs.promises.readFile(filePath, 'utf8');\n const oldSettings = JSON.parse(existingContent) as TsConfigJson;\n if (oldSettings.extends === './node_modules/@willbooster/tsconfig/tsconfig.json') {\n delete oldSettings.extends;\n }\n // Don't modify \"target\", \"module\" and \"moduleResolution\".\n delete newSettings.compilerOptions?.target;\n delete newSettings.compilerOptions?.module;\n delete newSettings.compilerOptions?.moduleResolution;\n if (oldSettings.compilerOptions?.jsx) {\n delete newSettings.compilerOptions?.jsx;\n }\n newSettings = merge.all([newSettings, oldSettings, newSettings], { arrayMerge: combineMerge });\n newSettings.include = newSettings.include?.filter((dirPath: string) => !dirPath.includes('@types'));\n } catch {\n // do nothing\n }\n sortKeys(newSettings.compilerOptions ?? {});\n newSettings.include?.sort();\n const newContent = JSON.stringify(newSettings);\n await promisePool.run(() => FsUtil.generateFile(filePath, newContent));\n });\n}\n", "export function sortKeys<T extends Record<string, unknown>>(obj: T): T {\n const keyAndValues = Object.entries(obj).sort(([key1], [key2]) => key1.localeCompare(key2));\n for (const [key, value] of keyAndValues) {\n delete obj[key];\n (obj as Record<string, unknown>)[key] = value;\n }\n return obj;\n}\n", "/* eslint-disable unicorn/no-null */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport merge from 'deepmerge';\nimport yaml from 'js-yaml';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { combineMerge } from '../utils/mergeUtil';\nimport { sortKeys } from '../utils/objectUtil';\nimport { promisePool } from '../utils/promisePool';\n\nconst workflows = {\n test: {\n name: 'Test',\n on: {\n pull_request: null,\n push: {\n branches: ['main', 'wbfy', 'renovate/**'],\n },\n },\n jobs: {\n test: {\n uses: 'WillBooster/reusable-workflows/.github/workflows/test.yml@main',\n },\n },\n },\n release: {\n name: 'Release',\n on: {\n push: {\n branches: [],\n },\n },\n jobs: {\n release: {\n uses: 'WillBooster/reusable-workflows/.github/workflows/release.yml@main',\n },\n },\n },\n wbfy: {\n name: 'Willboosterify',\n on: {\n workflow_dispatch: null,\n },\n jobs: {\n wbfy: {\n uses: 'WillBooster/reusable-workflows/.github/workflows/wbfy.yml@main',\n },\n },\n },\n 'wbfy-merge': {\n name: 'Merge wbfy',\n on: {\n workflow_dispatch: null,\n },\n jobs: {\n 'wbfy-merge': {\n uses: 'WillBooster/reusable-workflows/.github/workflows/wbfy-merge.yml@main',\n },\n },\n },\n 'semantic-pr': {\n name: 'Lint PR title',\n on: {\n pull_request_target: {\n types: ['opened', 'edited', 'synchronize'],\n },\n },\n jobs: {\n 'semantic-pr': {\n uses: 'WillBooster/reusable-workflows/.github/workflows/semantic-pr.yml@main',\n },\n },\n },\n 'notify-ready': {\n name: 'Notify ready',\n on: {\n issues: {\n types: ['labeled'],\n },\n },\n jobs: {\n 'notify-ready': {\n uses: 'WillBooster/reusable-workflows/.github/workflows/notify-ready.yml@main',\n secrets: {\n DISCORD_WEBHOOK_URL: '${{ secrets.DISCORD_WEBHOOK_URL_FOR_READY }}',\n },\n },\n },\n },\n 'close-comment': {\n name: 'Add close comment',\n on: {\n pull_request: {\n types: ['opened'],\n },\n },\n jobs: {\n 'close-comment': {\n uses: 'WillBooster/reusable-workflows/.github/workflows/close-comment.yml@main',\n },\n },\n },\n 'add-issue-to-project': {\n name: 'Add issue to github project',\n on: {\n issues: {\n types: ['labeled'],\n },\n },\n jobs: {\n 'add-issue-to-project': {\n uses: 'WillBooster/reusable-workflows/.github/workflows/add-issue-to-project.yml@main',\n secrets: {\n GH_PROJECT_URL: '${{ secrets.GH_PROJECT_URL }}',\n },\n },\n },\n },\n} as Record<KnownKind, any>;\n\ntype KnownKind =\n | 'test'\n | 'release'\n | 'sync'\n | 'wbfy'\n | 'wbfy-merge'\n | 'semantic-pr'\n | 'notify-ready'\n | 'close-comment'\n | 'add-issue-to-project';\n\nexport async function generateWorkflow(rootConfig: PackageConfig): Promise<void> {\n return logger.function('generateWorkflow', async () => {\n const workflowsPath = path.resolve(rootConfig.dirPath, '.github', 'workflows');\n await fs.promises.mkdir(workflowsPath, { recursive: true });\n\n // Remove config of semantic pull request\n const semanticYmlPath = path.resolve(rootConfig.dirPath, '.github', 'semantic.yml');\n await promisePool.run(() => fs.promises.rm(semanticYmlPath, { force: true, recursive: true }));\n\n const entries = await fs.promises.readdir(workflowsPath, { withFileTypes: true });\n const fileNames = entries\n .filter((dirent) => dirent.isFile() && dirent.name.endsWith('.yml'))\n .map((dirent) => dirent.name);\n if (rootConfig.depending.semanticRelease) {\n fileNames.push('release.yml');\n }\n if (rootConfig.publicRepo || rootConfig.repository?.startsWith('github:WillBoosterLab/')) {\n fileNames.push('notify-ready.yml');\n }\n fileNames.push(\n 'test.yml',\n 'wbfy.yml',\n 'wbfy-merge.yml',\n 'semantic-pr.yml',\n 'close-comment.yml',\n 'add-issue-to-project.yml'\n );\n\n for (const fileName of fileNames) {\n // \u5B9F\u969B\u306FKnownKind\u4EE5\u5916\u306E\u5024\u3082\u4EE3\u5165\u3055\u308C\u308B\u3053\u3068\u306B\u6CE8\u610F\n const kind = path.basename(fileName, '.yml') as KnownKind;\n await promisePool.run(() => writeWorkflowYaml(rootConfig, workflowsPath, kind));\n }\n });\n}\n\nasync function writeWorkflowYaml(config: PackageConfig, workflowsPath: string, kind: KnownKind): Promise<void> {\n let newSettings = cloneDeep(workflows[kind] || {});\n const filePath = path.join(workflowsPath, `${kind}.yml`);\n try {\n const oldContent = await fs.promises.readFile(filePath, 'utf8');\n const oldSettings = yaml.load(oldContent);\n newSettings = merge.all([newSettings, oldSettings, newSettings], { arrayMerge: combineMerge });\n } catch {\n // do nothing\n }\n for (const job of Object.values(newSettings.jobs) as any[]) {\n // Ignore non-reusable workflows\n if (!job.uses?.includes?.('/reusable-workflows/')) return;\n\n normalizeJob(config, job, kind);\n }\n\n switch (kind) {\n case 'release': {\n if (newSettings.on.schedule) {\n delete newSettings.on.push;\n } else if (config.release.branches.length > 0) {\n newSettings.on.push.branches = config.release.branches;\n } else {\n // Don't use release.yml if release branch is not specified\n await fs.promises.rm(path.join(workflowsPath, 'release.yml'), { force: true });\n return;\n }\n break;\n }\n case 'wbfy': {\n setSchedule(newSettings, 20, 24);\n break;\n }\n case 'wbfy-merge': {\n setSchedule(newSettings, 0, 4);\n break;\n }\n // No default\n }\n migrateWorkflow(newSettings);\n await writeYaml(newSettings, filePath);\n\n if (kind === 'release') {\n await fs.promises.rm(path.join(workflowsPath, 'semantic-release.yml'), { force: true });\n } else if (kind === 'sync') {\n await fs.promises.rm(path.join(workflowsPath, 'sync-init.yml'), { force: true });\n if (!newSettings.jobs.sync) return;\n\n newSettings.jobs['sync-force'] = newSettings.jobs.sync;\n const params = newSettings.jobs.sync.with.sync_params_without_dest;\n if (!params) return;\n\n newSettings.jobs.sync.with.sync_params_without_dest = `--force ${params}`;\n newSettings.name = 'Force to Sync';\n newSettings.on = { workflow_dispatch: null };\n delete newSettings.jobs.sync;\n await writeYaml(newSettings, path.join(workflowsPath, 'sync-force.yml'));\n }\n}\n\nfunction normalizeJob(config: PackageConfig, job: any, kind: KnownKind): void {\n job.with ||= {};\n job.secrets ||= {};\n\n if (\n (config.release.github && kind === 'test') ||\n kind === 'release' ||\n kind === 'wbfy' ||\n kind === 'wbfy-merge' ||\n kind === 'add-issue-to-project'\n ) {\n job.secrets['GH_TOKEN'] = config.publicRepo ? '${{ secrets.PUBLIC_GH_BOT_PAT }}' : '${{ secrets.GH_BOT_PAT }}';\n }\n if (config.release.npm && (kind === 'release' || kind === 'test')) {\n job.secrets['NPM_TOKEN'] = '${{ secrets.NPM_TOKEN }}';\n }\n if (job.secrets['FIREBASE_TOKEN']) {\n job.secrets['GCP_SA_KEY_JSON_FOR_FIREBASE'] = '${{ secrets.GCP_SA_KEY_JSON_FOR_FIREBASE }}';\n delete job.secrets['FIREBASE_TOKEN'];\n }\n if (\n (job.secrets['DISCORD_WEBHOOK_URL'] && (kind === 'release' || kind.startsWith('deploy'))) ||\n (job.with.server_url && kind.startsWith('deploy'))\n ) {\n job.secrets['DISCORD_WEBHOOK_URL'] = '${{ secrets.DISCORD_WEBHOOK_URL_FOR_RELEASE }}';\n }\n\n if (kind === 'sync') {\n const params = job.with?.sync_params_without_dest;\n if (params) {\n job.with.sync_params_without_dest = params.replace('sync ', '');\n }\n }\n\n if (config.repository?.startsWith('github:WillBooster/')) {\n job.uses = job.uses.replace('WillBoosterLab/', 'WillBooster/');\n } else if (config.repository?.startsWith('github:WillBoosterLab/')) {\n job.uses = job.uses.replace('WillBooster/', 'WillBoosterLab/');\n }\n\n // Remove deprecated parameters\n migrateJob(job);\n if (job.with['dot_env_path'] === '.env') {\n delete job.with['dot_env_path'];\n }\n\n if (config.containingDockerfile && kind.startsWith('deploy')) {\n job.with['cpu_arch'] = 'X64';\n }\n // Because github.event.repository.private is always true if job is scheduled\n if (kind === 'release' || kind === 'test' || kind === 'wbfy' || kind === 'wbfy-merge' || kind.startsWith('deploy')) {\n if (config.publicRepo) {\n job.with['github_hosted_runner'] = true;\n }\n } else {\n delete job.with['github_hosted_runner'];\n }\n\n if (Object.keys(job.with).length > 0) {\n sortKeys(job.with);\n } else {\n delete job.with;\n }\n if (Object.keys(job.secrets).length > 0) {\n // Move secrets prop after with prop\n const newSecrets = sortKeys(job.secrets);\n delete job.secrets;\n job.secrets = newSecrets;\n } else {\n delete job.secrets;\n }\n}\n\nfunction setSchedule(newSettings: any, inclusiveMinHourJst: number, exclusiveMaxHourJst: number): void {\n const [minuteUtc, hourUtc] = ((newSettings.on.schedule?.[0]?.cron as string) ?? '').split(' ').map(Number);\n if (minuteUtc !== 0 && Number.isInteger(hourUtc)) {\n const hourJst = (hourUtc + 9) % 24;\n const inRange =\n inclusiveMinHourJst < exclusiveMaxHourJst\n ? inclusiveMinHourJst <= hourJst && hourJst < exclusiveMaxHourJst\n : inclusiveMinHourJst <= hourJst || hourJst < exclusiveMaxHourJst;\n if (inRange) return;\n console.log(\n 'setSchedule:',\n newSettings,\n minuteUtc,\n hourUtc,\n inRange,\n hourJst,\n inclusiveMinHourJst,\n exclusiveMaxHourJst\n );\n } else {\n console.log('setSchedule:', newSettings, minuteUtc, hourUtc);\n }\n\n const minJst = 1 + Math.floor(Math.random() * 59);\n const hourJst = inclusiveMinHourJst + Math.floor(Math.random() * (exclusiveMaxHourJst - inclusiveMinHourJst));\n const cron = `${minJst} ${(hourJst - 9 + 24) % 24} * * *`;\n newSettings.on.schedule = [{ cron }];\n}\n\nasync function writeYaml(newSettings: any, filePath: string): Promise<void> {\n const yamlText = yaml.dump(newSettings, {\n lineWidth: -1,\n noCompatMode: true,\n styles: {\n '!!null': 'empty',\n },\n });\n await fs.promises.writeFile(filePath, yamlText);\n}\n\nfunction migrateWorkflow(newSettings: any): void {\n delete newSettings.jobs['add-to-project'];\n}\n\nfunction migrateJob(job: any): void {\n delete job.with['non_self_hosted'];\n delete job.with['notify_discord'];\n delete job.with['require_fly'];\n delete job.with['require_gcloud'];\n}\n", "import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { PluginMeta } from '@yarnpkg/core/lib/Plugin';\nimport yaml from 'js-yaml';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { promisePool } from '../utils/promisePool';\nimport { spawnSync, spawnSyncWithStringResult } from '../utils/spawnUtil';\n\nexport async function generateYarnrcYml(config: PackageConfig): Promise<void> {\n return logger.function('generateYarnrcYml', async () => {\n const currentVersion = spawnSyncWithStringResult('yarn', ['--version'], config.dirPath);\n const latestVersion = getLatestVersion('@yarnpkg/cli', config.dirPath);\n if (getMajorNumber(currentVersion) <= getMajorNumber(latestVersion) && currentVersion !== latestVersion) {\n spawnSync('yarn', ['set', 'version', latestVersion], config.dirPath, 1);\n }\n\n const releasesPath = path.join(config.dirPath, '.yarn', 'releases');\n await fs.promises.mkdir(releasesPath, { recursive: true });\n for (const file of await fs.promises.readdir(releasesPath)) {\n if (file.startsWith('yarn-') && !file.startsWith(`yarn-${latestVersion}.`)) {\n await promisePool.run(() => fs.promises.rm(path.join(releasesPath, file)));\n console.log('Removed', path.join(releasesPath, file));\n }\n }\n\n const yarnrcPath = path.resolve(config.dirPath, '.yarnrc');\n await promisePool.run(() => fs.promises.rm(yarnrcPath, { force: true }));\n\n const yarnrcYmlPath = path.resolve(config.dirPath, '.yarnrc.yml');\n const settings = yaml.load(await fs.promises.readFile(yarnrcYmlPath, 'utf8')) as any;\n settings.defaultSemverRangePrefix = '';\n settings.nodeLinker = 'node-modules';\n settings.nmMode = 'hardlinks-global';\n // c.f. https://github.com/yarnpkg/berry/pull/4698\n settings.enableGlobalCache = true;\n const originalLength = settings.plugins?.length ?? 0;\n settings.plugins = settings.plugins?.filter((p: PluginMeta) => p.path !== '.yarn/plugins/undefined.cjs') ?? [];\n if (settings.plugins.length !== originalLength) {\n const pluginPath = path.resolve(config.dirPath, '.yarnrc', 'undefined.cjs');\n await promisePool.run(() => fs.promises.rm(pluginPath, { force: true }));\n }\n if (settings.plugins.length === 0) {\n delete settings.plugins;\n }\n await fs.promises.writeFile(yarnrcYmlPath, yaml.dump(settings, { lineWidth: -1 }));\n\n const plugins = (settings.plugins ?? []).map((p: PluginMeta) => p.spec);\n const requireTypeScript = config.containingTypeScript || config.containingTypeScriptInPackages;\n importOrRemovePlugin(config, plugins, requireTypeScript, '@yarnpkg/plugin-typescript');\n importOrRemovePlugin(config, plugins, config.containingSubPackageJsons, '@yarnpkg/plugin-workspace-tools');\n spawnSync('yarn', ['dlx', 'yarn-plugin-auto-install'], config.dirPath);\n });\n}\n\nexport function getLatestVersion(packageName: string, dirPath: string): string {\n const versionsJson = spawnSyncWithStringResult('npm', ['show', packageName, 'versions', '--json'], dirPath);\n const versions = JSON.parse(versionsJson) as string[];\n return versions[versions.length - 1];\n}\n\nfunction importOrRemovePlugin(config: PackageConfig, plugins: string[], requirePlugin: boolean, plugin: string): void {\n if (requirePlugin !== plugins.includes(plugin)) {\n spawnSync('yarn', ['plugin', requirePlugin ? 'import' : 'remove', plugin], config.dirPath);\n }\n}\n\nfunction getMajorNumber(version: string): number {\n const [major] = version.split('.');\n return Number(major);\n}\n", "import { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { gitHubUtil, hasGitHubToken, octokit } from '../utils/githubUtil';\n\nexport async function setupLabels(config: PackageConfig): Promise<void> {\n return logger.function('setupLabels', async () => {\n if (!hasGitHubToken) return;\n\n const [owner, repo] = gitHubUtil.getOrgAndName(config.repository ?? '');\n if (!owner || !repo) return;\n if (owner !== 'WillBooster' && owner !== 'WillBoosterLab') return;\n\n try {\n await setupLabel(owner, repo, 'd1: x-easy :hedgehog:', 'EDE9FE');\n await setupLabel(owner, repo, 'd2: easy :rabbit2:', 'DDD6FE');\n await setupLabel(owner, repo, 'd3: medium :ox:', 'C4B5FD');\n await setupLabel(owner, repo, 'd4: hard :squid:', 'A78BFA');\n await setupLabel(owner, repo, 'd5: x-hard :whale2:', '8B5CF6');\n await setupLabel(owner, repo, 'p1: critical :fire::fire::fire:', 'EF4444');\n await setupLabel(owner, repo, 'p2: urgent :fire::fire:', 'F87171');\n await setupLabel(owner, repo, 'p3: important :fire:', 'FCA5A5');\n await setupLabel(owner, repo, 'p4: nice to have :droplet:', 'FECACA');\n await setupLabel(owner, repo, 'r: blitz', '5300bc');\n await setupLabel(owner, repo, 'r: firebase', 'ffca28');\n await setupLabel(owner, repo, 'r: prisma', '0c344b');\n await setupLabel(owner, repo, 'r: react', '61dafb');\n await setupLabel(owner, repo, 'r: svelte', 'ff3e00');\n await setupLabel(owner, repo, 'r: semantic-release', '494949');\n await setupLabel(owner, repo, 'ready :rocket:', '22C55E');\n await setupLabel(owner, repo, 'review requested :mag:', 'FBCA04');\n await setupLabel(owner, repo, 'released :bookmark:', '6366F1');\n await setupLabel(owner, repo, 's: 0.5h :clock1230:', 'F3F4F6');\n await setupLabel(owner, repo, 's: 1h :clock1:', 'E5E7EB');\n await setupLabel(owner, repo, 's: 2h :clock2:', 'D1D5DB');\n await setupLabel(owner, repo, 's: 3h :clock3:', '9CA3AF');\n await setupLabel(owner, repo, 's: 5h :clock5:', '6B7280');\n await setupLabel(owner, repo, 's: 8h :clock8:', '4B5563');\n await setupLabel(owner, repo, 's: 13h :clock1:', '374151');\n await setupLabel(owner, repo, 't: build :hammer:', 'BFDBFE');\n await setupLabel(owner, repo, 't: chore :broom:', 'BFDBFE');\n await setupLabel(owner, repo, 't: ci :construction_worker:', 'BFDBFE');\n await setupLabel(owner, repo, 't: docs :memo:', 'BFDBFE');\n await setupLabel(owner, repo, 't: feat :sparkles:', 'BFDBFE');\n await setupLabel(owner, repo, 't: fix :bug:', 'BFDBFE');\n await setupLabel(owner, repo, 't: perf :zap:', 'BFDBFE');\n await setupLabel(owner, repo, 't: refactor :recycle:', 'BFDBFE');\n await setupLabel(owner, repo, 't: style :lipstick:', 'BFDBFE');\n await setupLabel(owner, repo, 't: test :test_tube:', 'BFDBFE');\n await setupLabel(owner, repo, 'project', '24292F');\n\n await deleteLabel(owner, repo, 'bug');\n await deleteLabel(owner, repo, 'documentation');\n await deleteLabel(owner, repo, 'duplicate');\n await deleteLabel(owner, repo, 'enhancement');\n await deleteLabel(owner, repo, 'good first issue');\n await deleteLabel(owner, repo, 'help wanted');\n await deleteLabel(owner, repo, 'invalid');\n await deleteLabel(owner, repo, 'question');\n await deleteLabel(owner, repo, 'wontfix');\n\n await deleteLabel(owner, repo, 'ready');\n await deleteLabel(owner, repo, 'review requested');\n await deleteLabel(owner, repo, 'released');\n await deleteLabel(owner, repo, 'semantic-release');\n } catch (error) {\n console.warn('Skip setupLabels due to:', (error as Error)?.stack ?? error);\n }\n });\n}\n\nasync function setupLabel(owner: string, repo: string, name: string, color: string): Promise<void> {\n try {\n await octokit.request('POST /repos/{owner}/{repo}/labels', {\n owner,\n repo,\n name,\n color,\n });\n } catch {\n await octokit.request('PATCH /repos/{owner}/{repo}/labels/{name}', {\n owner,\n repo,\n name,\n color,\n });\n }\n}\n\nasync function deleteLabel(owner: string, repo: string, name: string): Promise<void> {\n try {\n await octokit.request('DELETE /repos/{owner}/{repo}/labels/{name}', {\n owner,\n repo,\n name,\n });\n } catch {\n // do nothing\n }\n}\n", "import dotenv from 'dotenv';\nimport sodium from 'libsodium-wrappers';\n\nimport { logger } from '../logger';\nimport { PackageConfig } from '../packageConfig';\nimport { gitHubUtil, hasGitHubToken, octokit } from '../utils/githubUtil';\n\nconst deprecatedSecretNames = ['READY_DISCORD_WEBHOOK_URL'];\n\nexport async function setupSecrets(config: PackageConfig): Promise<void> {\n return logger.function('setupSecrets', async () => {\n if (!hasGitHubToken) return;\n\n const [owner, repo] = gitHubUtil.getOrgAndName(config.repository ?? '');\n if (!owner || !repo || owner !== 'WillBoosterLab') return;\n\n const parsed = dotenv.config().parsed || {};\n if (Object.keys(parsed).length === 0) return;\n\n try {\n for (const secretName of deprecatedSecretNames) {\n try {\n await octokit.request('DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}', {\n owner,\n repo,\n secret_name: secretName,\n });\n } catch {\n // do nothing\n }\n }\n\n const response = await octokit.request('GET /repos/{owner}/{repo}/actions/secrets/public-key', {\n owner,\n repo,\n });\n const { key, key_id: keyId } = response.data;\n\n await sodium.ready;\n\n for (const [name, secret] of Object.entries(parsed)) {\n if (config.publicRepo && name === 'GH_BOT_PAT') continue;\n if (!config.publicRepo && name === 'PUBLIC_GH_BOT_PAT') continue;\n\n // Convert Secret & Base64 key to Uint8Array.\n const rawKey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL);\n const rawSec = sodium.from_string(secret);\n\n // Encrypt the secret using LibSodium\n const encBytes = sodium.crypto_box_seal(rawSec, rawKey);\n\n // Convert encrypted Uint8Array to Base64\n const encBase64 = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL);\n\n await octokit.request('PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}', {\n owner,\n repo,\n secret_name: name,\n encrypted_value: encBase64,\n key_id: keyId,\n });\n }\n } catch (error) {\n console.warn('Skip setupSecrets due to:', (error as Error)?.stack ?? error);\n }\n });\n}\n", "import { PackageConfig } from '../packageConfig';\n\nexport async function setupSettings(config: PackageConfig): Promise<void> {\n // TODO: implement code for https://github.com/WillBooster/wbfy/issues/324\n}\n", "import fs from 'node:fs';\nimport fsp from 'node:fs/promises';\nimport path from 'node:path';\n\nimport glob from 'glob';\nimport { simpleGit } from 'simple-git';\nimport { PackageJson } from 'type-fest';\n\nimport { gitHubUtil, octokit } from './utils/githubUtil';\n\nexport interface PackageConfig {\n dirPath: string;\n root: boolean;\n publicRepo: boolean;\n referredByOtherRepo: boolean;\n repository?: string;\n isEsmPackage: boolean;\n willBoosterConfigs: boolean;\n containingSubPackageJsons: boolean;\n containingDockerfile: boolean;\n containingGemfile: boolean;\n containingGoMod: boolean;\n containingPackageJson: boolean;\n containingPoetryLock: boolean;\n containingPomXml: boolean;\n containingPubspecYaml: boolean;\n containingTemplateYaml: boolean;\n\n containingJavaScript: boolean;\n containingTypeScript: boolean;\n containingJsxOrTsx: boolean;\n containingJavaScriptInPackages: boolean;\n containingTypeScriptInPackages: boolean;\n containingJsxOrTsxInPackages: boolean;\n depending: {\n blitz?: string;\n firebase: boolean;\n playwright: boolean;\n prisma: boolean;\n reactNative: boolean;\n semanticRelease: boolean;\n storybook: boolean;\n };\n release: {\n branches: string[];\n github: boolean;\n npm: boolean;\n };\n eslintBase?: string;\n versionsText?: string;\n}\n\nexport async function getPackageConfig(dirPath: string): Promise<PackageConfig | undefined> {\n const packageJsonPath = path.resolve(dirPath, 'package.json');\n try {\n const containingPackageJson = fs.existsSync(packageJsonPath);\n let dependencies: PackageJson['dependencies'] = {};\n let devDependencies: PackageJson['devDependencies'] = {};\n let packageJson: PackageJson = {};\n let isEsmPackage = false;\n if (containingPackageJson) {\n const packageJsonText = fs.readFileSync(packageJsonPath, 'utf8');\n packageJson = JSON.parse(packageJsonText);\n dependencies = packageJson.dependencies ?? {};\n devDependencies = packageJson.devDependencies ?? {};\n isEsmPackage = packageJson.type === 'module';\n }\n\n let releaseBranches: string[] = [];\n let releasePlugins: string[] = [];\n try {\n const releasercJsonPath = path.resolve(dirPath, '.releaserc.json');\n const json = JSON.parse(await fsp.readFile(releasercJsonPath, 'utf8'));\n releaseBranches = json?.branches || [];\n releasePlugins = json?.plugins?.flat() || [];\n } catch {\n // do nothing\n }\n\n const isRoot =\n path.basename(path.resolve(dirPath, '..')) !== 'packages' ||\n !fs.existsSync(path.resolve(dirPath, '..', '..', 'package.json'));\n\n let repoInfo: Record<string, any> | undefined;\n if (isRoot) {\n repoInfo = await fetchRepoInfo(dirPath, packageJson);\n }\n\n let versionsText = '';\n try {\n const content = await fsp.readFile(path.resolve(dirPath, '.tool-versions'), 'utf8');\n versionsText += content.trim();\n } catch {\n // do nothing\n }\n for (const [prefix, name] of [\n ['node', 'nodejs'],\n ['python', 'python'],\n ]) {\n try {\n const nodeVersionContent = await fsp.readFile(path.resolve(dirPath, `.${prefix}-version`), 'utf8');\n if (versionsText) {\n versionsText += '\\n';\n }\n versionsText += name + ' ' + nodeVersionContent.trim();\n } catch {\n // do nothing\n }\n }\n\n const config: PackageConfig = {\n dirPath,\n root: isRoot,\n publicRepo: repoInfo?.private === false,\n referredByOtherRepo: !!packageJson.files,\n repository: repoInfo?.full_name ? `github:${repoInfo?.full_name}` : undefined,\n isEsmPackage,\n willBoosterConfigs: packageJsonPath.includes(`${path.sep}willbooster-configs`),\n containingSubPackageJsons: glob.sync('packages/**/package.json', { cwd: dirPath }).length > 0,\n containingDockerfile:\n fs.existsSync(path.resolve(dirPath, 'Dockerfile')) ||\n fs.existsSync(path.resolve(dirPath, 'docker-compose.yml')),\n containingGemfile: fs.existsSync(path.resolve(dirPath, 'Gemfile')),\n containingGoMod: fs.existsSync(path.resolve(dirPath, 'go.mod')),\n containingPackageJson: fs.existsSync(path.resolve(dirPath, 'package.json')),\n containingPoetryLock: fs.existsSync(path.resolve(dirPath, 'poetry.lock')),\n containingPomXml: fs.existsSync(path.resolve(dirPath, 'pom.xml')),\n containingPubspecYaml: fs.existsSync(path.resolve(dirPath, 'pubspec.yaml')),\n containingTemplateYaml: fs.existsSync(path.resolve(dirPath, 'template.yaml')),\n containingJavaScript:\n glob.sync('@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}', { cwd: dirPath }).length > 0,\n containingTypeScript:\n glob.sync('@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}', { cwd: dirPath }).length > 0,\n containingJsxOrTsx: glob.sync('@(app|src|__tests__)/**/*.{t,j}sx', { cwd: dirPath }).length > 0,\n containingJavaScriptInPackages:\n glob.sync('packages/**/@(app|src|__tests__|scripts)/**/*.{cjs,mjs,js,jsx}', { cwd: dirPath }).length > 0,\n containingTypeScriptInPackages:\n glob.sync('packages/**/@(app|src|__tests__|scripts)/**/*.{cts,mts,ts,tsx}', { cwd: dirPath }).length > 0,\n containingJsxOrTsxInPackages:\n glob.sync('packages/**/@(app|src|__tests__)/**/*.{t,j}sx', { cwd: dirPath }).length > 0,\n depending: {\n blitz: (dependencies['blitz'] || devDependencies['blitz'] || '').replace('^', '')[0],\n firebase: !!devDependencies['firebase-tools'],\n playwright: !!devDependencies['playwright'],\n prisma: !!dependencies['prisma'],\n reactNative: !!dependencies['react-native'],\n semanticRelease: !!(\n devDependencies['semantic-release'] ||\n releaseBranches.length > 0 ||\n releasePlugins.length > 0\n ),\n storybook: !!devDependencies['@storybook/react'],\n },\n release: {\n branches: releaseBranches,\n github: releasePlugins.includes('@semantic-release/github'),\n npm: releasePlugins.includes('@semantic-release/npm'),\n },\n versionsText,\n };\n config.eslintBase = getEslintExtensionBase(config);\n if (\n config.containingGemfile ||\n config.containingGoMod ||\n config.containingPackageJson ||\n config.containingPoetryLock ||\n config.containingPomXml ||\n config.containingPubspecYaml ||\n config.containingTemplateYaml\n ) {\n return config;\n }\n } catch {\n // do nothing\n }\n}\n\nfunction getEslintExtensionBase(config: PackageConfig): string | undefined {\n if (config.containingTypeScript) {\n return config.containingJsxOrTsx ? '@willbooster/eslint-config-ts-react' : '@willbooster/eslint-config-ts';\n } else {\n if (config.containingJsxOrTsx) {\n return '@willbooster/eslint-config-js-react';\n } else if (config.containingJavaScript) {\n return '@willbooster/eslint-config-js';\n }\n }\n}\n\nasync function fetchRepoInfo(dirPath: string, packageJson: PackageJson): Promise<Record<string, any> | undefined> {\n const git = simpleGit(dirPath);\n const remotes = await git.getRemotes(true);\n const origin = remotes.find((r) => r.name === 'origin');\n const remoteUrl = origin?.refs?.fetch ?? origin?.refs?.push;\n if (typeof remoteUrl === 'string') {\n const json = await requestRepoInfo(remoteUrl);\n if (json) return json;\n }\n\n const url = typeof packageJson.repository === 'string' ? packageJson.repository : packageJson.repository?.url;\n if (url) {\n const json = await requestRepoInfo(url);\n if (json && json.message !== 'Not Found') return json;\n }\n}\n\nasync function requestRepoInfo(urlOrFullName: string): Promise<Record<string, any> | undefined> {\n const [org, name] = gitHubUtil.getOrgAndName(urlOrFullName);\n if (!org || !name) return;\n\n const ret = { full_name: `${org}/${name}` };\n try {\n const response = await octokit.request('GET /repos/{owner}/{repo}', {\n owner: org,\n repo: name,\n });\n Object.assign(ret, response.data);\n } catch {\n // do nothing\n }\n return ret;\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_node_path", "import_glob", "import_yargs", "import_node_fs", "import_node_path", "Options", "options", "Logger", "name", "func", "options", "logger", "import_minimal_promise_pool", "promisePool", "import_node_child_process", "spawnSync", "command", "args", "cwd", "retry", "newCmd", "newArgs", "options", "getSpawnSyncArgs", "child_process", "spawnSyncWithStringResult", "proc", "error", "s", "env", "generateVersionConfigs", "config", "logger", "core", "POETRY_VERSION", "PYTHON_VERSION", "JAVA_VERSION", "lines", "versionText", "line", "name", "version", "promisePool", "fs", "path", "updateLine", "spawnSyncWithStringResult", "toolVersionsPath", "spawnSync", "insertionIndex", "toolName", "index", "l", "import_node_path", "extensions", "import_promises", "FsUtil", "filePath", "fsp", "content", "newContent", "generateExtensions", "extensions", "generateEditorconfig", "config", "logger", "filePath", "path", "promisePool", "FsUtil", "import_node_path", "import_node_fs", "userContentHeader", "userContentHeaderRegex", "separator", "separatorPrefix", "defaultHeadUserContent", "defaultTailUserContent", "ignoreFileUtil", "filePath", "content", "fs", "lastHeaderIndex", "getIndexOfTailUserContentHeader", "index", "lastIndex", "commonContent", "generateEslintignore", "config", "logger", "filePath", "path", "content", "FsUtil", "headUserContent", "ignoreFileUtil", "tailUserContent", "gitignoreFilePath", "gitignoreContent", "newContent", "promisePool", "import_node_fs", "import_node_path", "import_deepmerge", "import_deepmerge", "overwriteMerge", "destinationArray", "sourceArray", "combineMerge", "target", "source", "options", "destination", "index", "item", "merge", "generateEslintrc", "config", "rootConfig", "logger", "bases", "newSettings", "filePath", "path", "oldContent", "fs", "oldSettings", "ext", "newExtends", "merge", "combineMerge", "addExtensionToHead", "newContent", "promisePool", "FsUtil", "extension", "e", "import_node_path", "newContent", "extensions", "ext", "generateGitattributes", "config", "logger", "filePath", "path", "promisePool", "FsUtil", "import_node_fs", "import_node_os", "import_node_path", "defaultNames", "commonContent", "generateGitignore", "config", "rootConfig", "logger", "filePath", "path", "content", "FsUtil", "headUserContent", "ignoreFileUtil", "tailUserContent", "names", "generated", "name", "readCache", "url", "responseText", "promisePool", "writeCache", "options", "newContent", "dirPath", "os", "fs", "stat", "import_node_fs", "import_node_path", "import_node_fs", "import_node_path", "import_deepmerge", "EslintUtil", "config", "import_core", "token", "hasGitHubToken", "octokit", "GitHubUtil", "urlOrFullName", "_a", "urlWithoutProtocol", "names", "org", "name", "gitHubUtil", "srcDirectories", "getSrcDirs", "config", "jsCommonDeps", "tsCommonDeps", "reactCommonDeps", "devDeps", "generatePackageJson", "config", "rootConfig", "skipAddingDeps", "logger", "core", "_a", "_b", "filePath", "path", "jsonText", "fs", "jsonObj", "removeDeprecatedStuff", "scriptKey", "merge", "generateScripts", "generatePrettierSuffix", "dependencies", "devDependencies", "poetryDependencies", "dep", "owner", "gitHubUtil", "EslintUtil", "dirs", "dir", "entries", "filteredDirNames", "entry", "dirPath", "fileName", "d", "spawnSync", "deps", "promisePool", "scripts", "getSrcDirs", "extensions", "existingContent", "index", "ignoreFileUtil", "line", "newLine", "l", "DEFAULT_COMMAND", "settings", "generateHuskyrc", "config", "logger", "core", "_a", "_b", "packageJsonPath", "path", "jsonText", "fs", "packageJson", "dirPath", "spawnSync", "preCommitFilePath", "content", "promisePool", "prePush", "typecheck", "generateScripts", "postMergeCommands", "postMergeCommand", "import_node_fs", "import_node_path", "newContent", "generateIdeaSettings", "config", "logger", "dirPath", "path", "fs", "filePath", "promisePool", "FsUtil", "import_node_fs", "import_node_path", "generateLintstagedrc", "config", "logger", "core", "packagePrefix", "lines", "eslint", "getEslintKey", "EslintUtil", "packagesFilter", "extensions", "getEslintFilterForPrettier", "newContent", "filePath", "path", "promisePool", "fs", "FsUtil", "getSrcDirs", "import_node_path", "commonContent", "generatePrettierignore", "config", "logger", "filePath", "path", "content", "FsUtil", "headUserContent", "ignoreFileUtil", "tailUserContent", "gitignoreFilePath", "gitignoreContent", "additionalContent", "newContent", "promisePool", "import_node_fs", "import_node_path", "generateReadme", "config", "logger", "_a", "_b", "filePath", "path", "newContent", "fs", "insertBadge", "semanticReleaseBadge", "repository", "fileNames", "fileName", "badgeName", "badge", "promisePool", "FsUtil", "badgePos", "inserted", "i", "import_node_fs", "import_node_path", "import_deepmerge", "generateReleaserc", "rootConfig", "logger", "filePath", "path", "settings", "fs", "plugins", "i", "plugin", "oldConfig", "merge", "overwriteMerge", "newContent", "promisePool", "FsUtil", "import_node_fs", "import_node_path", "import_deepmerge", "import_lodash", "jsonObj", "generateRenovateJson", "config", "logger", "newSettings", "cloneDeep", "filePath", "path", "oldContent", "fs", "oldSettings", "merge", "overwriteMerge", "promisePool", "newContent", "FsUtil", "import_node_fs", "import_node_path", "import_deepmerge", "import_lodash", "sortKeys", "obj", "keyAndValues", "key1", "key2", "key", "value", "rootJsonObj", "subJsonObj", "generateTsconfig", "config", "rootConfig", "logger", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "newSettings", "cloneDeep", "dirPath", "filePath", "path", "existingContent", "fs", "oldSettings", "merge", "combineMerge", "sortKeys", "newContent", "promisePool", "FsUtil", "import_node_fs", "import_node_path", "import_deepmerge", "import_js_yaml", "import_lodash", "workflows", "generateWorkflow", "rootConfig", "logger", "_a", "workflowsPath", "path", "fs", "semanticYmlPath", "promisePool", "fileNames", "dirent", "fileName", "kind", "writeWorkflowYaml", "config", "_b", "newSettings", "cloneDeep", "filePath", "oldContent", "oldSettings", "yaml", "merge", "combineMerge", "job", "normalizeJob", "setSchedule", "migrateWorkflow", "writeYaml", "params", "_c", "migrateJob", "sortKeys", "newSecrets", "inclusiveMinHourJst", "exclusiveMaxHourJst", "minuteUtc", "hourUtc", "hourJst", "inRange", "minJst", "cron", "yamlText", "import_node_fs", "import_node_path", "import_js_yaml", "generateYarnrcYml", "config", "logger", "_a", "_b", "currentVersion", "spawnSyncWithStringResult", "latestVersion", "getLatestVersion", "getMajorNumber", "spawnSync", "releasesPath", "path", "fs", "file", "promisePool", "yarnrcPath", "yarnrcYmlPath", "settings", "yaml", "originalLength", "p", "pluginPath", "plugins", "requireTypeScript", "importOrRemovePlugin", "packageName", "dirPath", "versionsJson", "versions", "requirePlugin", "plugin", "version", "major", "setupLabels", "config", "logger", "hasGitHubToken", "owner", "repo", "gitHubUtil", "setupLabel", "deleteLabel", "error", "name", "color", "octokit", "import_dotenv", "import_libsodium_wrappers", "deprecatedSecretNames", "setupSecrets", "config", "logger", "hasGitHubToken", "owner", "repo", "gitHubUtil", "parsed", "dotenv", "secretName", "octokit", "response", "key", "keyId", "sodium", "name", "secret", "rawKey", "rawSec", "encBytes", "encBase64", "error", "setupSettings", "config", "import_node_fs", "import_promises", "import_node_path", "import_glob", "import_simple_git", "getPackageConfig", "dirPath", "_a", "packageJsonPath", "path", "containingPackageJson", "fs", "dependencies", "devDependencies", "packageJson", "isEsmPackage", "packageJsonText", "releaseBranches", "releasePlugins", "releasercJsonPath", "json", "fsp", "isRoot", "repoInfo", "fetchRepoInfo", "versionsText", "content", "prefix", "name", "nodeVersionContent", "config", "glob", "getEslintExtensionBase", "_b", "_c", "origin", "r", "remoteUrl", "requestRepoInfo", "url", "urlOrFullName", "org", "gitHubUtil", "ret", "response", "octokit", "main", "argv", "yargs", "options", "rootDirPath", "rootConfig", "getPackageConfig", "subDirPaths", "glob", "subDirPath", "path", "subPackageConfigs", "config", "allPackageConfigs", "generateVersionConfigs", "generateYarnrcYml", "generateEditorconfig", "generateGitattributes", "generateHuskyrc", "generateIdeaSettings", "generateLintstagedrc", "generateReadme", "generateRenovateJson", "generateReleaserc", "generateWorkflow", "setupLabels", "setupSecrets", "setupSettings", "promisePool", "promises", "generateGitignore", "generatePrettierignore", "generatePackageJson", "generateTsconfig", "generateEslintrc", "generateEslintignore", "spawnSync"]
7
- }