@bradhezh/create-prj 1.0.4 → 1.0.6

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.
Files changed (51) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/plugins/000-type.js +2 -0
  4. package/dist/plugins/000-type.js.map +1 -0
  5. package/dist/plugins/001-monorepo.js +2 -0
  6. package/dist/plugins/001-monorepo.js.map +1 -0
  7. package/dist/plugins/002-node-ts.js +2 -0
  8. package/dist/plugins/002-node-ts.js.map +1 -0
  9. package/dist/plugins/003-be-deploy.js +2 -0
  10. package/dist/plugins/003-be-deploy.js.map +1 -0
  11. package/dist/plugins/004-be-deploy-src.js +2 -0
  12. package/dist/plugins/004-be-deploy-src.js.map +1 -0
  13. package/dist/plugins/005-fe-deploy.js +2 -0
  14. package/dist/plugins/005-fe-deploy.js.map +1 -0
  15. package/dist/plugins/006-fe-deploy-src.js +2 -0
  16. package/dist/plugins/006-fe-deploy-src.js.map +1 -0
  17. package/dist/plugins/007-render.js +2 -0
  18. package/dist/plugins/007-render.js.map +1 -0
  19. package/dist/plugins/008-docker.js +2 -0
  20. package/dist/plugins/008-docker.js.map +1 -0
  21. package/dist/plugins/009-fe-vercel.js +2 -0
  22. package/dist/plugins/009-fe-vercel.js.map +1 -0
  23. package/dist/plugins/010-m-deploy.js +2 -0
  24. package/dist/plugins/010-m-deploy.js.map +1 -0
  25. package/dist/plugins/011-m-expo.js +2 -0
  26. package/dist/plugins/011-m-expo.js.map +1 -0
  27. package/dist/plugins/012-pkg-deploy.js +2 -0
  28. package/dist/plugins/012-pkg-deploy.js.map +1 -0
  29. package/dist/plugins/100-builder.js +2 -0
  30. package/dist/plugins/100-builder.js.map +1 -0
  31. package/dist/plugins/101-rspack.js +2 -0
  32. package/dist/plugins/101-rspack.js.map +1 -0
  33. package/dist/plugins/200-test.js +2 -0
  34. package/dist/plugins/200-test.js.map +1 -0
  35. package/dist/plugins/201-jest.js +2 -0
  36. package/dist/plugins/201-jest.js.map +1 -0
  37. package/dist/plugins/202-lint.js +2 -0
  38. package/dist/plugins/202-lint.js.map +1 -0
  39. package/dist/plugins/203-eslint.js +2 -0
  40. package/dist/plugins/203-eslint.js.map +1 -0
  41. package/dist/plugins/204-git.js +2 -0
  42. package/dist/plugins/204-git.js.map +1 -0
  43. package/dist/plugins/205-github.js +2 -0
  44. package/dist/plugins/205-github.js.map +1 -0
  45. package/dist/plugins/206-cicd.js +2 -0
  46. package/dist/plugins/206-cicd.js.map +1 -0
  47. package/dist/plugins/207-gha.js +2 -0
  48. package/dist/plugins/207-gha.js.map +1 -0
  49. package/dist/registry.js +2 -0
  50. package/dist/registry.js.map +1 -0
  51. package/package.json +27 -24
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},r={};function t(o){var s=r[o];if(void 0!==s)return s.exports;var n=r[o]={exports:{}};return e[o](n,n.exports,t),n.exports}t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let o=require("../registry.js");(0,o.regOption)({name:o.meta.plugin.option.lint,label:"Lint",values:[{name:o.meta.plugin.value.none,label:"None",pos:{mode:o.PosMode.last},skips:[],keeps:[],requires:[]}]},o.meta.system.option.category.optional)})();
2
+ //# sourceMappingURL=202-lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/202-lint.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/202-lint.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { regOption, meta, PosMode } from \"@/registry\";\n\nregOption(\n {\n name: meta.plugin.option.lint,\n label: \"Lint\",\n values: [\n {\n name: meta.plugin.value.none,\n label: \"None\",\n pos: { mode: PosMode.last },\n skips: [],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.optional,\n);\n"],"names":["regOption","meta","PosMode"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCE3BA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,KAAMC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,CAC7B,MAAO,OACP,OAAQ,CACN,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,IAAsB,CAC5B,MAAO,OACP,IAAK,CAAE,KAAMC,EAAAA,OAAAA,CAAAA,IAAY,AAAC,EAC1B,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACD,AACH,EACAD,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,QAAoC,C"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,t,r={},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.rv=()=>"1.7.3",o.ruid="bundler=rspack@1.7.3";let a=require("node:fs/promises"),s=require("node:path"),i=require("@clack/prompts"),u=require("node:util"),l=require("../registry.js");var c="nodec",p="eslint";let f=require("node:child_process");require("node:os");let d=require("axios");function m(e,t,r,n,o,a,s){try{var i=e[a](s),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function y(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function s(e){m(a,n,o,s,i,"next",e)}function i(e){m(a,n,o,s,i,"throw",e)}s(void 0)})}}function b(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function h(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:u(0)}),i(s,"throw",{value:u(1)}),i(s,"return",{value:u(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function u(i){return function(u){var l=[i,u];if(r)throw TypeError("Generator is already executing.");for(;s&&(s=0,l[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&l[0]?n.return:l[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,l[1])).done)return o;switch(n=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,n=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],n=0}finally{r=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}require("open"),require("comment-json"),require("yaml"),require("node:readline/promises");var v=(0,u.promisify)(f.exec),g=function(e,t,r,n){return y(function(){var o,a,s,i,l,c,p,f,d,m,b,g,w,k,j,O,x,S,P;return h(this,function(q){switch(q.label){case 0:if(!(a=null!=(o=e[null!=t?t:"def"])?o:e.def))return[2];s=!0,i=!1,l=void 0,q.label=1;case 1:q.trys.push([1,6,7,8]),c=a.filter(function(e){return!e.dev})[Symbol.iterator](),q.label=2;case 2:if(s=(p=c.next()).done)return[3,5];return d=(f=p.value).name,[4,(m=f.version,y(function(){return h(this,function(e){switch(e.label){case 0:return[4,v((0,u.format)('%s pkg set "dependencies.%s"="%s"',r,d,m),{cwd:n})];case 1:return e.sent(),[2]}})})())];case 3:q.sent(),q.label=4;case 4:return s=!0,[3,2];case 5:return[3,8];case 6:return b=q.sent(),i=!0,l=b,[3,8];case 7:try{s||null==c.return||c.return()}finally{if(i)throw l}return[7];case 8:g=!0,w=!1,k=void 0,q.label=9;case 9:q.trys.push([9,14,15,16]),j=a.filter(function(e){return e.dev})[Symbol.iterator](),q.label=10;case 10:if(g=(O=j.next()).done)return[3,13];return S=(x=O.value).name,[4,(P=x.version,y(function(){return h(this,function(e){switch(e.label){case 0:return[4,v((0,u.format)('%s pkg set "devDependencies.%s"="%s"',r,S,P),{cwd:n})];case 1:return e.sent(),[2]}})})())];case 11:q.sent(),q.label=12;case 12:return g=!0,[3,10];case 13:return[3,16];case 14:return b=q.sent(),w=!0,k=b,[3,16];case 15:try{g||null==j.return||j.return()}finally{if(w)throw k}return[7];case 16:return[2]}})})()};function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function k(e,t,r,n,o,a,s){try{var i=e[a](s),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function j(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function s(e){k(a,n,o,s,i,"next",e)}function i(e){k(a,n,o,s,i,"throw",e)}s(void 0)})}}function O(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function x(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:u(0)}),i(s,"throw",{value:u(1)}),i(s,"return",{value:u(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function u(i){return function(u){var l=[i,u];if(r)throw TypeError("Generator is already executing.");for(;s&&(s=0,l[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&l[0]?n.return:l[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,l[1])).done)return o;switch(n=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,n=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],n=0}finally{r=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var S=function(e){var t=e.npm;if(t!==l.NPM.npm&&t!==l.NPM.pnpm)throw Error();return{npm:t,monorepo:e.type===l.meta.plugin.type.monorepo,test:e.test}},P=function(e,t){var r=t.monorepo;return j(function(){var t,n,o,i,u,p,f,d;return x(this,function(m){switch(m.label){case 0:if(i=(o=null!=(t=null==(n=e.monorepo)?void 0:n.types)?t:[e.type]).map(function(t){var n,o,a,s,i=null==(o=e[t])?void 0:o.name;if(!i)throw Error();return{typeFrmwk:null!=(n=null==(a=e[t])?void 0:a.framework)?n:t,name:i,cwd:r?i:".",ts:null==(s=e[t])?void 0:s.typescript}}).filter(function(e){return!(0,l.typeFrmwksSkip)(void 0,l.meta.plugin.option.test,void 0).includes(e.typeFrmwk)}),!(o.length<=1))return[3,1];return u=i,[3,3];case 1:var y;return f=(p=function(e){if(Array.isArray(e))return w(e)}(y=i)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return w(e,void 0);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return w(e,void 0)}}(y)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat,d={typeFrmwk:l.meta.system.type.shared,name:l.meta.system.type.shared,cwd:l.meta.system.type.shared},[4,(0,a.access)((0,s.join)(l.meta.system.type.shared,"tsconfig.json")).then(function(){return!0}).catch(function(){return!1})];case 2:u=f.apply(p,[[(d.ts=m.sent()?c:l.meta.plugin.value.none,d)]]),m.label=3;case 3:return[2,u]}})})()},q=function(e){var t=e.ts,r=e.test,n=e.typeFrmwk,o=e.cwd;return j(function(){var e,i,u,c;return x(this,function(p){switch(p.label){case 0:var f,m;if(!(u=null!=(e=D[null!=t?t:"def"])?e:D.def)||!(c=null!=(i=u[null!=r?r:"def"])?i:u.def))throw Error();return[4,(f=c,m=n===l.meta.plugin.type.lib||n===l.meta.plugin.type.cli?"pkg":n,y(function(){var e,t,r,n,i,u;return h(this,function(l){switch(l.label){case 0:if(!(r=null!=(e=f[null!=m?m:"def"])?e:f.def))return[2];return n=(0,s.join)(null!=o?o:"",r.name),[4,(0,d.get)("".concat(I).concat(null!=(t=r.path)?t:""),{responseType:"text"})];case 1:if("string"!=typeof(u=b((i=l.sent()).data,ArrayBuffer)?new Uint8Array(i.data):i.data)&&!b(u,Uint8Array))throw Error();return[4,(0,a.writeFile)(n,u)];case 2:case 4:return l.sent(),[2];case 3:return l.sent(),[4,(0,a.rm)(n,{force:!0})]}})})())];case 1:return p.sent(),[2]}})})()},E=function(e){var t=e.npm,r=e.cwd,n=e.ts;return j(function(){return x(this,function(e){switch(e.label){case 0:var o,a;return[4,(o={scripts:F},a="scripts",y(function(){var e,n,s,i,l,c,p,f,d,m,b;return h(this,function(g){switch(g.label){case 0:if(!(n=null!=(e=o[null!=a?a:"def"])?e:o.def))return[2];s=!0,i=!1,l=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),c=n[Symbol.iterator](),g.label=2;case 2:if(s=(p=c.next()).done)return[3,5];return d=(f=p.value).name,[4,(m=f.script,y(function(){return h(this,function(e){switch(e.label){case 0:if(m)return[3,2];return[4,v((0,u.format)('%s pkg delete "scripts.%s"',t,d),{cwd:r})];case 1:case 3:return e.sent(),[2];case 2:return[4,v((0,u.format)('%s pkg set "scripts.%s"="%s"',t,d,m),{cwd:r})]}})})())];case 3:g.sent(),g.label=4;case 4:return s=!0,[3,2];case 5:return[3,8];case 6:return b=g.sent(),i=!0,l=b,[3,8];case 7:try{s||null==c.return||c.return()}finally{if(i)throw l}return[7];case 8:return[2]}})})())];case 1:return e.sent(),[4,g({pkgDeps:C},"pkgDeps",t,r)];case 2:if(e.sent(),n===l.meta.plugin.value.none)return[3,4];return[4,g({tsPkgDeps:R},"tsPkgDeps",t,r)];case 3:e.sent(),e.label=4;case 4:return[2]}})})()},T="ESLint";(0,l.regValue)({name:p,label:T,skips:[],keeps:[],requires:[],plugin:{name:"".concat(l.meta.plugin.option.lint,"_").concat(p),label:T,run:function(e){return j(function(){var t,r,n,o,a,s,l,c,f,d;return x(this,function(m){switch(m.label){case 0:return(t=(0,i.spinner)()).start(),i.log.info((0,u.format)(N.pluginStart,this.label)),r=S(e),[4,P(e,r)];case 1:n=m.sent(),o=!0,a=!1,s=void 0,m.label=2;case 2:m.trys.push([2,8,9,10]),l=n[Symbol.iterator](),m.label=3;case 3:if(o=(c=l.next()).done)return[3,7];return f=c.value,i.log.info((0,u.format)(N.forType,f.name)),[4,q(O({},r,f))];case 4:return m.sent(),i.log.info(N.setPkg),[4,E(O({},r,f))];case 5:m.sent(),m.label=6;case 6:return o=!0,[3,3];case 7:return[3,10];case 8:return d=m.sent(),a=!0,s=d,[3,10];case 9:try{o||null==l.return||l.return()}finally{if(a)throw s}return[7];case 10:return e[p]={},i.log.info((0,u.format)(N.pluginFinish,this.label)),t.stop(),[2]}})}).call(this)}}},l.meta.plugin.option.lint);var I="https://raw.githubusercontent.com/bradhezh/prj-template/master/eslt",A="eslint.config.mjs",D={none:{jest:{def:{name:A,path:"/ts-n/jest/eslint.config.mjs"}},def:{def:{name:A,path:"/ts-n/no/eslint.config.mjs"}}},def:{jest:{pkg:{name:A,path:"/def/jest/pkg/eslint.config.mjs"},shared:{name:A,path:"/def/jest/pkg/eslint.config.mjs"},def:{name:A,path:"/def/jest/def/eslint.config.mjs"}},def:{pkg:{name:A,path:"/def/no/pkg/eslint.config.mjs"},shared:{name:A,path:"/def/no/pkg/eslint.config.mjs"},def:{name:A,path:"/def/no/def/eslint.config.mjs"}}}},F=[{name:"lint",script:"eslint ."}],C=[{name:"@eslint/js",version:"^9",dev:!0},{name:"eslint",version:"^9",dev:!0},{name:"globals",version:"^16",dev:!0}],R=[{name:"typescript-eslint",version:"^8",dev:!0}],N=(e=O({},{validate:"Option required.",type:{label:"Project type"},monorepo:{name:{label:"Monorepo name"},types:{label:"Types in monorepo"}},optional:{hint:"Optional options: %s",options:{label:"Configure them one by one, or choose none of them (except required ones)?"},defaults:{label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"}},opCanceled:"Operation cancelled.",cwdNonEmpty:"Current work directory must be empty.",pmUnsupported:"Only npm or pnpm supported for now.",pnpmRequired:"Only pnpm supported for monorepo for now.",elemExist:"Element exists already.",refsRequired:'When using "after", reference elements must be specified.',circularDep:"Circular dependency.",afterLast:"Element cannot be after ones as the last.",invSkipOrKeep:"Invalid skip or keep.",invElem:"Invalid element.",sysType:"Type cannot be registered with a system name.",typeNotExist:"Type does not exist.",typeRequired:"Type must be specified for type options.",sysConfKey:"Option cannot be registered with a system name.",optionNotExist:"Option does not exist.",optionConflict:"Option conflict between compulsory and optional ones.",valueNotExist:"Value does not exist.",invFormat:"Invalid format of %s.",userGot:"Paste your username: ",userRequired:"Username required.",readTokenGot:"Paste your read-only token: ",readTokenRequired:"Read-only token required.",tokenGot:"Paste your read-write token: ",tokenRequired:"Read-write token required.",pluginStart:"Configuring %s",setPkg:"Setting packages",setWkspace:"Setting workspace",setShared:"Setting shared",pluginFinish:"%s completed!"}),t=t={forType:'for "%s"'},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e)})();
2
+ //# sourceMappingURL=203-eslint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/203-eslint.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/plugins/203-eslint.ts","webpack://@bradhezh/create-prj/./src/message.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","import { exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, readFile, writeFile, rm, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { get } from \"axios\";\nimport open from \"open\";\nimport Json from \"comment-json\";\nimport Yaml from \"yaml\";\nimport { createInterface } from \"node:readline/promises\";\nimport { group, text, password, cancel, spinner } from \"@clack/prompts\";\n\nimport { meta, NPM } from \"@/registry\";\nimport { message } from \"@/message\";\n\nconst exec = promisify(execAsync);\n\nconst command = {\n volta: \"volta -v\",\n node: \"node -v\",\n npm: `%s -v`,\n pnpm: \"pnpm -v\",\n setPkgName: '%s pkg set name=\"%s\"',\n setPkgVoltaNode: '%s pkg set \"volta.node\"=\"%s\"',\n setPkgVoltaNpm: '%s pkg set \"volta.%s\"=\"%s\"',\n setPkgPkgMgr: '%s pkg set packageManager=\"%s@%s\"',\n setPkgScript: '%s pkg set \"scripts.%s\"=\"%s\"',\n getPkgScript: '%s pkg get \"scripts.%s\"',\n rmPkgScript: '%s pkg delete \"scripts.%s\"',\n setPkgDeps: '%s pkg set \"dependencies.%s\"=\"%s\"',\n setPkgDevDeps: '%s pkg set \"devDependencies.%s\"=\"%s\"',\n setPkgBin: '%s pkg set \"bin.%s\"=\"%s\"',\n rmNodeLinker: \"pnpm config --location project delete node-linker\",\n tar: \"tar -xvf %s\",\n} as const;\n\nexport const setPkgName = async (name: string, npm: NPM, cwd?: string) => {\n await exec(format(command.setPkgName, npm, name), { cwd });\n};\n\nlet volta: boolean | undefined;\n\nexport const setPkgVers = async (npm: NPM, cwd?: string) => {\n void (\n volta !== undefined ||\n (volta = await exec(command.volta)\n .then(() => true)\n .catch(() => false))\n );\n if (volta) {\n const node = (await exec(command.node)).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNode,\n npm,\n !node.startsWith(\"v\") ? node : node.slice(1),\n ),\n { cwd },\n );\n const npmV = (await exec(format(command.npm, npm))).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNpm,\n npm,\n npm,\n !npmV.startsWith(\"v\") ? npmV : npmV.slice(1),\n ),\n { cwd },\n );\n }\n\n if (npm !== NPM.pnpm) {\n return;\n }\n const pnpm = (await exec(command.pnpm)).stdout.trim();\n await exec(\n format(\n command.setPkgPkgMgr,\n NPM.pnpm,\n NPM.pnpm,\n !pnpm.startsWith(\"v\") ? pnpm : pnpm.slice(1),\n ),\n { cwd },\n );\n};\n\nexport const setPkgScript = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n if (!script) {\n await exec(format(command.rmPkgScript, npm, name), { cwd });\n return;\n }\n await exec(format(command.setPkgScript, npm, name, script), { cwd });\n};\n\nexport const getPkgScript = async (name: string, npm: NPM, cwd?: string) => {\n const script = (\n await exec(format(command.getPkgScript, npm, name), { cwd })\n ).stdout.trim();\n return script === \"{}\" ? undefined : script;\n};\n\ntype Script = { name: string; script?: string };\nexport const defKey = \"def\" as const;\nexport type Scripts<T extends string> = Partial<\n Record<T | typeof defKey, readonly Script[]>\n>;\n\nexport const setPkgScripts = async <K extends string, T extends Scripts<K>>(\n scripts: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const scripts0 = scripts[key ?? defKey] ?? scripts.def;\n if (!scripts0) {\n return;\n }\n for (const { name, script } of scripts0) {\n await setPkgScript(name, script, npm, cwd);\n }\n};\n\nexport const setPkgDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDeps, npm, name, version), { cwd });\n};\n\nexport const setPkgDevDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDevDeps, npm, name, version), { cwd });\n};\n\ntype PkgDep = { name: string; version: string; dev?: boolean };\nexport type PkgDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly PkgDep[]>\n>;\n\nexport const setPkgDeps = async <K extends string, T extends PkgDeps<K>>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n for (const { name, version } of deps0.filter((e) => !e.dev)) {\n await setPkgDep(name, version, npm, cwd);\n }\n for (const { name, version } of deps0.filter((e) => e.dev)) {\n await setPkgDevDep(name, version, npm, cwd);\n }\n};\n\nexport const setPkgBin = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(\n format(\n command.setPkgBin,\n npm,\n !name.includes(\"/\") ? name : name.split(\"/\").pop(),\n script ?? \"dist/index.js\",\n ),\n { cwd },\n );\n};\n\nconst workspace = \"pnpm-workspace.yaml\" as const;\n\nexport const createWkspace = async (pkgs: readonly string[]) => {\n const packages = pkgs.length <= 1 ? pkgs : [...pkgs, meta.system.type.shared];\n for (const pkg of packages) {\n await mkdir(pkg);\n }\n await writeFile(workspace, Yaml.stringify({ packages }));\n};\n\nexport const addPkgInWkspace = async (pkg: string) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.packages || (doc0.packages = []));\n if (!Array.isArray(doc0.packages)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.packages.push(pkg);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const addOnlyBuiltDeps = async (deps: readonly string[]) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.onlyBuiltDependencies || (doc0.onlyBuiltDependencies = []));\n if (!Array.isArray(doc0.onlyBuiltDependencies)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.onlyBuiltDependencies.push(...deps);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const rmPnpmNodeLinker = async () => {\n await exec(command.rmNodeLinker);\n};\n\nexport type BuiltDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly string[]>\n>;\n\nexport const setWkspaceBuiltDeps = async <\n K extends string,\n T extends BuiltDeps<K>,\n>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key?: K,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n await addOnlyBuiltDeps(deps0);\n};\n\nconst tsconfig = \"tsconfig.json\" as const;\n\nexport const setTsOptions = async (options: object, cwd?: string) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions = { ...doc.compilerOptions, ...options };\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype PathAlias = Record<string, readonly string[]>;\n\nexport const setPathAlias = async (\n base: string,\n pathAlias: PathAlias,\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.baseUrl = base;\n doc.compilerOptions.paths = pathAlias as Json.CommentObject;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nexport const addPathAlias = async (\n name: string,\n paths: readonly string[],\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions.paths ||\n (doc.compilerOptions.paths = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions.paths !== \"object\" ||\n doc.compilerOptions.paths === null ||\n Array.isArray(doc.compilerOptions.paths)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.paths[name] = paths as Json.CommentArray<string>;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nconst src = \"src\" as const;\nconst pathAliasWithShared = { \"@/*\": [\"\"], \"@shared/*\": [\"shared/src/*\"] };\n\nexport const setPathAliasWithShared = async (cwd: string) => {\n await access(join(cwd, src))\n .then(() => (pathAliasWithShared[\"@/*\"][0] = format(`%s/${src}/*`, cwd)))\n .catch(() => (pathAliasWithShared[\"@/*\"][0] = format(\"%s/*\", cwd)));\n await setPathAlias(\"..\", pathAliasWithShared, cwd);\n};\n\nconst cfgDir = \".bradhezh-create-prj\" as const;\nconst config = \"config.json\" as const;\n\nexport const getCfg = async (path?: string) => {\n const doc = Json.parse(\n await readFile(join(homedir(), cfgDir, config), \"utf-8\").catch(() => \"{}\"),\n );\n if (!path) {\n return doc;\n }\n let value = doc;\n for (const key of path.split(\".\")) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\nexport const setCfg = async (value: Json.CommentJSONValue, path?: string) => {\n await mkdir(join(homedir(), cfgDir), { recursive: true });\n const file = join(homedir(), cfgDir, config);\n let doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (!path) {\n doc = value;\n } else {\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n doc = {} as Json.CommentObject;\n }\n let obj = doc;\n const keys = path.split(\".\");\n const last = keys.pop()!;\n for (const key of keys) {\n if (\n typeof obj[key] !== \"object\" ||\n obj[key] === null ||\n Array.isArray(obj[key])\n ) {\n obj[key] = {} as Json.CommentObject;\n }\n obj = obj[key];\n }\n obj[last] = value;\n }\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype Tmplt = { name: string; path?: string };\nexport type Template<T extends string> = Partial<\n Record<T | typeof defKey, Tmplt>\n>;\n\nexport const installTmplt = async <K extends string, T extends Template<K>>(\n base: string,\n template: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key?: K,\n cwd?: string,\n tar?: boolean,\n) => {\n const tmplt = template[key ?? defKey] ?? template.def;\n if (!tmplt) {\n return;\n }\n const file = join(cwd ?? \"\", tmplt.name);\n const res = await get<unknown>(`${base}${tmplt.path ?? \"\"}`, {\n responseType: tar ? \"arraybuffer\" : \"text\",\n });\n const data = !(res.data instanceof ArrayBuffer)\n ? res.data\n : new Uint8Array(res.data);\n if (typeof data !== \"string\" && !(data instanceof Uint8Array)) {\n throw new Error();\n }\n await writeFile(file, data);\n if (!tar) {\n return;\n }\n await exec(format(command.tar, tmplt.name), { cwd });\n await rm(file, { force: true });\n};\n\nexport enum AuthKey {\n user = \"user\",\n readToken = \"readToken\",\n token = \"token\",\n}\ntype Auth = Partial<Record<AuthKey, string>>;\ntype AuthCfgPath = Auth;\ntype Spinner = ReturnType<typeof spinner>;\n\nexport const auth = async (\n path: AuthCfgPath,\n ini: Auth,\n hint: string,\n tokenUrl: string,\n s?: Spinner,\n) => {\n const value = await authGot(path, ini);\n if (\n (!path.user || value.user) &&\n (!path.readToken || value.readToken) &&\n (!path.token || value.token)\n ) {\n return value;\n }\n s?.stop();\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n await rl.question(hint);\n rl.close();\n if ((path.readToken && !value.readToken) || (path.token && !value.token)) {\n await open(tokenUrl);\n }\n const answer = await authPrompt(\n !!(path.user && !value.user),\n !!(path.readToken && !value.readToken),\n !!(path.token && !value.token),\n );\n s?.start();\n await setAuth(value, path, answer);\n return value;\n};\n\nconst authGot = async (path: AuthCfgPath, ini: Auth) => {\n if (!path.user && !path.readToken && !path.token) {\n return {};\n }\n const user = path.user && (ini.user || (await getCfg(path.user)));\n const readToken =\n path.readToken && (ini.readToken || (await getCfg(path.readToken)));\n const token = path.token && (ini.token || (await getCfg(path.token)));\n if (\n (typeof user !== \"string\" && typeof user !== \"undefined\") ||\n (typeof readToken !== \"string\" && typeof readToken !== \"undefined\") ||\n (typeof token !== \"string\" && typeof token !== \"undefined\")\n ) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst authPrompt = (\n forUser: boolean,\n forReadToken: boolean,\n forToken: boolean,\n) => {\n return group(\n {\n ...(forUser && {\n user: () =>\n text({\n message: message.userGot,\n validate: (value?: string) =>\n value ? undefined : message.userRequired,\n }),\n }),\n ...(forReadToken && {\n readToken: () =>\n password({\n message: message.readTokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.readTokenRequired,\n }),\n }),\n ...(forToken && {\n token: () =>\n password({\n message: message.tokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.tokenRequired,\n }),\n }),\n },\n { onCancel },\n );\n};\n\nconst setAuth = async (auth: Auth, path: AuthCfgPath, answer: Auth) => {\n if (path.user && !auth.user) {\n if (!answer.user) {\n throw new Error();\n }\n auth.user = answer.user;\n await setCfg(auth.user, path.user);\n }\n if (path.readToken && !auth.readToken) {\n if (!answer.readToken) {\n throw new Error();\n }\n auth.readToken = answer.readToken;\n await setCfg(auth.readToken, path.readToken);\n }\n if (path.token && !auth.token) {\n if (!answer.token) {\n throw new Error();\n }\n auth.token = answer.token;\n await setCfg(auth.token, path.token);\n }\n};\n\nexport const onCancel = () => {\n cancel(message.opCanceled);\n process.exit(0);\n};\n","import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport { value } from \"./const\";\nimport {\n regValue,\n typeFrmwksSkip,\n meta,\n NPM,\n Conf,\n Plugin,\n PrimeType,\n} from \"@/registry\";\nimport {\n installTmplt,\n setPkgScripts,\n setPkgDeps,\n defKey,\n Template,\n} from \"@/command\";\nimport { message as msg } from \"@/message\";\n\nasync function run(this: Plugin, conf: Conf) {\n const s = spinner();\n s.start();\n log.info(format(message.pluginStart, this.label));\n\n const conf0 = parseConf(conf);\n const types = await parseType(conf, conf0);\n\n for (const type of types) {\n log.info(format(message.forType, type.name));\n await install({ ...conf0, ...type });\n log.info(message.setPkg);\n await setPkg({ ...conf0, ...type });\n }\n conf[value.lint.eslint] = {};\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\n\ntype Conf0 = { npm: NPM; monorepo: boolean; test: Test };\n\nconst parseConf = (conf: Conf) => {\n const npm = conf.npm;\n if (npm !== NPM.npm && npm !== NPM.pnpm) {\n throw new Error();\n }\n const monorepo = conf.type === meta.plugin.type.monorepo;\n const test = conf.test as Test;\n return { npm, monorepo, test };\n};\n\nconst parseType = async (conf: Conf, { monorepo }: Conf0) => {\n const types0 = (conf.monorepo?.types ?? [conf.type]) as PrimeType[];\n const types1 = types0\n .map((e) => {\n const name = conf[e]?.name;\n if (!name) {\n throw new Error();\n }\n return {\n typeFrmwk: (conf[e]?.framework ?? e) as TypeFrmwk,\n name,\n cwd: !monorepo ? \".\" : name,\n ts: conf[e]?.typescript as Ts,\n };\n })\n .filter(\n (e) =>\n !typeFrmwksSkip(undefined, meta.plugin.option.test, undefined).includes(\n e.typeFrmwk,\n ),\n );\n const types =\n types0.length <= 1\n ? types1\n : [\n ...types1,\n {\n typeFrmwk: meta.system.type.shared,\n name: meta.system.type.shared,\n cwd: meta.system.type.shared,\n ts: (await access(join(meta.system.type.shared, \"tsconfig.json\"))\n .then(() => true)\n .catch(() => false))\n ? value.typescript.nodec\n : meta.plugin.value.none,\n },\n ];\n return types;\n};\n\ntype InstallData = { ts: Ts; test: Test; typeFrmwk: TypeFrmwk; cwd: string };\n\nconst install = async ({ ts, test, typeFrmwk, cwd }: InstallData) => {\n const tmplt = template[ts ?? defKey] ?? template.def;\n if (!tmplt) {\n throw new Error();\n }\n const tmplt0 = tmplt[test ?? defKey] ?? tmplt.def;\n if (!tmplt0) {\n throw new Error();\n }\n await installTmplt(\n base,\n tmplt0,\n typeFrmwk === meta.plugin.type.lib || typeFrmwk === meta.plugin.type.cli\n ? \"pkg\"\n : typeFrmwk,\n cwd,\n );\n};\n\ntype PkgData = { ts: Ts; npm: NPM; cwd: string };\n\nconst setPkg = async ({ npm, cwd, ts }: PkgData) => {\n await setPkgScripts({ scripts }, \"scripts\", npm, cwd);\n await setPkgDeps({ pkgDeps }, \"pkgDeps\", npm, cwd);\n if (ts !== meta.plugin.value.none) {\n await setPkgDeps({ tsPkgDeps }, \"tsPkgDeps\", npm, cwd);\n }\n};\n\nconst label = \"ESLint\" as const;\n\nregValue(\n {\n name: value.lint.eslint,\n label,\n skips: [],\n keeps: [],\n requires: [],\n plugin: {\n name: `${meta.plugin.option.lint}_${value.lint.eslint}`,\n label,\n run,\n },\n },\n meta.plugin.option.lint,\n);\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/eslt\" as const;\nconst name = \"eslint.config.mjs\" as const;\n\ntype Ts =\n | keyof typeof value.typescript\n | typeof meta.plugin.value.none\n | undefined;\ntype TsKey = NonNullable<Ts> | typeof defKey;\ntype Test = keyof typeof value.test | undefined;\ntype TestKey = NonNullable<Test> | typeof defKey;\ntype TypeFrmwk =\n | PrimeType\n | typeof meta.system.type.shared\n | keyof typeof value.framework;\ntype TypeFrmwkKey =\n | Exclude<\n TypeFrmwk,\n typeof meta.plugin.type.lib | typeof meta.plugin.type.cli\n >\n | \"pkg\"\n | typeof defKey;\nconst template: Partial<\n Record<TsKey, Partial<Record<TestKey, Template<TypeFrmwkKey>>>>\n> = {\n none: {\n jest: { def: { name, path: \"/ts-n/jest/eslint.config.mjs\" } },\n def: { def: { name, path: \"/ts-n/no/eslint.config.mjs\" } },\n },\n def: {\n jest: {\n pkg: { name, path: \"/def/jest/pkg/eslint.config.mjs\" },\n shared: { name, path: \"/def/jest/pkg/eslint.config.mjs\" },\n def: { name, path: \"/def/jest/def/eslint.config.mjs\" },\n },\n def: {\n pkg: { name, path: \"/def/no/pkg/eslint.config.mjs\" },\n shared: { name, path: \"/def/no/pkg/eslint.config.mjs\" },\n def: { name, path: \"/def/no/def/eslint.config.mjs\" },\n },\n },\n} as const;\n\nconst scripts = [{ name: \"lint\", script: \"eslint .\" }] as const;\n\nconst pkgDeps = [\n { name: \"@eslint/js\", version: \"^9\", dev: true },\n { name: \"eslint\", version: \"^9\", dev: true },\n { name: \"globals\", version: \"^16\", dev: true },\n] as const;\n\nconst tsPkgDeps = [\n { name: \"typescript-eslint\", version: \"^8\", dev: true },\n] as const;\n\nconst message = {\n ...msg,\n forType: 'for \"%s\"',\n} as const;\n","export const message = {\n validate: \"Option required.\",\n type: { label: \"Project type\" },\n monorepo: {\n name: { label: \"Monorepo name\" },\n types: { label: \"Types in monorepo\" },\n },\n optional: {\n hint: \"Optional options: %s\",\n options: {\n label:\n \"Configure them one by one, or choose none of them (except required ones)?\",\n },\n defaults: {\n label:\n \"Accept defaults, or configure them one by one, or choose none of them (except required ones)?\",\n },\n },\n opCanceled: \"Operation cancelled.\",\n cwdNonEmpty: \"Current work directory must be empty.\",\n pmUnsupported: \"Only npm or pnpm supported for now.\",\n pnpmRequired: \"Only pnpm supported for monorepo for now.\",\n elemExist: \"Element exists already.\",\n refsRequired: 'When using \"after\", reference elements must be specified.',\n circularDep: \"Circular dependency.\",\n afterLast: \"Element cannot be after ones as the last.\",\n invSkipOrKeep: \"Invalid skip or keep.\",\n invElem: \"Invalid element.\",\n sysType: \"Type cannot be registered with a system name.\",\n typeNotExist: \"Type does not exist.\",\n typeRequired: \"Type must be specified for type options.\",\n sysConfKey: \"Option cannot be registered with a system name.\",\n optionNotExist: \"Option does not exist.\",\n optionConflict: \"Option conflict between compulsory and optional ones.\",\n valueNotExist: \"Value does not exist.\",\n invFormat: \"Invalid format of %s.\",\n userGot: \"Paste your username: \",\n userRequired: \"Username required.\",\n readTokenGot: \"Paste your read-only token: \",\n readTokenRequired: \"Read-only token required.\",\n tokenGot: \"Paste your read-write token: \",\n tokenRequired: \"Read-write token required.\",\n pluginStart: \"Configuring %s\",\n setPkg: \"Setting packages\",\n setWkspace: \"Setting workspace\",\n setShared: \"Setting shared\",\n pluginFinish: \"%s completed!\",\n} as const;\n"],"names":["exec","promisify","execAsync","setPkgDeps","deps","key","npm","cwd","_deps_","deps0","_iteratorError","name","version","_iteratorError1","name1","version1","e","format","parseConf","conf","NPM","Error","monorepo","meta","test","parseType","_conf_monorepo","types0","types1","types","_conf_e","_conf_e1","_conf_e2","typeFrmwksSkip","undefined","access","join","install","ts","typeFrmwk","_template_","_tmplt_","tmplt","tmplt0","template","defKey","_tmplt_path","file","res","data","get","base","_instanceof","ArrayBuffer","Uint8Array","writeFile","rm","setPkg","scripts","_scripts_","scripts0","script","pkgDeps","tsPkgDeps","label","regValue","value","run","s","conf0","type","spinner","log","message","msg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},i={};function t(r){var o=i[r];if(void 0!==o)return o.exports;var s=i[r]={exports:{}};return e[r](s,s.exports,t),s.exports}t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let r=require("../registry.js");var o="gitVis",s="public",a="private";(0,r.regOption)({name:r.meta.plugin.option.git,label:"Git",values:[{name:r.meta.plugin.value.none,label:"None",pos:{mode:r.PosMode.last},skips:[{option:o},{option:r.meta.plugin.option.cicd}],keeps:[],requires:[]}]},r.meta.system.option.category.optional),(0,r.regOption)({name:o,label:"Git repository visibility",values:[{name:s,label:"Public",skips:[],keeps:[],requires:[]},{name:a,label:"Private",skips:[],keeps:[],requires:[]}]},r.meta.system.option.category.optional)})();
2
+ //# sourceMappingURL=204-git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/204-git.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/plugins/204-git.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","import { option, value } from \"./const\";\nimport { regOption, meta, PosMode } from \"@/registry\";\n\nregOption(\n {\n name: meta.plugin.option.git,\n label: \"Git\",\n values: [\n {\n name: meta.plugin.value.none,\n label: \"None\",\n pos: { mode: PosMode.last },\n skips: [{ option: option.gitVis }, { option: meta.plugin.option.cicd }],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.optional,\n);\nregOption(\n {\n name: option.gitVis,\n label: \"Git repository visibility\",\n values: [\n {\n name: value.gitVis.public,\n label: \"Public\",\n skips: [],\n keeps: [],\n requires: [],\n },\n {\n name: value.gitVis.private,\n label: \"Private\",\n skips: [],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.optional,\n);\n"],"names":["regOption","meta","PosMode"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCEpB,MAAiD,WAuBpC,WAAmB,UCtBvCA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,KAAMC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,CAC5B,MAAO,MACP,OAAQ,CACN,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,IAAsB,CAC5B,MAAO,OACP,IAAK,CAAE,KAAMC,EAAAA,OAAAA,CAAAA,IAAY,AAAC,EAC1B,MAAO,CAAC,CAAE,MAAM,EAAgB,EAAG,CAAE,OAAQD,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,AAAC,EAAE,CACvE,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACD,AACH,EACAA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,QAAoC,EAEtCD,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,IAAI,GACJ,MAAO,4BACP,OAAQ,CACN,CACE,IAAI,GACJ,MAAO,SACP,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACA,CACE,IAAI,GACJ,MAAO,UACP,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACD,AACH,EACAC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,QAAoC,C"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let n=require("node:child_process"),o=require("node:util"),i=require("node:fs/promises"),a=require("node:path"),u=require("@clack/prompts"),s=require("../registry.js");var c="deploySrc",l="render",f="vercel",p="expo",d="npmjs",h="dkrhub",y="ghcr",b="repo",m="github",v="public",g="private",k="gha",w="circle",T=function(e){return!!(e&&("string"==typeof e&&e!==s.meta.plugin.value.none||Array.isArray(e)&&e.length||(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"))};let O=require("node:os"),R=require("axios"),j=require("open");var q=t.n(j);let E=require("comment-json");var x=t.n(E);require("yaml");let P=require("node:readline/promises");var S={validate:"Option required.",type:{label:"Project type"},monorepo:{name:{label:"Monorepo name"},types:{label:"Types in monorepo"}},optional:{hint:"Optional options: %s",options:{label:"Configure them one by one, or choose none of them (except required ones)?"},defaults:{label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"}},opCanceled:"Operation cancelled.",cwdNonEmpty:"Current work directory must be empty.",pmUnsupported:"Only npm or pnpm supported for now.",pnpmRequired:"Only pnpm supported for monorepo for now.",elemExist:"Element exists already.",refsRequired:'When using "after", reference elements must be specified.',circularDep:"Circular dependency.",afterLast:"Element cannot be after ones as the last.",invSkipOrKeep:"Invalid skip or keep.",invElem:"Invalid element.",sysType:"Type cannot be registered with a system name.",typeNotExist:"Type does not exist.",typeRequired:"Type must be specified for type options.",sysConfKey:"Option cannot be registered with a system name.",optionNotExist:"Option does not exist.",optionConflict:"Option conflict between compulsory and optional ones.",valueNotExist:"Value does not exist.",invFormat:"Invalid format of %s.",userGot:"Paste your username: ",userRequired:"Username required.",readTokenGot:"Paste your read-only token: ",readTokenRequired:"Read-only token required.",tokenGot:"Paste your read-write token: ",tokenRequired:"Read-write token required.",pluginStart:"Configuring %s",setPkg:"Setting packages",setWkspace:"Setting workspace",setShared:"Setting shared",pluginFinish:"%s completed!"};function _(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function C(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){_(i,n,o,a,u,"next",e)}function u(e){_(i,n,o,a,u,"throw",e)}a(void 0)})}}function G(e,r){return null!=r&&"u">typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](e):e instanceof r}function I(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function N(e,r){var t,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(a,"next",{value:s(0)}),u(a,"throw",{value:s(1)}),u(a,"return",{value:s(2)}),"function"==typeof Symbol&&u(a,Symbol.iterator,{value:function(){return this}}),a;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(0,o.promisify)(n.exec);var A=".bradhezh-create-prj",D="config.json",F=function(e){return C(function(){var r,t,n,o,u,s,c,l,f;return N(this,function(p){switch(p.label){case 0:return t=x().parse,[4,(0,i.readFile)((0,a.join)((0,O.homedir)(),A,D),"utf-8").catch(function(){return"{}"})];case 1:if(r=t.apply(x(),[p.sent()]),!e)return[2,r];n=r,o=!0,u=!1,s=void 0;try{for(c=e.split(".")[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){if(f=l.value,(void 0===n?"undefined":I(n))!=="object"||null===n||Array.isArray(n))return[2];n=n[f]}}catch(e){u=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(u)throw s}}return[2,n]}})})()},M=function(e,r){return C(function(){var t,n,o,u,s,c,l,f,p,d,h,y,b;return N(this,function(m){switch(m.label){case 0:return[4,(0,i.mkdir)((0,a.join)((0,O.homedir)(),A),{recursive:!0})];case 1:return m.sent(),t=(0,a.join)((0,O.homedir)(),A,D),o=x().parse,[4,(0,i.readFile)(t,"utf8").catch(function(){return"{}"})];case 2:if(n=o.apply(x(),[m.sent()]),r){((void 0===n?"undefined":I(n))!=="object"||null===n||Array.isArray(n))&&(n={}),u=n,c=(s=r.split(".")).pop(),l=!0,f=!1,p=void 0;try{for(d=s[Symbol.iterator]();!(l=(h=d.next()).done);l=!0)y=h.value,("object"!==I(u[y])||null===u[y]||Array.isArray(u[y]))&&(u[y]={}),u=u[y]}catch(e){f=!0,p=e}finally{try{l||null==d.return||d.return()}finally{if(f)throw p}}u[c]=e}else n=e;return b=x().stringify(n,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,i.writeFile)(t,b)];case 3:return m.sent(),[2]}})})()},U=function(){(0,u.cancel)(S.opCanceled),process.exit(0)};function W(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function z(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){W(i,n,o,a,u,"next",e)}function u(e){W(i,n,o,a,u,"throw",e)}a(void 0)})}}function V(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}function H(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):(function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e}function K(e,r){var t,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(a,"next",{value:s(0)}),u(a,"throw",{value:s(1)}),u(a,"return",{value:s(2)}),"function"==typeof Symbol&&u(a,Symbol.iterator,{value:function(){return this}}),a;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var B=function(e,r){var t,n=e.npm;if(n!==s.NPM.npm&&n!==s.NPM.pnpm)throw Error();var o=e.type===s.meta.plugin.type.monorepo,i=null==(t=e[e.type])?void 0:t.name;if(!i)throw Error();var a=r?g:e.gitVis||g,u=J(e,a,r),c=Y(e,r);return H(V({npm:n,monorepo:o,name:i,vis:a},u,c),{forRepo:u.forRepo||c.forRepo})},J=function(e,r,t){if(t)return{forRepo:!1,forReadToken:!1};var n=L(e,r),o=$(e),i=Q(e),a=X(e);return{forRepo:n.forRepo||o.forRepo||i.forRepo||a.forRepo,forReadToken:n.forReadToken||o.forReadToken||i.forReadToken||a.forReadToken}},L=function(e,r){var t,n,o,i,a,u,s=!1;if((null==(t=e.backend)?void 0:t.deployment)===l){if((null==(o=e.backend)?void 0:o[c])===b)s=!0;else if((null==(i=e.backend)?void 0:i[c])===h||(null==(a=e.backend)?void 0:a[c])===y);else if(T(null==(u=e.backend)?void 0:u[c]))throw Error()}else if(T(null==(n=e.backend)?void 0:n.deployment))throw Error();return{forRepo:s,forReadToken:!1}},$=function(e){var r,t,n,o,i,a,u,s=!1;if((null==(r=e.frontend)?void 0:r.deployment)===l){if((null==(o=e.frontend)?void 0:o[c])===b)s=!0;else if((null==(i=e.frontend)?void 0:i[c])===h||(null==(a=e.frontend)?void 0:a[c])===y);else if(T(null==(u=e.frontend)?void 0:u[c]))throw Error()}else if((null==(t=e.frontend)?void 0:t.deployment)===f);else if(T(null==(n=e.frontend)?void 0:n.deployment))throw Error();return{forRepo:s,forReadToken:!1}},Q=function(e){var r,t;if((null==(r=e.mobile)?void 0:r.deployment)===p);else if(T(null==(t=e.mobile)?void 0:t.deployment))throw Error();return{forRepo:!1,forReadToken:!1}},X=function(e){var r,t,n,o;if((null==(r=e.lib)?void 0:r.deployment)===d||(null==(t=e.cli)?void 0:t.deployment)===d);else if(T(null==(n=e.lib)?void 0:n.deployment)||T(null==(o=e.cli)?void 0:o.deployment))throw Error();return{forRepo:!1,forReadToken:!1}},Y=function(e,r){if(r)return{forRepo:!1,forToken:!1};if(e.cicd===k);else if(e.cicd===w)u.log.warn("todo: parse github conf for circle...");else if(T(e.cicd))throw Error();return{forRepo:!1,forToken:!1}},Z=function(e){var r=e.monorepo;return z(function(){return K(this,function(e){switch(e.label){case 0:return[4,(0,i.access)(es.name).then(function(){return!0}).catch(function(){return!1})];case 1:var t,n;if(!(!e.sent()||r))return[3,3];return[4,(t={template:es},n="template",C(function(){var e,r,o,u,s,c;return N(this,function(l){switch(l.label){case 0:if(!(o=null!=(e=t[null!=n?n:"def"])?e:t.def))return[2];return u=(0,a.join)("",o.name),[4,(0,R.get)("".concat(eu).concat(null!=(r=o.path)?r:""),{responseType:"text"})];case 1:if("string"!=typeof(c=G((s=l.sent()).data,ArrayBuffer)?new Uint8Array(s.data):s.data)&&!G(c,Uint8Array))throw Error();return[4,(0,i.writeFile)(u,c)];case 2:case 4:return l.sent(),[2];case 3:return l.sent(),[4,(0,i.rm)(u,{force:!0})]}})})())];case 2:e.sent(),e.label=3;case 3:return[2]}})})()},ee=function(e,r){var t=e.forReadToken,o=e.forToken;return z(function(){var e,i,a,s;return K(this,function(c){switch(c.label){case 0:return[4,ea(ec.user).catch(function(){return{stdout:""}})];case 1:if(e=c.sent().stdout.trim())return[3,3];return u.log.info(ec.login),r.stop(),(0,n.execSync)(ec.login,{stdio:"inherit"}),r.start(),[4,ea(ec.user)];case 2:e=c.sent().stdout.trim(),c.label=3;case 3:var l,f,p;return[4,(l=V({},t&&{readToken:ef},o&&{token:el}),f={},p=t&&o?ev.tokens:t?ev.readToken:ev.token,C(function(){var e,t,n;return N(this,function(o){var i,a,s,c,d,h,y,b;switch(o.label){case 0:return[4,(i=l,a=f,C(function(){var e,r,t,n,o,u,s,c,l;return N(this,function(f){switch(f.label){case 0:if(!i.user&&!i.readToken&&!i.token)return[2,{}];if(!(r=i.user))return[3,3];if(t=a.user)return[3,2];return[4,F(i.user)];case 1:t=f.sent(),f.label=2;case 2:r=t,f.label=3;case 3:if(e=r,!(o=i.readToken))return[3,6];if(u=a.readToken)return[3,5];return[4,F(i.readToken)];case 4:u=f.sent(),f.label=5;case 5:o=u,f.label=6;case 6:if(n=o,!(c=i.token))return[3,9];if(l=a.token)return[3,8];return[4,F(i.token)];case 7:l=f.sent(),f.label=8;case 8:c=l,f.label=9;case 9:if(s=c,"string"!=typeof e&&void 0!==e||"string"!=typeof n&&void 0!==n||"string"!=typeof s&&void 0!==s)throw Error();return[2,{user:e,readToken:n,token:s}]}})})())];case 1:if(e=o.sent(),(!l.user||e.user)&&(!l.readToken||e.readToken)&&(!l.token||e.token))return[2,e];return null==r||r.stop(),[4,(t=(0,P.createInterface)({input:process.stdin,output:process.stdout})).question(p)];case 2:if(o.sent(),t.close(),!(l.readToken&&!e.readToken||l.token&&!e.token))return[3,4];return[4,q()(ep)];case 3:o.sent(),o.label=4;case 4:return[4,(s=!!(l.user&&!e.user),c=!!(l.readToken&&!e.readToken),d=!!(l.token&&!e.token),(0,u.group)(function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}({},s&&{user:function(){return(0,u.text)({message:S.userGot,validate:function(e){return e?void 0:S.userRequired}})}},c&&{readToken:function(){return(0,u.password)({message:S.readTokenGot,mask:"*",validate:function(e){return e?void 0:S.readTokenRequired}})}},d&&{token:function(){return(0,u.password)({message:S.tokenGot,mask:"*",validate:function(e){return e?void 0:S.tokenRequired}})}}),{onCancel:U}))];case 5:return n=o.sent(),null==r||r.start(),[4,(h=e,y=l,b=n,C(function(){return N(this,function(e){switch(e.label){case 0:if(!(y.user&&!h.user))return[3,2];if(!b.user)throw Error();return h.user=b.user,[4,M(h.user,y.user)];case 1:e.sent(),e.label=2;case 2:if(!(y.readToken&&!h.readToken))return[3,4];if(!b.readToken)throw Error();return h.readToken=b.readToken,[4,M(h.readToken,y.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(y.token&&!h.token))return[3,6];if(!b.token)throw Error();return h.token=b.token,[4,M(h.token,y.token)];case 5:e.sent(),e.label=6;case 6:return[2]}})})())];case 6:return o.sent(),[2,e]}})})())];case 4:if(a=(i=c.sent()).readToken,s=i.token,t&&!a||o&&!s)throw Error();return[2,{user:e,readToken:a,token:s}]}})})()},er=function(e){var r=e.user,t=e.name,n=e.vis,i=e.npm,a=e.forRepo;return z(function(){var e,s,c,l;return K(this,function(f){switch(f.label){case 0:return e=(0,o.format)(ec.install,i),u.log.info(e),[4,ea(e)];case 1:return f.sent(),u.log.info(ec.init),[4,ea(ec.init)];case 2:return f.sent(),u.log.info(ec.add),[4,ea(ec.add)];case 3:return f.sent(),u.log.info(ec.ciInit),[4,ea(ec.ciInit)];case 4:return f.sent(),s=(0,o.format)(ec.createGh,t,n),u.log.info(s),[4,ea(s)];case 5:return f.sent(),u.log.info(ec.rename),[4,ea(ec.rename)];case 6:return f.sent(),c=(0,o.format)(ed,r,t),l=(0,o.format)(ec.remote,c),u.log.info(l),[4,ea(l)];case 7:return f.sent(),u.log.info(ec.pushu),[4,ea(ec.pushu)];case 8:if(f.sent(),a)return[2,{repo:c}];return[2]}})})()},et=function(e){var r=e.user,t=e.name,n=e.vis;return z(function(){var e,s,c,l;return K(this,function(f){switch(f.label){case 0:if(n!==v)return[3,7];return e={required_pull_request_reviews:{required_approving_review_count:1,require_code_owner_reviews:!0},required_status_checks:{strict:!0,contexts:[]},enforce_admins:!1,restrictions:null},s=(0,o.format)(ec.pubRule,r,t),u.log.info(s),(c=ea(s)).child.stdin.write(JSON.stringify(e)),c.child.stdin.end(),[4,c];case 1:return f.sent(),[4,(0,i.mkdir)(eb)];case 2:return f.sent(),l="* @".concat(r,"\n"),[4,(0,i.writeFile)((0,a.join)(eb,em),l)];case 3:return f.sent(),[4,ea(ec.add)];case 4:return f.sent(),[4,ea(ec.ciCodeowner)];case 5:return f.sent(),[4,ea(ec.push)];case 6:f.sent(),f.label=7;case 7:return[2]}})})()},en=function(){return z(function(){var e;return K(this,function(r){switch(r.label){case 0:return[4,ea(ec.auth)];case 1:return[2,(null!=(e=r.sent().stdout.match(eh))?e:["",""])[1].split(",").map(function(e){return e.replace(/['"]/g,"").trim()})]}})})()},eo=function(e,r){var t=r.repo,n=r.readToken,o=r.token;e[m]={repo:t,readToken:n,token:o}},ei="GitHub";(0,s.regValue)({name:m,label:ei,skips:[],keeps:[],requires:[],plugin:{name:"".concat(s.meta.plugin.option.git,"_").concat(m),label:ei,run:function(e,r){return z(function(){var t,i,a,s;return K(this,function(c){switch(c.label){case 0:return(t=(0,u.spinner)()).start(),u.log.info((0,o.format)(ev.pluginStart,this.label)),[4,z(function(){return K(this,function(e){switch(e.label){case 0:return[4,ea(ec.git).then(function(){return!0}).catch(function(){return!1})];case 1:if(!e.sent())return u.log.warn(ev.noGit),[2,!1];return[4,ea(ec.gh).then(function(){return!0}).catch(function(){return!1})];case 2:if(!e.sent())return u.log.warn(ev.noGh),[2,!1];return[2,!0]}})})()];case 1:if(!c.sent())return[2];return[4,Z(i=B(e,r))];case 2:return c.sent(),[4,ee(i,t)];case 3:var l;return a=c.sent(),[4,(l=t,z(function(){return K(this,function(e){switch(e.label){case 0:return[4,en()];case 1:if(e.sent().includes(ey))return[3,2];return u.log.warn(ev.scopeRequired),u.log.info(ec.refresh),l.stop(),(0,n.execSync)(ec.refresh,{stdio:"inherit"}),l.start(),[3,0];case 2:return[2]}})})())];case 4:return c.sent(),[4,er(V({},i,a))];case 5:return s=c.sent(),[4,et(V({},i,a,s))];case 6:return c.sent(),eo(e,V({},i,a,s)),u.log.info((0,o.format)(ev.pluginFinish,this.label)),t.stop(),[2]}})}).call(this)}}},s.meta.plugin.option.git);var ea=(0,o.promisify)(n.exec),eu="https://raw.githubusercontent.com/bradhezh/prj-template/master/git/.gitignore",es={name:".gitignore"},ec={install:"%s i",git:"git --version",gh:"gh --version",init:"git init",add:"git add .",ciInit:'git commit -m "init"',ciCodeowner:'git commit -m "CODEOWNERS added"',auth:"gh auth status",user:"gh api user --jq .login",login:"gh auth login --scopes repo",refresh:"gh auth refresh --scopes repo",createGh:"gh repo create %s --%s",rename:"git branch -M master",remote:"git remote add origin %s",pushu:"git push -u origin master",push:"git push",pubRule:"gh api --method PUT /repos/%s/%s/branches/master/protection --input -"},el="github.token",ef="github.read-token",ep="https://github.com/settings/tokens/new?description=bradhezh-create-prj-repo&scopes=repo",ed="https://github.com/%s/%s.git",eh=/Token scopes: (.*)/i,ey="repo",eb=".github",em="CODEOWNERS",ev=H(V({},S),{noGit:'No "git" installed to create the repository.',noGh:'No "gh" installed to create the repository on GitHub.',readToken:'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the "repo" scope for deployment...',token:'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the "admin:repo_hook" scope for CI/CD...',tokens:'Tokens needed for automated integration. Press [ENTER] to open your browser and create a token with the "repo" scope for deployment and a token with the "admin:repo_hook" scope for CI/CD...',scopeRequired:'"repo" required in scopes.'})})();
2
+ //# sourceMappingURL=205-github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/205-github.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/compat_get_default_export","webpack://@bradhezh/create-prj/webpack/runtime/define_property_getters","webpack://@bradhezh/create-prj/webpack/runtime/has_own_property","webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/message.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/plugins/205-github.ts"],"sourcesContent":["// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","export const message = {\n validate: \"Option required.\",\n type: { label: \"Project type\" },\n monorepo: {\n name: { label: \"Monorepo name\" },\n types: { label: \"Types in monorepo\" },\n },\n optional: {\n hint: \"Optional options: %s\",\n options: {\n label:\n \"Configure them one by one, or choose none of them (except required ones)?\",\n },\n defaults: {\n label:\n \"Accept defaults, or configure them one by one, or choose none of them (except required ones)?\",\n },\n },\n opCanceled: \"Operation cancelled.\",\n cwdNonEmpty: \"Current work directory must be empty.\",\n pmUnsupported: \"Only npm or pnpm supported for now.\",\n pnpmRequired: \"Only pnpm supported for monorepo for now.\",\n elemExist: \"Element exists already.\",\n refsRequired: 'When using \"after\", reference elements must be specified.',\n circularDep: \"Circular dependency.\",\n afterLast: \"Element cannot be after ones as the last.\",\n invSkipOrKeep: \"Invalid skip or keep.\",\n invElem: \"Invalid element.\",\n sysType: \"Type cannot be registered with a system name.\",\n typeNotExist: \"Type does not exist.\",\n typeRequired: \"Type must be specified for type options.\",\n sysConfKey: \"Option cannot be registered with a system name.\",\n optionNotExist: \"Option does not exist.\",\n optionConflict: \"Option conflict between compulsory and optional ones.\",\n valueNotExist: \"Value does not exist.\",\n invFormat: \"Invalid format of %s.\",\n userGot: \"Paste your username: \",\n userRequired: \"Username required.\",\n readTokenGot: \"Paste your read-only token: \",\n readTokenRequired: \"Read-only token required.\",\n tokenGot: \"Paste your read-write token: \",\n tokenRequired: \"Read-write token required.\",\n pluginStart: \"Configuring %s\",\n setPkg: \"Setting packages\",\n setWkspace: \"Setting workspace\",\n setShared: \"Setting shared\",\n pluginFinish: \"%s completed!\",\n} as const;\n","import { exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, readFile, writeFile, rm, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { get } from \"axios\";\nimport open from \"open\";\nimport Json from \"comment-json\";\nimport Yaml from \"yaml\";\nimport { createInterface } from \"node:readline/promises\";\nimport { group, text, password, cancel, spinner } from \"@clack/prompts\";\n\nimport { meta, NPM } from \"@/registry\";\nimport { message } from \"@/message\";\n\nconst exec = promisify(execAsync);\n\nconst command = {\n volta: \"volta -v\",\n node: \"node -v\",\n npm: `%s -v`,\n pnpm: \"pnpm -v\",\n setPkgName: '%s pkg set name=\"%s\"',\n setPkgVoltaNode: '%s pkg set \"volta.node\"=\"%s\"',\n setPkgVoltaNpm: '%s pkg set \"volta.%s\"=\"%s\"',\n setPkgPkgMgr: '%s pkg set packageManager=\"%s@%s\"',\n setPkgScript: '%s pkg set \"scripts.%s\"=\"%s\"',\n getPkgScript: '%s pkg get \"scripts.%s\"',\n rmPkgScript: '%s pkg delete \"scripts.%s\"',\n setPkgDeps: '%s pkg set \"dependencies.%s\"=\"%s\"',\n setPkgDevDeps: '%s pkg set \"devDependencies.%s\"=\"%s\"',\n setPkgBin: '%s pkg set \"bin.%s\"=\"%s\"',\n rmNodeLinker: \"pnpm config --location project delete node-linker\",\n tar: \"tar -xvf %s\",\n} as const;\n\nexport const setPkgName = async (name: string, npm: NPM, cwd?: string) => {\n await exec(format(command.setPkgName, npm, name), { cwd });\n};\n\nlet volta: boolean | undefined;\n\nexport const setPkgVers = async (npm: NPM, cwd?: string) => {\n void (\n volta !== undefined ||\n (volta = await exec(command.volta)\n .then(() => true)\n .catch(() => false))\n );\n if (volta) {\n const node = (await exec(command.node)).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNode,\n npm,\n !node.startsWith(\"v\") ? node : node.slice(1),\n ),\n { cwd },\n );\n const npmV = (await exec(format(command.npm, npm))).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNpm,\n npm,\n npm,\n !npmV.startsWith(\"v\") ? npmV : npmV.slice(1),\n ),\n { cwd },\n );\n }\n\n if (npm !== NPM.pnpm) {\n return;\n }\n const pnpm = (await exec(command.pnpm)).stdout.trim();\n await exec(\n format(\n command.setPkgPkgMgr,\n NPM.pnpm,\n NPM.pnpm,\n !pnpm.startsWith(\"v\") ? pnpm : pnpm.slice(1),\n ),\n { cwd },\n );\n};\n\nexport const setPkgScript = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n if (!script) {\n await exec(format(command.rmPkgScript, npm, name), { cwd });\n return;\n }\n await exec(format(command.setPkgScript, npm, name, script), { cwd });\n};\n\nexport const getPkgScript = async (name: string, npm: NPM, cwd?: string) => {\n const script = (\n await exec(format(command.getPkgScript, npm, name), { cwd })\n ).stdout.trim();\n return script === \"{}\" ? undefined : script;\n};\n\ntype Script = { name: string; script?: string };\nexport const defKey = \"def\" as const;\nexport type Scripts<T extends string> = Partial<\n Record<T | typeof defKey, readonly Script[]>\n>;\n\nexport const setPkgScripts = async <K extends string, T extends Scripts<K>>(\n scripts: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const scripts0 = scripts[key ?? defKey] ?? scripts.def;\n if (!scripts0) {\n return;\n }\n for (const { name, script } of scripts0) {\n await setPkgScript(name, script, npm, cwd);\n }\n};\n\nexport const setPkgDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDeps, npm, name, version), { cwd });\n};\n\nexport const setPkgDevDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDevDeps, npm, name, version), { cwd });\n};\n\ntype PkgDep = { name: string; version: string; dev?: boolean };\nexport type PkgDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly PkgDep[]>\n>;\n\nexport const setPkgDeps = async <K extends string, T extends PkgDeps<K>>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n for (const { name, version } of deps0.filter((e) => !e.dev)) {\n await setPkgDep(name, version, npm, cwd);\n }\n for (const { name, version } of deps0.filter((e) => e.dev)) {\n await setPkgDevDep(name, version, npm, cwd);\n }\n};\n\nexport const setPkgBin = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(\n format(\n command.setPkgBin,\n npm,\n !name.includes(\"/\") ? name : name.split(\"/\").pop(),\n script ?? \"dist/index.js\",\n ),\n { cwd },\n );\n};\n\nconst workspace = \"pnpm-workspace.yaml\" as const;\n\nexport const createWkspace = async (pkgs: readonly string[]) => {\n const packages = pkgs.length <= 1 ? pkgs : [...pkgs, meta.system.type.shared];\n for (const pkg of packages) {\n await mkdir(pkg);\n }\n await writeFile(workspace, Yaml.stringify({ packages }));\n};\n\nexport const addPkgInWkspace = async (pkg: string) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.packages || (doc0.packages = []));\n if (!Array.isArray(doc0.packages)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.packages.push(pkg);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const addOnlyBuiltDeps = async (deps: readonly string[]) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.onlyBuiltDependencies || (doc0.onlyBuiltDependencies = []));\n if (!Array.isArray(doc0.onlyBuiltDependencies)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.onlyBuiltDependencies.push(...deps);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const rmPnpmNodeLinker = async () => {\n await exec(command.rmNodeLinker);\n};\n\nexport type BuiltDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly string[]>\n>;\n\nexport const setWkspaceBuiltDeps = async <\n K extends string,\n T extends BuiltDeps<K>,\n>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key?: K,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n await addOnlyBuiltDeps(deps0);\n};\n\nconst tsconfig = \"tsconfig.json\" as const;\n\nexport const setTsOptions = async (options: object, cwd?: string) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions = { ...doc.compilerOptions, ...options };\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype PathAlias = Record<string, readonly string[]>;\n\nexport const setPathAlias = async (\n base: string,\n pathAlias: PathAlias,\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.baseUrl = base;\n doc.compilerOptions.paths = pathAlias as Json.CommentObject;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nexport const addPathAlias = async (\n name: string,\n paths: readonly string[],\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions.paths ||\n (doc.compilerOptions.paths = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions.paths !== \"object\" ||\n doc.compilerOptions.paths === null ||\n Array.isArray(doc.compilerOptions.paths)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.paths[name] = paths as Json.CommentArray<string>;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nconst src = \"src\" as const;\nconst pathAliasWithShared = { \"@/*\": [\"\"], \"@shared/*\": [\"shared/src/*\"] };\n\nexport const setPathAliasWithShared = async (cwd: string) => {\n await access(join(cwd, src))\n .then(() => (pathAliasWithShared[\"@/*\"][0] = format(`%s/${src}/*`, cwd)))\n .catch(() => (pathAliasWithShared[\"@/*\"][0] = format(\"%s/*\", cwd)));\n await setPathAlias(\"..\", pathAliasWithShared, cwd);\n};\n\nconst cfgDir = \".bradhezh-create-prj\" as const;\nconst config = \"config.json\" as const;\n\nexport const getCfg = async (path?: string) => {\n const doc = Json.parse(\n await readFile(join(homedir(), cfgDir, config), \"utf-8\").catch(() => \"{}\"),\n );\n if (!path) {\n return doc;\n }\n let value = doc;\n for (const key of path.split(\".\")) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\nexport const setCfg = async (value: Json.CommentJSONValue, path?: string) => {\n await mkdir(join(homedir(), cfgDir), { recursive: true });\n const file = join(homedir(), cfgDir, config);\n let doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (!path) {\n doc = value;\n } else {\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n doc = {} as Json.CommentObject;\n }\n let obj = doc;\n const keys = path.split(\".\");\n const last = keys.pop()!;\n for (const key of keys) {\n if (\n typeof obj[key] !== \"object\" ||\n obj[key] === null ||\n Array.isArray(obj[key])\n ) {\n obj[key] = {} as Json.CommentObject;\n }\n obj = obj[key];\n }\n obj[last] = value;\n }\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype Tmplt = { name: string; path?: string };\nexport type Template<T extends string> = Partial<\n Record<T | typeof defKey, Tmplt>\n>;\n\nexport const installTmplt = async <K extends string, T extends Template<K>>(\n base: string,\n template: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key?: K,\n cwd?: string,\n tar?: boolean,\n) => {\n const tmplt = template[key ?? defKey] ?? template.def;\n if (!tmplt) {\n return;\n }\n const file = join(cwd ?? \"\", tmplt.name);\n const res = await get<unknown>(`${base}${tmplt.path ?? \"\"}`, {\n responseType: tar ? \"arraybuffer\" : \"text\",\n });\n const data = !(res.data instanceof ArrayBuffer)\n ? res.data\n : new Uint8Array(res.data);\n if (typeof data !== \"string\" && !(data instanceof Uint8Array)) {\n throw new Error();\n }\n await writeFile(file, data);\n if (!tar) {\n return;\n }\n await exec(format(command.tar, tmplt.name), { cwd });\n await rm(file, { force: true });\n};\n\nexport enum AuthKey {\n user = \"user\",\n readToken = \"readToken\",\n token = \"token\",\n}\ntype Auth = Partial<Record<AuthKey, string>>;\ntype AuthCfgPath = Auth;\ntype Spinner = ReturnType<typeof spinner>;\n\nexport const auth = async (\n path: AuthCfgPath,\n ini: Auth,\n hint: string,\n tokenUrl: string,\n s?: Spinner,\n) => {\n const value = await authGot(path, ini);\n if (\n (!path.user || value.user) &&\n (!path.readToken || value.readToken) &&\n (!path.token || value.token)\n ) {\n return value;\n }\n s?.stop();\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n await rl.question(hint);\n rl.close();\n if ((path.readToken && !value.readToken) || (path.token && !value.token)) {\n await open(tokenUrl);\n }\n const answer = await authPrompt(\n !!(path.user && !value.user),\n !!(path.readToken && !value.readToken),\n !!(path.token && !value.token),\n );\n s?.start();\n await setAuth(value, path, answer);\n return value;\n};\n\nconst authGot = async (path: AuthCfgPath, ini: Auth) => {\n if (!path.user && !path.readToken && !path.token) {\n return {};\n }\n const user = path.user && (ini.user || (await getCfg(path.user)));\n const readToken =\n path.readToken && (ini.readToken || (await getCfg(path.readToken)));\n const token = path.token && (ini.token || (await getCfg(path.token)));\n if (\n (typeof user !== \"string\" && typeof user !== \"undefined\") ||\n (typeof readToken !== \"string\" && typeof readToken !== \"undefined\") ||\n (typeof token !== \"string\" && typeof token !== \"undefined\")\n ) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst authPrompt = (\n forUser: boolean,\n forReadToken: boolean,\n forToken: boolean,\n) => {\n return group(\n {\n ...(forUser && {\n user: () =>\n text({\n message: message.userGot,\n validate: (value?: string) =>\n value ? undefined : message.userRequired,\n }),\n }),\n ...(forReadToken && {\n readToken: () =>\n password({\n message: message.readTokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.readTokenRequired,\n }),\n }),\n ...(forToken && {\n token: () =>\n password({\n message: message.tokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.tokenRequired,\n }),\n }),\n },\n { onCancel },\n );\n};\n\nconst setAuth = async (auth: Auth, path: AuthCfgPath, answer: Auth) => {\n if (path.user && !auth.user) {\n if (!answer.user) {\n throw new Error();\n }\n auth.user = answer.user;\n await setCfg(auth.user, path.user);\n }\n if (path.readToken && !auth.readToken) {\n if (!answer.readToken) {\n throw new Error();\n }\n auth.readToken = answer.readToken;\n await setCfg(auth.readToken, path.readToken);\n }\n if (path.token && !auth.token) {\n if (!answer.token) {\n throw new Error();\n }\n auth.token = answer.token;\n await setCfg(auth.token, path.token);\n }\n};\n\nexport const onCancel = () => {\n cancel(message.opCanceled);\n process.exit(0);\n};\n","import { execSync, exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, writeFile, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { log, spinner } from \"@clack/prompts\";\n\nimport { valid, option, value, GitSvcValue } from \"./const\";\nimport { regValue, meta, NPM, Conf, Plugin, PluginType } from \"@/registry\";\nimport { installTmplt, auth } from \"@/command\";\nimport { message as msg } from \"@/message\";\n\n// can run from git option's github, or from cicd option's gha since github\n// actions depends on github\nasync function run(this: Plugin, conf: Conf, gha?: true) {\n const s = spinner();\n s.start();\n log.info(format(message.pluginStart, this.label));\n\n if (!(await init())) {\n return;\n }\n\n const conf0 = parseConf(conf, gha);\n\n await install(conf0);\n const auth0 = await authGh(conf0, s);\n await checkScopes(s);\n const gh = await createGh({ ...conf0, ...auth0 });\n await setGh({ ...conf0, ...auth0, ...gh });\n setValue(conf, { ...conf0, ...auth0, ...gh });\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\n\nconst parseConf = (conf: Conf, gha?: true) => {\n const npm = conf.npm;\n if (npm !== NPM.npm && npm !== NPM.pnpm) {\n throw new Error();\n }\n const monorepo = conf.type === meta.plugin.type.monorepo;\n const name = conf[conf.type as PluginType]?.name;\n if (!name) {\n throw new Error();\n }\n const vis = gha\n ? value.gitVis.private\n : (conf[option.gitVis] as string | undefined) || value.gitVis.private;\n const deploy = parseDeploy(conf, vis, gha);\n const cicd = parseCicd(conf, gha);\n return {\n npm,\n monorepo,\n name,\n vis,\n ...deploy,\n ...cicd,\n forRepo: deploy.forRepo || cicd.forRepo,\n };\n};\n\nconst parseDeploy = (conf: Conf, vis: string, gha?: true) => {\n if (gha) {\n return { forRepo: false, forReadToken: false };\n }\n const be = parseDeployBe(conf, vis);\n const fe = parseDeployFe(conf);\n const m = parseDeployM(conf);\n const pkg = parseDeployPkg(conf);\n return {\n forRepo: be.forRepo || fe.forRepo || m.forRepo || pkg.forRepo,\n forReadToken:\n be.forReadToken || fe.forReadToken || m.forReadToken || pkg.forReadToken,\n };\n};\n\nconst parseDeployBe = (conf: Conf, _vis: string) => {\n let forRepo = false;\n const forReadToken = false;\n if (conf.backend?.deployment === value.deployment.render) {\n if (conf.backend?.[option.deploySrc] === value.deploySrc.repo) {\n // repo for deployment\n forRepo = true;\n // readToken (token with \"repo\") might be needed for private repo\n // deployment, but render actually uses render github app instead; note\n // that github's readToken is different to ghcr's readToken, which is for\n // docker image deployment with \"read:packages\"\n //if (vis === value.gitVis.private) {\n // forReadToken = true;\n //}\n } else if (\n conf.backend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.backend?.[option.deploySrc] === value.deploySrc.ghcr\n ) {\n void 0;\n } else if (valid(conf.backend?.[option.deploySrc])) {\n throw new Error();\n }\n } else if (valid(conf.backend?.deployment)) {\n throw new Error();\n }\n return { forRepo, forReadToken };\n};\n\nconst parseDeployFe = (conf: Conf) => {\n let forRepo = false;\n const forReadToken = false;\n if (conf.frontend?.deployment === value.deployment.render) {\n if (conf.frontend?.[option.deploySrc] === value.deploySrc.repo) {\n forRepo = true;\n } else if (\n conf.frontend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.frontend?.[option.deploySrc] === value.deploySrc.ghcr\n ) {\n void 0;\n } else if (valid(conf.frontend?.[option.deploySrc])) {\n throw new Error();\n }\n } else if (conf.frontend?.deployment === value.deployment.vercel) {\n void 0;\n } else if (valid(conf.frontend?.deployment)) {\n throw new Error();\n }\n return { forRepo, forReadToken };\n};\n\nconst parseDeployM = (conf: Conf) => {\n const forRepo = false;\n const forReadToken = false;\n if (conf.mobile?.deployment === value.deployment.expo) {\n void 0;\n } else if (valid(conf.mobile?.deployment)) {\n throw new Error();\n }\n return { forRepo, forReadToken };\n};\n\nconst parseDeployPkg = (conf: Conf) => {\n const forRepo = false;\n const forReadToken = false;\n if (\n conf.lib?.deployment === value.deployment.npmjs ||\n conf.cli?.deployment === value.deployment.npmjs\n ) {\n void 0;\n } else if (valid(conf.lib?.deployment) || valid(conf.cli?.deployment)) {\n throw new Error();\n }\n return { forRepo, forReadToken };\n};\n\nconst parseCicd = (conf: Conf, gha?: true) => {\n if (gha) {\n return { forRepo: false, forToken: false };\n }\n const forRepo = false;\n const forToken = false;\n if (conf.cicd === value.cicd.gha) {\n void 0;\n } else if (conf.cicd === value.cicd.circle) {\n // repo might be needed for non-gha cicd to link to\n //forRepo = true;\n // token (with \"admin:repo_hook\") might be needed for non-gha cicd to link\n // to the repo; note that this token is different to ghcr's token, which is\n // for non-gha cicd to push docker image with \"write:packages\"\n //forToken = true;\n log.warn(\"todo: parse github conf for circle...\");\n } else if (valid(conf.cicd)) {\n throw new Error();\n }\n return { forRepo, forToken };\n};\n\nconst init = async () => {\n if (\n !(await exec(command.git)\n .then(() => true)\n .catch(() => false))\n ) {\n log.warn(message.noGit);\n return false;\n }\n if (\n !(await exec(command.gh)\n .then(() => true)\n .catch(() => false))\n ) {\n log.warn(message.noGh);\n return false;\n }\n return true;\n};\n\ntype InstallData = { monorepo: boolean };\n\nconst install = async ({ monorepo }: InstallData) => {\n if (\n !(await access(template.name)\n .then(() => true)\n .catch(() => false)) ||\n monorepo\n ) {\n await installTmplt(base, { template }, \"template\");\n }\n};\n\ntype AuthData = { forReadToken: boolean; forToken: boolean };\n\nconst authGh = async ({ forReadToken, forToken }: AuthData, s: Spinner) => {\n let user = (\n await exec(command.user).catch(() => ({ stdout: \"\" }))\n ).stdout.trim();\n if (!user) {\n log.info(command.login);\n s.stop();\n execSync(command.login, { stdio: \"inherit\" });\n s.start();\n user = (await exec(command.user)).stdout.trim();\n }\n const { readToken, token } = await auth(\n {\n ...(forReadToken && { readToken: readTokenPath }),\n ...(forToken && { token: tokenPath }),\n },\n {},\n forReadToken && forToken\n ? message.tokens\n : forReadToken\n ? message.readToken\n : message.token,\n tokenUrl,\n s,\n );\n if ((forReadToken && !readToken) || (forToken && !token)) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst checkScopes = async (s: Spinner) => {\n while (!(await getScopes()).includes(repoScope)) {\n log.warn(message.scopeRequired);\n log.info(command.refresh);\n s.stop();\n execSync(command.refresh, { stdio: \"inherit\" });\n s.start();\n }\n};\n\ntype GhData = {\n user: string;\n name: string;\n vis: string;\n npm: NPM;\n forRepo?: boolean;\n};\n\nconst createGh = async ({ user, name, vis, npm, forRepo }: GhData) => {\n const install = format(command.install, npm);\n log.info(install);\n await exec(install);\n log.info(command.init);\n await exec(command.init);\n log.info(command.add);\n await exec(command.add);\n log.info(command.ciInit);\n await exec(command.ciInit);\n const create = format(command.createGh, name, vis);\n log.info(create);\n await exec(create);\n log.info(command.rename);\n await exec(command.rename);\n const repo = format(repoFmt, user, name);\n const remote = format(command.remote, repo);\n log.info(remote);\n await exec(remote);\n log.info(command.pushu);\n await exec(command.pushu);\n if (forRepo) {\n return { repo };\n }\n};\n\nconst setGh = async ({ user, name, vis }: GhData) => {\n if (vis === value.gitVis.public) {\n const rule = {\n required_pull_request_reviews: {\n required_approving_review_count: 1,\n require_code_owner_reviews: true,\n },\n required_status_checks: { strict: true, contexts: [] },\n enforce_admins: false,\n restrictions: null,\n };\n const cmd = format(command.pubRule, user, name);\n log.info(cmd);\n const exe = exec(cmd);\n exe.child.stdin!.write(JSON.stringify(rule));\n exe.child.stdin!.end();\n await exe;\n\n await mkdir(github);\n const text = `* @${user}\n`;\n await writeFile(join(github, codeowners), text);\n await exec(command.add);\n await exec(command.ciCodeowner);\n await exec(command.push);\n }\n};\n\nconst getScopes = async () => {\n return ((await exec(command.auth)).stdout.match(scopesRegx) ?? [\"\", \"\"])[1]\n .split(\",\")\n .map((e) => e.replace(/['\"]/g, \"\").trim());\n};\n\nconst setValue = (\n conf: Conf,\n { repo, readToken, token }: NonNullable<GitSvcValue>,\n) => {\n (conf[value.git.github] as GitSvcValue) = { repo, readToken, token };\n};\n\nconst label = \"GitHub\" as const;\n\nregValue(\n {\n name: value.git.github,\n label,\n skips: [],\n keeps: [],\n requires: [],\n plugin: {\n name: `${meta.plugin.option.git}_${value.git.github}`,\n label,\n run,\n },\n },\n meta.plugin.option.git,\n);\n\nconst exec = promisify(execAsync);\n\ntype Spinner = ReturnType<typeof spinner>;\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/git/.gitignore\" as const;\nconst template = { name: \".gitignore\" } as const;\n\nconst command = {\n install: \"%s i\",\n git: \"git --version\",\n gh: \"gh --version\",\n init: \"git init\",\n add: \"git add .\",\n ciInit: 'git commit -m \"init\"',\n ciCodeowner: 'git commit -m \"CODEOWNERS added\"',\n auth: \"gh auth status\",\n user: \"gh api user --jq .login\",\n login: \"gh auth login --scopes repo\",\n refresh: \"gh auth refresh --scopes repo\",\n createGh: \"gh repo create %s --%s\",\n rename: \"git branch -M master\",\n remote: \"git remote add origin %s\",\n pushu: \"git push -u origin master\",\n push: \"git push\",\n pubRule:\n \"gh api --method PUT /repos/%s/%s/branches/master/protection --input -\",\n} as const;\n\nconst tokenPath = \"github.token\" as const;\nconst readTokenPath = \"github.read-token\" as const;\nconst tokenUrl =\n \"https://github.com/settings/tokens/new?description=bradhezh-create-prj-repo&scopes=repo\" as const;\nconst repoFmt = \"https://github.com/%s/%s.git\";\nconst scopesRegx = /Token scopes: (.*)/i;\nconst repoScope = \"repo\" as const;\nconst github = \".github\" as const;\nconst codeowners = \"CODEOWNERS\" as const;\n\nconst message = {\n ...msg,\n noGit: 'No \"git\" installed to create the repository.',\n noGh: 'No \"gh\" installed to create the repository on GitHub.',\n readToken:\n 'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the \"repo\" scope for deployment...',\n token:\n 'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the \"admin:repo_hook\" scope for CI/CD...',\n tokens:\n 'Tokens needed for automated integration. Press [ENTER] to open your browser and create a token with the \"repo\" scope for deployment and a token with the \"admin:repo_hook\" scope for CI/CD...',\n scopeRequired: '\"repo\" required in scopes.',\n} as const;\n"],"names":["e","Object","valid","conf","meta","Array","_type_of","message","promisify","execAsync","cfgDir","config","getCfg","path","doc","value","_iteratorError","key","Json","readFile","join","homedir","setCfg","file","obj","keys","last","text","mkdir","writeFile","onCancel","cancel","process","parseConf","gha","_conf_conf_type","npm","NPM","Error","monorepo","name","vis","deploy","parseDeploy","cicd","parseCicd","be","parseDeployBe","fe","parseDeployFe","m","parseDeployM","pkg","parseDeployPkg","_vis","_conf_backend","_conf_backend1","_conf_backend2","_conf_backend3","_conf_backend4","_conf_backend5","forRepo","forReadToken","_conf_frontend","_conf_frontend1","_conf_frontend2","_conf_frontend3","_conf_frontend4","_conf_frontend5","_conf_frontend6","_conf_mobile","_conf_mobile1","_conf_lib","_conf_cli","_conf_lib1","_conf_cli1","log","forToken","install","access","template","_template_","_tmplt_path","tmplt","res","data","get","base","_instanceof","ArrayBuffer","Uint8Array","rm","authGh","s","user","_ref","readToken","token","exec","command","execSync","ini","hint","readTokenPath","tokenPath","rl","answer","forUser","auth","createInterface","open","tokenUrl","group","undefined","password","createGh","create","repo","remote","format","repoFmt","setGh","rule","cmd","exe","JSON","github","codeowners","getScopes","_stdout_match","scopesRegx","setValue","label","regValue","run","conf0","auth0","gh","spinner","repoScope","msg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},r={};function t(o){var s=r[o];if(void 0!==s)return s.exports;var a=r[o]={exports:{}};return e[o](a,a.exports,t),a.exports}t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let o=require("../registry.js");(0,o.regOption)({name:o.meta.plugin.option.cicd,label:"CI/CD",values:[{name:o.meta.plugin.value.none,label:"None",pos:{mode:o.PosMode.last},skips:[],keeps:[],requires:[]}]},o.meta.system.option.category.optional)})();
2
+ //# sourceMappingURL=206-cicd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/206-cicd.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/206-cicd.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { regOption, meta, PosMode } from \"@/registry\";\n\nregOption(\n {\n name: meta.plugin.option.cicd,\n label: \"CI/CD\",\n values: [\n {\n name: meta.plugin.value.none,\n label: \"None\",\n pos: { mode: PosMode.last },\n skips: [],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.optional,\n);\n"],"names":["regOption","meta","PosMode"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCE3BA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,KAAMC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,CAC7B,MAAO,QACP,OAAQ,CACN,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,IAAsB,CAC5B,MAAO,OACP,IAAK,CAAE,KAAMC,EAAAA,OAAAA,CAAAA,IAAY,AAAC,EAC1B,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACD,AACH,EACAD,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,QAAoC,C"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var a=r[n]={exports:{}};return e[n](a,a.exports,t),a.exports}t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let n=require("node:child_process"),o=require("node:util"),a=require("node:fs/promises"),i=require("node:path"),l=require("@clack/prompts"),u=require("../registry.js");var s="deploySrc",c="render",p="vercel",f="expo",d="npmjs",m="dkrhub",h="ghcr",b="repo",y="github",g="gha",v=function(e){return!!(e&&("string"==typeof e&&e!==u.meta.plugin.value.none||Array.isArray(e)&&e.length||(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"))};require("node:os");let w=require("axios");function k(e,r,t,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){t(e);return}l.done?r(u):Promise.resolve(u).then(n,o)}function E(e,r){return null!=r&&"u">typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](e):e instanceof r}require("open"),require("comment-json"),require("yaml"),require("node:readline/promises");var D=(0,o.promisify)(n.exec),x=function(e,r,t,n,l){var u;return(u=function(){var u,s,c,p,f,d;return function(e,r){var t,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var s=[l,u];if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(t=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=r.call(e,a)}catch(e){s=[6,e],n=0}finally{t=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}(this,function(m){switch(m.label){case 0:if(!(c=null!=(u=r[null!=t?t:"def"])?u:r.def))return[2];return p=(0,i.join)(null!=n?n:"",c.name),[4,(0,w.get)("".concat(e).concat(null!=(s=c.path)?s:""),{responseType:l?"arraybuffer":"text"})];case 1:if("string"!=typeof(d=E((f=m.sent()).data,ArrayBuffer)?new Uint8Array(f.data):f.data)&&!E(d,Uint8Array))throw Error();return[4,(0,a.writeFile)(p,d)];case 2:if(m.sent(),!l)return[2];return[4,D((0,o.format)("tar -xvf %s",c.name),{cwd:n})];case 3:return m.sent(),[4,(0,a.rm)(p,{force:!0})];case 4:return m.sent(),[2]}})},function(){var e=this,r=arguments;return new Promise(function(t,n){var o=u.apply(e,r);function a(e){k(o,t,n,a,i,"next",e)}function i(e){k(o,t,n,a,i,"throw",e)}a(void 0)})})()};function O(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function S(e,r,t,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){t(e);return}l.done?r(u):Promise.resolve(u).then(n,o)}function R(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var a=e.apply(r,t);function i(e){S(a,n,o,i,l,"next",e)}function l(e){S(a,n,o,i,l,"throw",e)}i(void 0)})}}function j(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}function P(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):(function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e}function C(e,r){var t,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var s=[l,u];if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(t=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=r.call(e,a)}catch(e){s=[6,e],n=0}finally{t=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}var q=function(e){if((null==(r=e.backend)?void 0:r.deployment)===c&&(null==(t=e.frontend)?void 0:t.deployment)===c||((null==(n=e.backend)?void 0:n[s])===m||(null==(o=e.backend)?void 0:o[s])===h)&&((null==(a=e.frontend)?void 0:a[s])===m||(null==(i=e.frontend)?void 0:i[s])===h))throw Error();var r,t,n,o,a,i,l,u,p=I(e);if(p){var f=_(e);if(f){var d=A(e);if(d){var b=N(e);if((p.beDeploy||f.feDeploy||d.mDeploy)&&b.pkgDeploy||((null==p?void 0:p.beDeploySrc)===m||(null==p?void 0:p.beDeploySrc)===h||(null==f?void 0:f.feDeploySrc)===m||(null==f?void 0:f.feDeploySrc)===h)&&!(l=null==(u=e[e.type])?void 0:u.name))throw Error();return P(j({},p,f,d,b),{name:l})}}}},I=function(e){var r,t,n,o,a,i,p,f,d=null==(r=e.backend)?void 0:r.deployment;if(v(d)&&!(t=e.type!==u.meta.plugin.type.monorepo?".":null==(n=e.backend)?void 0:n.name))throw Error();if(d===c){if(!(o=e.backend[c]))return void l.log.warn(ed.noRender);if((a=e.backend[s])===m||a===h){if(!(i=e.backend[a]))return void l.log.warn(ed.noDkr);if(a===m&&(!i.token||!i.registry)||!o.cred||e.type===u.meta.plugin.type.monorepo&&!(p=null==(f=e.backend)?void 0:f.name))throw Error()}else if(a===b);else throw Error()}else if(v(d))throw Error();return{beDeploy:d,beCwd:t,beDeployData:o,beDeploySrc:a,beSrcData:i,beDir:p}},_=function(e){var r,t,n,o,a,i,f,d=null==(r=e.frontend)?void 0:r.deployment;if(d===c){if(!(t=e.frontend[c]))return void l.log.warn(ed.noRender);if((n=e.frontend[s])===m||n===h){if(!(o=e.frontend[n]))return void l.log.warn(ed.noDkr);if(n===m&&(!o.token||!o.registry)||!t.cred||e.type===u.meta.plugin.type.monorepo&&!(a=null==(i=e.frontend)?void 0:i.name))throw Error()}else if(n===b);else throw Error()}else if(d===p){if(!(t=e.frontend[p]))return void l.log.warn(ed.noVercel);if(!t.org||!t.project||!t.token||e.type===u.meta.plugin.type.monorepo&&!(a=null==(f=e.frontend)?void 0:f.name))throw Error()}else if(v(d))throw Error();return{feDeploy:d,feDeployData:t,feDeploySrc:n,feSrcData:o,feDir:a}},A=function(e){var r,t,n,o,a=null==(r=e.mobile)?void 0:r.deployment;if(a===f){if(!(t=e.mobile[f]))return void l.log.warn(ed.noExpo);if(!t.token||e.type===u.meta.plugin.type.monorepo&&!(n=null==(o=e.mobile)?void 0:o.name))throw Error()}else if(v(a))throw Error();return{mDeploy:a,mDeployData:t,mDir:n}},N=function(e){if(v(null==(r=e.lib)?void 0:r.deployment)&&v(null==(t=e.cli)?void 0:t.deployment))throw Error();var r,t,n,o,a,i,l,s=v(null==(n=e.lib)?void 0:n.deployment)?e.lib.deployment:null==(o=e.cli)?void 0:o.deployment;if(s===d){if(e.type===u.meta.plugin.type.monorepo&&!(a=v(null==(i=e.lib)?void 0:i.deployment)?e.lib.name:null==(l=e.cli)?void 0:l.name))throw Error()}else if(v(s))throw Error();return{pkgDeploy:s,pkgDir:a}},G=function(e){return R(function(){var r,t,n;return C(this,function(o){switch(o.label){case 0:if(!v(r=e.git))throw Error();if(!(t=e[r]))return l.log.warn(ed.noGit),[2];if(r===y)return[3,2];if(!t.repo||!t.token)throw Error();return[4,null==(n=(0,u.getElem)(void 0,u.meta.plugin.option.git,y).plugin)?void 0:n.run(e)];case 1:if(o.sent(),!e[y])return l.log.warn(ed.noGh),[2];o.label=2;case 2:return[2,{git:r,gitSvc:t}]}})})()},T=function(e){var r=e.pkgDeploy,t=e.beDeploy,n=e.beDeploySrc,o=e.feDeploy,a=e.feDeploySrc,i=e.mDeploy,l=e.monorepo,u=e.npm;return R(function(){var e,s,c,p,f,d,b,y,g,v,w,k,E,D;return C(this,function(O){switch(O.label){case 0:if(!r)return[3,2];if(!(g=null!=(y=J[r])?y:J.def))throw Error();return[4,x(H,g,l?"mono":u,".",!0)];case 1:case 3:return O.sent(),[2];case 2:if(!(v=null!=(e=z[null!=t?t:"def"])?e:z.def)||!(w=null!=(s=v[null!=(c=n===m||n===h?"docker":n)?c:"def"])?s:v.def)||!(k=null!=(p=w[null!=o?o:"def"])?p:w.def)||!(E=null!=(f=k[null!=(d=a===m||a===h?"docker":a)?d:"def"])?f:k.def)||!(D=null!=(b=E[null!=i?i:"def"])?b:E.def))throw Error();return[4,x(H,D,l?"mono":u,".",!0)]}})})()},K=function(e){var r=e.git,t=e.gitSvc;return R(function(){return C(this,function(e){switch(e.label){case 0:if(r===y)return[3,2];return l.log.info(ed.linkRepo),l.log.warn('todo: link to the repo with "repo" and token from the git service'),[4,Promise.resolve([t.repo,t.token])];case 1:e.sent(),e.label=2;case 2:return[2]}})})()},V=function(e){var r=e.beDeploy,t=e.beDeployData,n=e.beDeploySrc,o=e.beSrcData,a=e.beDir;return R(function(){var e,i,l,u,s,p,f;return C(this,function(d){switch(d.label){case 0:if(r!==c)return[3,11];return e=t.owner,i=t.service,l=t.token,u=t.cred,[4,B("gh",["secret","set",X,"--body",e])];case 1:return d.sent(),[4,B("gh",["secret","set",$,"--body",i])];case 2:return d.sent(),[4,B("gh",["secret","set",Q,"--body",l])];case 3:if(d.sent(),!u)return[3,5];return[4,B("gh",["secret","set",Z,"--body",u])];case 4:d.sent(),d.label=5;case 5:if(n!==m)return[3,9];return s=o.registry,p=o.user,f=o.token,[4,B("gh",["secret","set",eo,"--body",s])];case 6:return d.sent(),[4,B("gh",["secret","set",ea,"--body",p])];case 7:return d.sent(),[4,B("gh",["secret","set",ei,"--body",f])];case 8:return d.sent(),[3,10];case 9:if(n===h||n===b);else throw Error();d.label=10;case 10:return[3,12];case 11:if(v(r))throw Error();d.label=12;case 12:if(!a)return[3,14];return[4,B("gh",["variable","set",el,"--body",a])];case 13:d.sent(),d.label=14;case 14:return[2]}})})()},F=function(e){var r=e.feDeploy,t=e.feDeployData,n=e.feDeploySrc,o=e.feSrcData,a=e.feDir;return R(function(){var e,i,l,u,s,f,d,y,g,w;return C(this,function(k){switch(k.label){case 0:if(r!==c)return[3,11];return e=t.owner,i=t.service,l=t.token,u=t.cred,[4,B("gh",["secret","set",X,"--body",e])];case 1:return k.sent(),[4,B("gh",["secret","set",$,"--body",i])];case 2:return k.sent(),[4,B("gh",["secret","set",Q,"--body",l])];case 3:if(k.sent(),!u)return[3,5];return[4,B("gh",["secret","set",Z,"--body",u])];case 4:k.sent(),k.label=5;case 5:if(n!==m)return[3,9];return s=o.registry,f=o.user,d=o.token,[4,B("gh",["secret","set",eo,"--body",s])];case 6:return k.sent(),[4,B("gh",["secret","set",ea,"--body",f])];case 7:return k.sent(),[4,B("gh",["secret","set",ei,"--body",d])];case 8:return k.sent(),[3,10];case 9:if(n===h||n===b);else throw Error();k.label=10;case 10:return[3,16];case 11:if(r!==p)return[3,15];return y=t.org,g=t.project,w=t.token,[4,B("gh",["secret","set",ee,"--body",y])];case 12:return k.sent(),[4,B("gh",["secret","set",er,"--body",g])];case 13:return k.sent(),[4,B("gh",["secret","set",et,"--body",w])];case 14:return k.sent(),[3,16];case 15:if(v(r))throw Error();k.label=16;case 16:if(!a)return[3,18];return[4,B("gh",["variable","set",eu,"--body",a])];case 17:k.sent(),k.label=18;case 18:return[2]}})})()},M=function(e){var r=e.mDeploy,t=e.mDeployData,n=e.mDir;return R(function(){return C(this,function(e){switch(e.label){case 0:if(r!==f)return[3,2];return[4,B("gh",["secret","set",en,"--body",t.token])];case 1:return e.sent(),[3,3];case 2:if(v(r))throw Error();e.label=3;case 3:if(!n)return[3,5];return[4,B("gh",["variable","set",es,"--body",n])];case 4:e.sent(),e.label=5;case 5:return[2]}})})()},L=function(e){var r=e.pkgDeploy,t=e.pkgDir;return R(function(){return C(this,function(e){switch(e.label){case 0:if(r===d);else if(v(r))throw Error();if(!t)return[3,2];return[4,B("gh",["variable","set",ec,"--body",t])];case 1:e.sent(),e.label=2;case 2:return[2]}})})()},U=function(e){var r=e.beCwd;return R(function(){var e,t,n,o,l,u,s,c,p,f,d,m,h;return C(this,function(b){switch(b.label){case 0:if(!r)return[3,9];return[4,(0,a.readFile)((0,i.join)(r,ef),"utf-8").catch(function(){return""})];case 1:e=b.sent().split(/\r?\n/),t=!0,n=!1,o=void 0,b.label=2;case 2:b.trys.push([2,7,8,9]),l=e[Symbol.iterator](),b.label=3;case 3:var y;if(t=(u=l.next()).done)return[3,6];if(!(s=u.value)||s.startsWith("#")||(p=(c=function(e){if(Array.isArray(e))return e}(y=s.split("="))||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,r){if(e){if("string"==typeof e)return O(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return O(e,void 0)}}(y)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],f=c.slice(1),d=p.trim(),m=f.join("=").trim(),!d||!m))return[3,5];return[4,B("gh",["secret","set",d,"--body",m])];case 4:b.sent(),b.label=5;case 5:return t=!0,[3,3];case 6:return[3,9];case 7:return h=b.sent(),n=!0,o=h,[3,9];case 8:try{t||null==l.return||l.return()}finally{if(n)throw o}return[7];case 9:return[2]}})})()},W="GitHub Actions";(0,u.regValue)({name:g,label:W,skips:[],keeps:[],requires:[],plugin:{name:"".concat(u.meta.plugin.option.cicd,"_").concat(g),label:W,run:function(e){return R(function(){var r,t;return C(this,function(n){var a,i;switch(n.label){case 0:return(r=(0,l.spinner)()).start(),l.log.info((0,o.format)(ed.pluginStart,this.label)),[4,(a=e,R(function(){var e,r,t,n;return C(this,function(o){switch(o.label){case 0:if((e=a.npm)!==u.NPM.npm&&e!==u.NPM.pnpm)throw Error();if(r=a.type===u.meta.plugin.type.monorepo,!(t=q(a)))return[2];return[4,G(a)];case 1:if(!(n=o.sent()))return[2];return[2,j({npm:e,monorepo:r},t,n)]}})})())];case 1:if(!(t=n.sent()))return[2];return[4,T(t)];case 2:return n.sent(),[4,K(t)];case 3:return n.sent(),l.log.info(ed.setGha),[4,(i=t,R(function(){var e;return C(this,function(r){switch(r.label){case 0:return[4,V(i)];case 1:return r.sent(),[4,F(i)];case 2:return r.sent(),[4,M(i)];case 3:return r.sent(),[4,L(i)];case 4:if(r.sent(),!(e=i.name))return[3,6];return[4,B("gh",["variable","set",ep,"--body",e])];case 5:r.sent(),r.label=6;case 6:return[4,U(i)];case 7:return r.sent(),[4,B("git",["add","."])];case 8:return r.sent(),[4,B("git",["commit","-m",'"github workflow added"'])];case 9:return r.sent(),[4,B("git",["push"])];case 10:return r.sent(),[2]}})})())];case 4:return n.sent(),e[g]={},l.log.info((0,o.format)(ed.pluginFinish,this.label)),r.stop(),[2]}})}).call(this)}}},u.meta.plugin.option.cicd);var B=(0,o.promisify)(n.execFile),H="https://raw.githubusercontent.com/bradhezh/prj-template/master/gha",Y="gha.tar",z={render:{docker:{vercel:{def:{expo:{def:{name:Y,path:"/be/rdr/dkr/vcl/expo/gha.tar"}},def:{def:{name:Y,path:"/be/rdr/dkr/vcl/m-n/gha.tar"}}}},def:{def:{expo:{def:{name:Y,path:"/be/rdr/dkr/fe-n/expo/gha.tar"}},def:{mono:{name:Y,path:"/be/rdr/dkr/fe-n/m-n/mono/gha.tar"},def:{name:Y,path:"/be/rdr/dkr/fe-n/m-n/def/gha.tar"}}}}},repo:{vercel:{def:{expo:{def:{name:Y,path:"/be/rdr/repo/vcl/expo/gha.tar"}},def:{def:{name:Y,path:"/be/rdr/repo/vcl/m-n/gha.tar"}}}},def:{def:{expo:{def:{name:Y,path:"/be/rdr/repo/fe-n/expo/gha.tar"}},def:{npm:{name:Y,path:"/be/rdr/repo/fe-n/m-n/npm/gha.tar"},pnpm:{name:Y,path:"/be/rdr/repo/fe-n/m-n/pnpm/gha.tar"}}}}}},def:{def:{render:{docker:{expo:{def:{name:Y,path:"/be/no/rdr/dkr/expo/gha.tar"}},def:{mono:{name:Y,path:"/be/no/rdr/dkr/m-n/mono/gha.tar"},def:{name:Y,path:"/be/no/rdr/dkr/m-n/def/gha.tar"}}},repo:{expo:{def:{name:Y,path:"/be/no/rdr/repo/expo/gha.tar"}},def:{npm:{name:Y,path:"/be/no/rdr/repo/m-n/npm/gha.tar"},pnpm:{name:Y,path:"/be/no/rdr/repo/m-n/pnpm/gha.tar"}}}},vercel:{def:{expo:{def:{name:Y,path:"/be/no/vcl/expo/gha.tar"}},def:{mono:{name:Y,path:"/be/no/vcl/m-n/mono/gha.tar"},npm:{name:Y,path:"/be/no/vcl/m-n/npm/gha.tar"},pnpm:{name:Y,path:"/be/no/vcl/m-n/pnpm/gha.tar"}}}},def:{def:{expo:{mono:{name:Y,path:"/be/no/fe-n/expo/mono/gha.tar"},npm:{name:Y,path:"/be/no/fe-n/expo/npm/gha.tar"},pnpm:{name:Y,path:"/be/no/fe-n/expo/pnpm/gha.tar"}},def:{npm:{name:Y,path:"/be/no/fe-n/m-n/npm/gha.tar"},pnpm:{name:Y,path:"/be/no/fe-n/m-n/pnpm/gha.tar"}}}}}}},J={npmjs:{mono:{name:Y,path:"/pkg/npm/mono/gha.tar"},npm:{name:Y,path:"/pkg/npm/npm/gha.tar"},pnpm:{name:Y,path:"/pkg/npm/pnpm/gha.tar"}}},X="RENDER_OWNER_ID",$="RENDER_SERVICE_ID",Q="RENDER_API_KEY",Z="RENDER_CRED_ID",ee="VERCEL_ORG_ID",er="VERCEL_PROJECT_ID",et="VERCEL_TOKEN",en="EXPO_TOKEN",eo="DOCKER_REGISTRY",ea="DOCKER_USERNAME",ei="DOCKER_TOKEN",el="BACKEND_DIR",eu="FRONTEND_DIR",es="MOBILE_DIR",ec="PKG_DIR",ep="NAME",ef=".env.test",ed=P(j({},{validate:"Option required.",type:{label:"Project type"},monorepo:{name:{label:"Monorepo name"},types:{label:"Types in monorepo"}},optional:{hint:"Optional options: %s",options:{label:"Configure them one by one, or choose none of them (except required ones)?"},defaults:{label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"}},opCanceled:"Operation cancelled.",cwdNonEmpty:"Current work directory must be empty.",pmUnsupported:"Only npm or pnpm supported for now.",pnpmRequired:"Only pnpm supported for monorepo for now.",elemExist:"Element exists already.",refsRequired:'When using "after", reference elements must be specified.',circularDep:"Circular dependency.",afterLast:"Element cannot be after ones as the last.",invSkipOrKeep:"Invalid skip or keep.",invElem:"Invalid element.",sysType:"Type cannot be registered with a system name.",typeNotExist:"Type does not exist.",typeRequired:"Type must be specified for type options.",sysConfKey:"Option cannot be registered with a system name.",optionNotExist:"Option does not exist.",optionConflict:"Option conflict between compulsory and optional ones.",valueNotExist:"Value does not exist.",invFormat:"Invalid format of %s.",userGot:"Paste your username: ",userRequired:"Username required.",readTokenGot:"Paste your read-only token: ",readTokenRequired:"Read-only token required.",tokenGot:"Paste your read-write token: ",tokenRequired:"Read-write token required.",pluginStart:"Configuring %s",setPkg:"Setting packages",setWkspace:"Setting workspace",setShared:"Setting shared",pluginFinish:"%s completed!"}),{noRender:"Cannot work as expected because the Render plugin has not run successfully.",noDkr:"Cannot work as expected because the docker plugin has not run successfully.",noGit:"Cannot work as expected because the plugin for the Git option has not run successfully.",noVercel:"Cannot work as expected because the Vercel plugin has not run successfully.",noExpo:"Cannot work as expected because the Expo plugin has not run successfully.",noGh:"Cannot work as expected because the GitHub plugin has not run successfully.",linkRepo:"Linking to the repository",setGha:"Setting Github Actions"})})();
2
+ //# sourceMappingURL=207-gha.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/207-gha.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/plugins/207-gha.ts","webpack://@bradhezh/create-prj/./src/message.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","import { exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, readFile, writeFile, rm, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { get } from \"axios\";\nimport open from \"open\";\nimport Json from \"comment-json\";\nimport Yaml from \"yaml\";\nimport { createInterface } from \"node:readline/promises\";\nimport { group, text, password, cancel, spinner } from \"@clack/prompts\";\n\nimport { meta, NPM } from \"@/registry\";\nimport { message } from \"@/message\";\n\nconst exec = promisify(execAsync);\n\nconst command = {\n volta: \"volta -v\",\n node: \"node -v\",\n npm: `%s -v`,\n pnpm: \"pnpm -v\",\n setPkgName: '%s pkg set name=\"%s\"',\n setPkgVoltaNode: '%s pkg set \"volta.node\"=\"%s\"',\n setPkgVoltaNpm: '%s pkg set \"volta.%s\"=\"%s\"',\n setPkgPkgMgr: '%s pkg set packageManager=\"%s@%s\"',\n setPkgScript: '%s pkg set \"scripts.%s\"=\"%s\"',\n getPkgScript: '%s pkg get \"scripts.%s\"',\n rmPkgScript: '%s pkg delete \"scripts.%s\"',\n setPkgDeps: '%s pkg set \"dependencies.%s\"=\"%s\"',\n setPkgDevDeps: '%s pkg set \"devDependencies.%s\"=\"%s\"',\n setPkgBin: '%s pkg set \"bin.%s\"=\"%s\"',\n rmNodeLinker: \"pnpm config --location project delete node-linker\",\n tar: \"tar -xvf %s\",\n} as const;\n\nexport const setPkgName = async (name: string, npm: NPM, cwd?: string) => {\n await exec(format(command.setPkgName, npm, name), { cwd });\n};\n\nlet volta: boolean | undefined;\n\nexport const setPkgVers = async (npm: NPM, cwd?: string) => {\n void (\n volta !== undefined ||\n (volta = await exec(command.volta)\n .then(() => true)\n .catch(() => false))\n );\n if (volta) {\n const node = (await exec(command.node)).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNode,\n npm,\n !node.startsWith(\"v\") ? node : node.slice(1),\n ),\n { cwd },\n );\n const npmV = (await exec(format(command.npm, npm))).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNpm,\n npm,\n npm,\n !npmV.startsWith(\"v\") ? npmV : npmV.slice(1),\n ),\n { cwd },\n );\n }\n\n if (npm !== NPM.pnpm) {\n return;\n }\n const pnpm = (await exec(command.pnpm)).stdout.trim();\n await exec(\n format(\n command.setPkgPkgMgr,\n NPM.pnpm,\n NPM.pnpm,\n !pnpm.startsWith(\"v\") ? pnpm : pnpm.slice(1),\n ),\n { cwd },\n );\n};\n\nexport const setPkgScript = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n if (!script) {\n await exec(format(command.rmPkgScript, npm, name), { cwd });\n return;\n }\n await exec(format(command.setPkgScript, npm, name, script), { cwd });\n};\n\nexport const getPkgScript = async (name: string, npm: NPM, cwd?: string) => {\n const script = (\n await exec(format(command.getPkgScript, npm, name), { cwd })\n ).stdout.trim();\n return script === \"{}\" ? undefined : script;\n};\n\ntype Script = { name: string; script?: string };\nexport const defKey = \"def\" as const;\nexport type Scripts<T extends string> = Partial<\n Record<T | typeof defKey, readonly Script[]>\n>;\n\nexport const setPkgScripts = async <K extends string, T extends Scripts<K>>(\n scripts: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const scripts0 = scripts[key ?? defKey] ?? scripts.def;\n if (!scripts0) {\n return;\n }\n for (const { name, script } of scripts0) {\n await setPkgScript(name, script, npm, cwd);\n }\n};\n\nexport const setPkgDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDeps, npm, name, version), { cwd });\n};\n\nexport const setPkgDevDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDevDeps, npm, name, version), { cwd });\n};\n\ntype PkgDep = { name: string; version: string; dev?: boolean };\nexport type PkgDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly PkgDep[]>\n>;\n\nexport const setPkgDeps = async <K extends string, T extends PkgDeps<K>>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n for (const { name, version } of deps0.filter((e) => !e.dev)) {\n await setPkgDep(name, version, npm, cwd);\n }\n for (const { name, version } of deps0.filter((e) => e.dev)) {\n await setPkgDevDep(name, version, npm, cwd);\n }\n};\n\nexport const setPkgBin = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(\n format(\n command.setPkgBin,\n npm,\n !name.includes(\"/\") ? name : name.split(\"/\").pop(),\n script ?? \"dist/index.js\",\n ),\n { cwd },\n );\n};\n\nconst workspace = \"pnpm-workspace.yaml\" as const;\n\nexport const createWkspace = async (pkgs: readonly string[]) => {\n const packages = pkgs.length <= 1 ? pkgs : [...pkgs, meta.system.type.shared];\n for (const pkg of packages) {\n await mkdir(pkg);\n }\n await writeFile(workspace, Yaml.stringify({ packages }));\n};\n\nexport const addPkgInWkspace = async (pkg: string) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.packages || (doc0.packages = []));\n if (!Array.isArray(doc0.packages)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.packages.push(pkg);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const addOnlyBuiltDeps = async (deps: readonly string[]) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.onlyBuiltDependencies || (doc0.onlyBuiltDependencies = []));\n if (!Array.isArray(doc0.onlyBuiltDependencies)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.onlyBuiltDependencies.push(...deps);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const rmPnpmNodeLinker = async () => {\n await exec(command.rmNodeLinker);\n};\n\nexport type BuiltDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly string[]>\n>;\n\nexport const setWkspaceBuiltDeps = async <\n K extends string,\n T extends BuiltDeps<K>,\n>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key?: K,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n await addOnlyBuiltDeps(deps0);\n};\n\nconst tsconfig = \"tsconfig.json\" as const;\n\nexport const setTsOptions = async (options: object, cwd?: string) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions = { ...doc.compilerOptions, ...options };\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype PathAlias = Record<string, readonly string[]>;\n\nexport const setPathAlias = async (\n base: string,\n pathAlias: PathAlias,\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.baseUrl = base;\n doc.compilerOptions.paths = pathAlias as Json.CommentObject;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nexport const addPathAlias = async (\n name: string,\n paths: readonly string[],\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions.paths ||\n (doc.compilerOptions.paths = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions.paths !== \"object\" ||\n doc.compilerOptions.paths === null ||\n Array.isArray(doc.compilerOptions.paths)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.paths[name] = paths as Json.CommentArray<string>;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nconst src = \"src\" as const;\nconst pathAliasWithShared = { \"@/*\": [\"\"], \"@shared/*\": [\"shared/src/*\"] };\n\nexport const setPathAliasWithShared = async (cwd: string) => {\n await access(join(cwd, src))\n .then(() => (pathAliasWithShared[\"@/*\"][0] = format(`%s/${src}/*`, cwd)))\n .catch(() => (pathAliasWithShared[\"@/*\"][0] = format(\"%s/*\", cwd)));\n await setPathAlias(\"..\", pathAliasWithShared, cwd);\n};\n\nconst cfgDir = \".bradhezh-create-prj\" as const;\nconst config = \"config.json\" as const;\n\nexport const getCfg = async (path?: string) => {\n const doc = Json.parse(\n await readFile(join(homedir(), cfgDir, config), \"utf-8\").catch(() => \"{}\"),\n );\n if (!path) {\n return doc;\n }\n let value = doc;\n for (const key of path.split(\".\")) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\nexport const setCfg = async (value: Json.CommentJSONValue, path?: string) => {\n await mkdir(join(homedir(), cfgDir), { recursive: true });\n const file = join(homedir(), cfgDir, config);\n let doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (!path) {\n doc = value;\n } else {\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n doc = {} as Json.CommentObject;\n }\n let obj = doc;\n const keys = path.split(\".\");\n const last = keys.pop()!;\n for (const key of keys) {\n if (\n typeof obj[key] !== \"object\" ||\n obj[key] === null ||\n Array.isArray(obj[key])\n ) {\n obj[key] = {} as Json.CommentObject;\n }\n obj = obj[key];\n }\n obj[last] = value;\n }\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype Tmplt = { name: string; path?: string };\nexport type Template<T extends string> = Partial<\n Record<T | typeof defKey, Tmplt>\n>;\n\nexport const installTmplt = async <K extends string, T extends Template<K>>(\n base: string,\n template: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key?: K,\n cwd?: string,\n tar?: boolean,\n) => {\n const tmplt = template[key ?? defKey] ?? template.def;\n if (!tmplt) {\n return;\n }\n const file = join(cwd ?? \"\", tmplt.name);\n const res = await get<unknown>(`${base}${tmplt.path ?? \"\"}`, {\n responseType: tar ? \"arraybuffer\" : \"text\",\n });\n const data = !(res.data instanceof ArrayBuffer)\n ? res.data\n : new Uint8Array(res.data);\n if (typeof data !== \"string\" && !(data instanceof Uint8Array)) {\n throw new Error();\n }\n await writeFile(file, data);\n if (!tar) {\n return;\n }\n await exec(format(command.tar, tmplt.name), { cwd });\n await rm(file, { force: true });\n};\n\nexport enum AuthKey {\n user = \"user\",\n readToken = \"readToken\",\n token = \"token\",\n}\ntype Auth = Partial<Record<AuthKey, string>>;\ntype AuthCfgPath = Auth;\ntype Spinner = ReturnType<typeof spinner>;\n\nexport const auth = async (\n path: AuthCfgPath,\n ini: Auth,\n hint: string,\n tokenUrl: string,\n s?: Spinner,\n) => {\n const value = await authGot(path, ini);\n if (\n (!path.user || value.user) &&\n (!path.readToken || value.readToken) &&\n (!path.token || value.token)\n ) {\n return value;\n }\n s?.stop();\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n await rl.question(hint);\n rl.close();\n if ((path.readToken && !value.readToken) || (path.token && !value.token)) {\n await open(tokenUrl);\n }\n const answer = await authPrompt(\n !!(path.user && !value.user),\n !!(path.readToken && !value.readToken),\n !!(path.token && !value.token),\n );\n s?.start();\n await setAuth(value, path, answer);\n return value;\n};\n\nconst authGot = async (path: AuthCfgPath, ini: Auth) => {\n if (!path.user && !path.readToken && !path.token) {\n return {};\n }\n const user = path.user && (ini.user || (await getCfg(path.user)));\n const readToken =\n path.readToken && (ini.readToken || (await getCfg(path.readToken)));\n const token = path.token && (ini.token || (await getCfg(path.token)));\n if (\n (typeof user !== \"string\" && typeof user !== \"undefined\") ||\n (typeof readToken !== \"string\" && typeof readToken !== \"undefined\") ||\n (typeof token !== \"string\" && typeof token !== \"undefined\")\n ) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst authPrompt = (\n forUser: boolean,\n forReadToken: boolean,\n forToken: boolean,\n) => {\n return group(\n {\n ...(forUser && {\n user: () =>\n text({\n message: message.userGot,\n validate: (value?: string) =>\n value ? undefined : message.userRequired,\n }),\n }),\n ...(forReadToken && {\n readToken: () =>\n password({\n message: message.readTokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.readTokenRequired,\n }),\n }),\n ...(forToken && {\n token: () =>\n password({\n message: message.tokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.tokenRequired,\n }),\n }),\n },\n { onCancel },\n );\n};\n\nconst setAuth = async (auth: Auth, path: AuthCfgPath, answer: Auth) => {\n if (path.user && !auth.user) {\n if (!answer.user) {\n throw new Error();\n }\n auth.user = answer.user;\n await setCfg(auth.user, path.user);\n }\n if (path.readToken && !auth.readToken) {\n if (!answer.readToken) {\n throw new Error();\n }\n auth.readToken = answer.readToken;\n await setCfg(auth.readToken, path.readToken);\n }\n if (path.token && !auth.token) {\n if (!answer.token) {\n throw new Error();\n }\n auth.token = answer.token;\n await setCfg(auth.token, path.token);\n }\n};\n\nexport const onCancel = () => {\n cancel(message.opCanceled);\n process.exit(0);\n};\n","import { execFile } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { log, spinner } from \"@clack/prompts\";\n\nimport {\n valid,\n option,\n value,\n RenderValue,\n VercelValue,\n ExpoValue,\n DkrValue,\n GitSvcValue,\n} from \"./const\";\nimport {\n regValue,\n getElem,\n meta,\n NPM,\n Conf,\n Plugin,\n PluginType,\n} from \"@/registry\";\nimport { installTmplt, defKey, Template } from \"@/command\";\nimport { message as msg } from \"@/message\";\n\nasync function run(this: Plugin, conf: Conf) {\n const s = spinner();\n s.start();\n log.info(format(message.pluginStart, this.label));\n\n const conf0 = await parseConf(conf);\n if (!conf0) {\n return;\n }\n\n await install(conf0);\n await linkRepo(conf0);\n log.info(message.setGha);\n await setGha(conf0);\n conf[value.cicd.gha] = {};\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\n\nconst parseConf = async (conf: Conf) => {\n const npm = conf.npm;\n if (npm !== NPM.npm && npm !== NPM.pnpm) {\n throw new Error();\n }\n const monorepo = conf.type === meta.plugin.type.monorepo;\n const deploy = parseDeploy(conf);\n if (!deploy) {\n return;\n }\n const git = await parseGit(conf);\n if (!git) {\n return;\n }\n return { npm, monorepo, ...deploy, ...git };\n};\n\nconst parseDeploy = (conf: Conf) => {\n if (\n (conf.backend?.deployment === value.deployment.render &&\n conf.frontend?.deployment === value.deployment.render) ||\n ((conf.backend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.backend?.[option.deploySrc] === value.deploySrc.ghcr) &&\n (conf.frontend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.frontend?.[option.deploySrc] === value.deploySrc.ghcr))\n ) {\n throw new Error();\n }\n const be = parseDeployBe(conf);\n if (!be) {\n return;\n }\n const fe = parseDeployFe(conf);\n if (!fe) {\n return;\n }\n const m = parseDeployM(conf);\n if (!m) {\n return;\n }\n const pkg = parseDeployPkg(conf);\n if ((be.beDeploy || fe.feDeploy || m.mDeploy) && pkg.pkgDeploy) {\n throw new Error();\n }\n let name;\n if (\n be?.beDeploySrc === value.deploySrc.dkrhub ||\n be?.beDeploySrc === value.deploySrc.ghcr ||\n fe?.feDeploySrc === value.deploySrc.dkrhub ||\n fe?.feDeploySrc === value.deploySrc.ghcr\n ) {\n name = conf[conf.type as PluginType]?.name;\n if (!name) {\n throw new Error();\n }\n }\n return { ...be, ...fe, ...m, ...pkg, name };\n};\n\nconst parseDeployBe = (conf: Conf) => {\n const beDeploy = conf.backend?.deployment as Deploy;\n let beCwd;\n if (valid(beDeploy)) {\n beCwd = conf.type !== meta.plugin.type.monorepo ? \".\" : conf.backend?.name;\n if (!beCwd) {\n throw new Error();\n }\n }\n let beDeployData, beDeploySrc, beSrcData, beDir;\n if (beDeploy === value.deployment.render) {\n beDeployData = conf.backend![value.deployment.render] as RenderValue;\n if (!beDeployData) {\n log.warn(message.noRender);\n return;\n }\n beDeploySrc = conf.backend![option.deploySrc] as DeploySrc;\n if (\n beDeploySrc === value.deploySrc.dkrhub ||\n beDeploySrc === value.deploySrc.ghcr\n ) {\n beSrcData = conf.backend![beDeploySrc] as DkrValue;\n if (!beSrcData) {\n log.warn(message.noDkr);\n return;\n }\n if (\n beDeploySrc === value.deploySrc.dkrhub &&\n (!beSrcData.token || !beSrcData.registry)\n ) {\n throw new Error();\n }\n if (!beDeployData.cred) {\n throw new Error();\n }\n if (conf.type === meta.plugin.type.monorepo) {\n beDir = conf.backend?.name;\n if (!beDir) {\n throw new Error();\n }\n }\n } else if (beDeploySrc === value.deploySrc.repo) {\n void 0;\n } else {\n throw new Error();\n }\n } else if (valid(beDeploy)) {\n throw new Error();\n }\n return { beDeploy, beCwd, beDeployData, beDeploySrc, beSrcData, beDir };\n};\n\nconst parseDeployFe = (conf: Conf) => {\n const feDeploy = conf.frontend?.deployment as Deploy;\n let feDeployData, feDeploySrc, feSrcData, feDir;\n if (feDeploy === value.deployment.render) {\n feDeployData = conf.frontend![value.deployment.render] as RenderValue;\n if (!feDeployData) {\n log.warn(message.noRender);\n return;\n }\n feDeploySrc = conf.frontend![option.deploySrc] as DeploySrc;\n if (\n feDeploySrc === value.deploySrc.dkrhub ||\n feDeploySrc === value.deploySrc.ghcr\n ) {\n feSrcData = conf.frontend![feDeploySrc] as DkrValue;\n if (!feSrcData) {\n log.warn(message.noDkr);\n return;\n }\n if (\n feDeploySrc === value.deploySrc.dkrhub &&\n (!feSrcData.token || !feSrcData.registry)\n ) {\n throw new Error();\n }\n if (!feDeployData.cred) {\n throw new Error();\n }\n if (conf.type === meta.plugin.type.monorepo) {\n feDir = conf.frontend?.name;\n if (!feDir) {\n throw new Error();\n }\n }\n } else if (feDeploySrc === value.deploySrc.repo) {\n void 0;\n } else {\n throw new Error();\n }\n } else if (feDeploy === value.deployment.vercel) {\n feDeployData = conf.frontend![value.deployment.vercel] as VercelValue;\n if (!feDeployData) {\n log.warn(message.noVercel);\n return;\n }\n if (!feDeployData.org || !feDeployData.project || !feDeployData.token) {\n throw new Error();\n }\n if (conf.type === meta.plugin.type.monorepo) {\n feDir = conf.frontend?.name;\n if (!feDir) {\n throw new Error();\n }\n }\n } else if (valid(feDeploy)) {\n throw new Error();\n }\n return { feDeploy, feDeployData, feDeploySrc, feSrcData, feDir };\n};\n\nconst parseDeployM = (conf: Conf) => {\n const mDeploy = conf.mobile?.deployment as Deploy;\n let mDeployData, mDir;\n if (mDeploy === value.deployment.expo) {\n mDeployData = conf.mobile![value.deployment.expo] as ExpoValue;\n if (!mDeployData) {\n log.warn(message.noExpo);\n return;\n }\n if (!mDeployData.token) {\n throw new Error();\n }\n if (conf.type === meta.plugin.type.monorepo) {\n mDir = conf.mobile?.name;\n if (!mDir) {\n throw new Error();\n }\n }\n } else if (valid(mDeploy)) {\n throw new Error();\n }\n return { mDeploy, mDeployData, mDir };\n};\n\nconst parseDeployPkg = (conf: Conf) => {\n if (valid(conf.lib?.deployment) && valid(conf.cli?.deployment)) {\n throw new Error();\n }\n const pkgDeploy = (\n valid(conf.lib?.deployment) ? conf.lib!.deployment : conf.cli?.deployment\n ) as Deploy;\n let pkgDir;\n if (pkgDeploy === value.deployment.npmjs) {\n if (conf.type === meta.plugin.type.monorepo) {\n pkgDir = valid(conf.lib?.deployment) ? conf.lib!.name : conf.cli?.name;\n if (!pkgDir) {\n throw new Error();\n }\n }\n } else if (valid(pkgDeploy)) {\n throw new Error();\n }\n return { pkgDeploy, pkgDir };\n};\n\nconst parseGit = async (conf: Conf) => {\n const git = conf.git;\n if (!valid(git)) {\n throw new Error();\n }\n const gitSvc = conf[git!] as GitSvcValue;\n if (!gitSvc) {\n log.warn(message.noGit);\n return;\n }\n if (git !== value.git.github) {\n if (!gitSvc.repo || !gitSvc.token) {\n throw new Error();\n }\n // depending on github anyway\n await getElem(\n undefined,\n meta.plugin.option.git,\n value.git.github,\n ).plugin?.run(conf);\n if (!conf[value.git.github]) {\n log.warn(message.noGh);\n return;\n }\n }\n return { git: git!, gitSvc };\n};\n\ntype InstallData = {\n pkgDeploy: Deploy;\n beDeploy: Deploy;\n beDeploySrc: DeploySrc;\n feDeploy: Deploy;\n feDeploySrc: DeploySrc;\n mDeploy: Deploy;\n monorepo: boolean;\n npm: NPM;\n};\n\nconst install = async ({\n pkgDeploy,\n beDeploy,\n beDeploySrc,\n feDeploy,\n feDeploySrc,\n mDeploy,\n monorepo,\n npm,\n}: InstallData) => {\n if (pkgDeploy) {\n const tmplt = pkgTmplt[pkgDeploy] ?? pkgTmplt.def;\n if (!tmplt) {\n throw new Error();\n }\n await installTmplt(base, tmplt, monorepo ? \"mono\" : npm, \".\", true);\n return;\n }\n const tmplt = template[beDeploy ?? defKey] ?? template.def;\n if (!tmplt) {\n throw new Error();\n }\n const tmplt0 =\n tmplt[\n (beDeploySrc === value.deploySrc.dkrhub ||\n beDeploySrc === value.deploySrc.ghcr\n ? \"docker\"\n : beDeploySrc) ?? defKey\n ] ?? tmplt.def;\n if (!tmplt0) {\n throw new Error();\n }\n const tmplt1 = tmplt0[feDeploy ?? defKey] ?? tmplt0.def;\n if (!tmplt1) {\n throw new Error();\n }\n const tmplt2 =\n tmplt1[\n (feDeploySrc === value.deploySrc.dkrhub ||\n feDeploySrc === value.deploySrc.ghcr\n ? \"docker\"\n : feDeploySrc) ?? defKey\n ] ?? tmplt1.def;\n if (!tmplt2) {\n throw new Error();\n }\n const tmplt3 = tmplt2[mDeploy ?? defKey] ?? tmplt2.def;\n if (!tmplt3) {\n throw new Error();\n }\n await installTmplt(base, tmplt3, monorepo ? \"mono\" : npm, \".\", true);\n};\n\ntype RepoData = { git: string; gitSvc: GitSvc };\n\nconst linkRepo = async ({ git, gitSvc }: RepoData) => {\n if (git !== value.git.github) {\n log.info(message.linkRepo);\n log.warn(\n 'todo: link to the repo with \"repo\" and token from the git service',\n );\n const { repo, token } = gitSvc;\n await Promise.resolve([repo!, token!]);\n }\n};\n\ntype GhaData = {\n beDeploy: Deploy;\n beCwd?: string;\n beDeployData: DeployData;\n beDeploySrc: DeploySrc;\n beSrcData: SrcData;\n beDir?: string;\n feDeploy: Deploy;\n feDeployData: DeployData;\n feDeploySrc: DeploySrc;\n feSrcData: SrcData;\n feDir?: string;\n mDeploy: Deploy;\n mDeployData: DeployData;\n mDir?: string;\n pkgDeploy: Deploy;\n pkgDir?: string;\n name?: string;\n};\n\nconst setGha = async (data: GhaData) => {\n await setGhaBe(data);\n await setGhaFe(data);\n await setGhaM(data);\n await setGhaPkg(data);\n const { name } = data;\n void (\n name && (await exec(\"gh\", [\"variable\", \"set\", nameKey, \"--body\", name]))\n );\n await setEnvSecs(data);\n await exec(\"git\", [\"add\", \".\"]);\n await exec(\"git\", [\"commit\", \"-m\", '\"github workflow added\"']);\n await exec(\"git\", [\"push\"]);\n};\n\nconst setGhaBe = async ({\n beDeploy,\n beDeployData,\n beDeploySrc,\n beSrcData,\n beDir,\n}: GhaData) => {\n if (beDeploy === value.deployment.render) {\n const { owner, service, token, cred } = beDeployData as Render;\n await exec(\"gh\", [\"secret\", \"set\", renderOwnerKey, \"--body\", owner]);\n await exec(\"gh\", [\"secret\", \"set\", renderSvcKey, \"--body\", service]);\n await exec(\"gh\", [\"secret\", \"set\", renderTokenKey, \"--body\", token]);\n void (\n cred &&\n (await exec(\"gh\", [\"secret\", \"set\", renderCredKey, \"--body\", cred]))\n );\n if (beDeploySrc === value.deploySrc.dkrhub) {\n const { registry, user, token } = beSrcData as Docker;\n await exec(\"gh\", [\"secret\", \"set\", dkrRegKey, \"--body\", registry!]);\n await exec(\"gh\", [\"secret\", \"set\", dkrUserKey, \"--body\", user]);\n await exec(\"gh\", [\"secret\", \"set\", dkrTokenKey, \"--body\", token!]);\n } else if (\n beDeploySrc === value.deploySrc.ghcr ||\n beDeploySrc === value.deploySrc.repo\n ) {\n void 0;\n } else {\n throw new Error();\n }\n } else if (valid(beDeploy)) {\n throw new Error();\n }\n void (\n beDir && (await exec(\"gh\", [\"variable\", \"set\", beDirKey, \"--body\", beDir]))\n );\n};\n\nconst setGhaFe = async ({\n feDeploy,\n feDeployData,\n feDeploySrc,\n feSrcData,\n feDir,\n}: GhaData) => {\n if (feDeploy === value.deployment.render) {\n const { owner, service, token, cred } = feDeployData as Render;\n await exec(\"gh\", [\"secret\", \"set\", renderOwnerKey, \"--body\", owner]);\n await exec(\"gh\", [\"secret\", \"set\", renderSvcKey, \"--body\", service]);\n await exec(\"gh\", [\"secret\", \"set\", renderTokenKey, \"--body\", token]);\n void (\n cred &&\n (await exec(\"gh\", [\"secret\", \"set\", renderCredKey, \"--body\", cred]))\n );\n if (feDeploySrc === value.deploySrc.dkrhub) {\n const { registry, user, token } = feSrcData as Docker;\n await exec(\"gh\", [\"secret\", \"set\", dkrRegKey, \"--body\", registry!]);\n await exec(\"gh\", [\"secret\", \"set\", dkrUserKey, \"--body\", user]);\n await exec(\"gh\", [\"secret\", \"set\", dkrTokenKey, \"--body\", token!]);\n } else if (\n feDeploySrc === value.deploySrc.ghcr ||\n feDeploySrc === value.deploySrc.repo\n ) {\n void 0;\n } else {\n throw new Error();\n }\n } else if (feDeploy === value.deployment.vercel) {\n const { org, project, token } = feDeployData as Vercel;\n await exec(\"gh\", [\"secret\", \"set\", vercelOrgKey, \"--body\", org!]);\n await exec(\"gh\", [\"secret\", \"set\", vercelPrjKey, \"--body\", project!]);\n await exec(\"gh\", [\"secret\", \"set\", vercelTokenKey, \"--body\", token!]);\n } else if (valid(feDeploy)) {\n throw new Error();\n }\n void (\n feDir && (await exec(\"gh\", [\"variable\", \"set\", feDirKey, \"--body\", feDir]))\n );\n};\n\nconst setGhaM = async ({ mDeploy, mDeployData, mDir }: GhaData) => {\n if (mDeploy === value.deployment.expo) {\n const { token } = mDeployData as Expo;\n await exec(\"gh\", [\"secret\", \"set\", expoTokenKey, \"--body\", token!]);\n } else if (valid(mDeploy)) {\n throw new Error();\n }\n void (\n mDir && (await exec(\"gh\", [\"variable\", \"set\", mDirKey, \"--body\", mDir]))\n );\n};\n\nconst setGhaPkg = async ({ pkgDeploy, pkgDir }: GhaData) => {\n if (pkgDeploy === value.deployment.npmjs) {\n void 0;\n } else if (valid(pkgDeploy)) {\n throw new Error();\n }\n void (\n pkgDir &&\n (await exec(\"gh\", [\"variable\", \"set\", pkgDirKey, \"--body\", pkgDir]))\n );\n};\n\nconst setEnvSecs = async ({ beCwd }: GhaData) => {\n if (beCwd) {\n const lines = (\n await readFile(join(beCwd, env), \"utf-8\").catch(() => \"\")\n ).split(/\\r?\\n/);\n for (const line of lines) {\n if (!line || line.startsWith(\"#\")) {\n continue;\n }\n const [name, ...parts] = line.split(\"=\");\n const key = name.trim();\n const value = parts.join(\"=\").trim();\n if (!key || !value) {\n continue;\n }\n await exec(\"gh\", [\"secret\", \"set\", key, \"--body\", value]);\n }\n }\n};\n\nconst label = \"GitHub Actions\" as const;\n\nregValue(\n {\n name: value.cicd.gha,\n label,\n skips: [],\n keeps: [],\n requires: [],\n plugin: {\n name: `${meta.plugin.option.cicd}_${value.cicd.gha}`,\n label,\n run,\n },\n },\n meta.plugin.option.cicd,\n);\n\nconst exec = promisify(execFile);\n\ntype Render = NonNullable<RenderValue>;\ntype Vercel = NonNullable<VercelValue>;\ntype Expo = NonNullable<ExpoValue>;\ntype DeployData = RenderValue | VercelValue | ExpoValue;\ntype Docker = NonNullable<DkrValue>;\ntype SrcData = DkrValue;\ntype GitSvc = NonNullable<GitSvcValue>;\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/gha\" as const;\nconst name = \"gha.tar\" as const;\n\ntype Deploy = keyof typeof value.deployment | undefined;\ntype DeployKey = NonNullable<Deploy> | typeof defKey;\ntype DeploySrc = keyof typeof value.deploySrc | undefined;\ntype SrcKey =\n | Exclude<\n NonNullable<DeploySrc>,\n typeof value.deploySrc.dkrhub | typeof value.deploySrc.ghcr\n >\n | \"docker\"\n | typeof defKey;\nconst template: Partial<\n Record<\n DeployKey,\n Partial<\n Record<\n SrcKey,\n Partial<\n Record<\n DeployKey,\n Partial<\n Record<SrcKey, Partial<Record<DeployKey, Template<\"mono\" | NPM>>>>\n >\n >\n >\n >\n >\n >\n> = {\n render: {\n docker: {\n vercel: {\n def: {\n expo: { def: { name, path: \"/be/rdr/dkr/vcl/expo/gha.tar\" } },\n def: { def: { name, path: \"/be/rdr/dkr/vcl/m-n/gha.tar\" } },\n },\n },\n def: {\n def: {\n expo: { def: { name, path: \"/be/rdr/dkr/fe-n/expo/gha.tar\" } },\n def: {\n mono: { name, path: \"/be/rdr/dkr/fe-n/m-n/mono/gha.tar\" },\n def: { name, path: \"/be/rdr/dkr/fe-n/m-n/def/gha.tar\" },\n },\n },\n },\n },\n repo: {\n vercel: {\n def: {\n expo: { def: { name, path: \"/be/rdr/repo/vcl/expo/gha.tar\" } },\n def: { def: { name, path: \"/be/rdr/repo/vcl/m-n/gha.tar\" } },\n },\n },\n def: {\n def: {\n expo: { def: { name, path: \"/be/rdr/repo/fe-n/expo/gha.tar\" } },\n def: {\n npm: { name, path: \"/be/rdr/repo/fe-n/m-n/npm/gha.tar\" },\n pnpm: { name, path: \"/be/rdr/repo/fe-n/m-n/pnpm/gha.tar\" },\n },\n },\n },\n },\n },\n def: {\n def: {\n render: {\n docker: {\n expo: { def: { name, path: \"/be/no/rdr/dkr/expo/gha.tar\" } },\n def: {\n mono: { name, path: \"/be/no/rdr/dkr/m-n/mono/gha.tar\" },\n def: { name, path: \"/be/no/rdr/dkr/m-n/def/gha.tar\" },\n },\n },\n repo: {\n expo: { def: { name, path: \"/be/no/rdr/repo/expo/gha.tar\" } },\n def: {\n npm: { name, path: \"/be/no/rdr/repo/m-n/npm/gha.tar\" },\n pnpm: { name, path: \"/be/no/rdr/repo/m-n/pnpm/gha.tar\" },\n },\n },\n },\n vercel: {\n def: {\n expo: { def: { name, path: \"/be/no/vcl/expo/gha.tar\" } },\n def: {\n mono: { name, path: \"/be/no/vcl/m-n/mono/gha.tar\" },\n npm: { name, path: \"/be/no/vcl/m-n/npm/gha.tar\" },\n pnpm: { name, path: \"/be/no/vcl/m-n/pnpm/gha.tar\" },\n },\n },\n },\n def: {\n def: {\n expo: {\n mono: { name, path: \"/be/no/fe-n/expo/mono/gha.tar\" },\n npm: { name, path: \"/be/no/fe-n/expo/npm/gha.tar\" },\n pnpm: { name, path: \"/be/no/fe-n/expo/pnpm/gha.tar\" },\n },\n def: {\n npm: { name, path: \"/be/no/fe-n/m-n/npm/gha.tar\" },\n pnpm: { name, path: \"/be/no/fe-n/m-n/pnpm/gha.tar\" },\n },\n },\n },\n },\n },\n} as const;\n\nconst pkgTmplt: Partial<Record<DeployKey, Template<\"mono\" | NPM>>> = {\n npmjs: {\n mono: { name, path: \"/pkg/npm/mono/gha.tar\" },\n npm: { name, path: \"/pkg/npm/npm/gha.tar\" },\n pnpm: { name, path: \"/pkg/npm/pnpm/gha.tar\" },\n },\n} as const;\n\nconst renderOwnerKey = \"RENDER_OWNER_ID\" as const;\nconst renderSvcKey = \"RENDER_SERVICE_ID\" as const;\nconst renderTokenKey = \"RENDER_API_KEY\" as const;\nconst renderCredKey = \"RENDER_CRED_ID\" as const;\nconst vercelOrgKey = \"VERCEL_ORG_ID\" as const;\nconst vercelPrjKey = \"VERCEL_PROJECT_ID\" as const;\nconst vercelTokenKey = \"VERCEL_TOKEN\" as const;\nconst expoTokenKey = \"EXPO_TOKEN\" as const;\nconst dkrRegKey = \"DOCKER_REGISTRY\" as const;\nconst dkrUserKey = \"DOCKER_USERNAME\" as const;\nconst dkrTokenKey = \"DOCKER_TOKEN\" as const;\nconst beDirKey = \"BACKEND_DIR\" as const;\nconst feDirKey = \"FRONTEND_DIR\" as const;\nconst mDirKey = \"MOBILE_DIR\" as const;\nconst pkgDirKey = \"PKG_DIR\" as const;\nconst nameKey = \"NAME\" as const;\nconst env = \".env.test\" as const;\n\nconst message = {\n ...msg,\n noRender:\n \"Cannot work as expected because the Render plugin has not run successfully.\",\n noDkr:\n \"Cannot work as expected because the docker plugin has not run successfully.\",\n noGit:\n \"Cannot work as expected because the plugin for the Git option has not run successfully.\",\n noVercel:\n \"Cannot work as expected because the Vercel plugin has not run successfully.\",\n noExpo:\n \"Cannot work as expected because the Expo plugin has not run successfully.\",\n noGh: \"Cannot work as expected because the GitHub plugin has not run successfully.\",\n linkRepo: \"Linking to the repository\",\n setGha: \"Setting Github Actions\",\n} as const;\n","export const message = {\n validate: \"Option required.\",\n type: { label: \"Project type\" },\n monorepo: {\n name: { label: \"Monorepo name\" },\n types: { label: \"Types in monorepo\" },\n },\n optional: {\n hint: \"Optional options: %s\",\n options: {\n label:\n \"Configure them one by one, or choose none of them (except required ones)?\",\n },\n defaults: {\n label:\n \"Accept defaults, or configure them one by one, or choose none of them (except required ones)?\",\n },\n },\n opCanceled: \"Operation cancelled.\",\n cwdNonEmpty: \"Current work directory must be empty.\",\n pmUnsupported: \"Only npm or pnpm supported for now.\",\n pnpmRequired: \"Only pnpm supported for monorepo for now.\",\n elemExist: \"Element exists already.\",\n refsRequired: 'When using \"after\", reference elements must be specified.',\n circularDep: \"Circular dependency.\",\n afterLast: \"Element cannot be after ones as the last.\",\n invSkipOrKeep: \"Invalid skip or keep.\",\n invElem: \"Invalid element.\",\n sysType: \"Type cannot be registered with a system name.\",\n typeNotExist: \"Type does not exist.\",\n typeRequired: \"Type must be specified for type options.\",\n sysConfKey: \"Option cannot be registered with a system name.\",\n optionNotExist: \"Option does not exist.\",\n optionConflict: \"Option conflict between compulsory and optional ones.\",\n valueNotExist: \"Value does not exist.\",\n invFormat: \"Invalid format of %s.\",\n userGot: \"Paste your username: \",\n userRequired: \"Username required.\",\n readTokenGot: \"Paste your read-only token: \",\n readTokenRequired: \"Read-only token required.\",\n tokenGot: \"Paste your read-write token: \",\n tokenRequired: \"Read-write token required.\",\n pluginStart: \"Configuring %s\",\n setPkg: \"Setting packages\",\n setWkspace: \"Setting workspace\",\n setShared: \"Setting shared\",\n pluginFinish: \"%s completed!\",\n} as const;\n"],"names":["valid","conf","meta","Array","_type_of","exec","promisify","execAsync","installTmplt","base","template","key","cwd","tar","_template_","_tmplt_path","tmplt","file","res","data","join","get","_instanceof","ArrayBuffer","Uint8Array","Error","writeFile","format","rm","parseDeploy","_conf_backend","_conf_frontend","_conf_backend1","_conf_backend2","value","_conf_frontend1","_conf_frontend2","name","_conf_conf_type","be","parseDeployBe","fe","parseDeployFe","m","parseDeployM","pkg","parseDeployPkg","beCwd","beDeployData","beDeploySrc","beSrcData","beDir","beDeploy","log","message","feDeployData","feDeploySrc","feSrcData","feDir","feDeploy","_conf_mobile","mDeployData","mDir","_conf_mobile1","mDeploy","_conf_lib","_conf_cli","_conf_lib1","_conf_cli1","pkgDir","_conf_lib2","_conf_cli2","pkgDeploy","parseGit","git","gitSvc","_getElem_plugin","undefined","install","monorepo","npm","_tmplt_","_ref","_tmplt0_","_tmplt1_","_ref1","_tmplt2_","_pkgTmplt_pkgDeploy","tmplt1","tmplt0","tmplt11","tmplt2","tmplt3","pkgTmplt","defKey","linkRepo","Promise","repo","token","setGhaBe","owner","service","cred","registry","user","token1","renderOwnerKey","renderSvcKey","renderTokenKey","renderCredKey","dkrRegKey","dkrUserKey","dkrTokenKey","beDirKey","setGhaFe","org","project","token2","vercelOrgKey","vercelPrjKey","vercelTokenKey","feDirKey","setGhaM","expoTokenKey","mDirKey","setGhaPkg","pkgDirKey","setEnvSecs","lines","_iteratorError","line","_line_split","parts","_$value","readFile","env","label","regValue","run","s","conf0","spinner","deploy","NPM","nameKey","execFile","msg"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,wKCEpB,MAA4B,cAYvB,WACA,WACF,SACC,UAEY,WAAgB,SAAc,SAKpC,WAEF,MAwBFA,EAAQ,SAACC,CAAI,EACxB,MAAO,CAAC,CACNA,CAAAA,GACE,CAAgB,UAAhB,OAAOA,GAAqBA,IAASC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,IAAsB,EAC1DC,MAAM,OAAO,CAACF,IAASA,EAAK,MAAM,EACnCG,AAAAA,CAAgB,SAATH,EAAAA,Y,AAAAA,G,mBAAAA,E,qCAAAA,CAAI,GAAK,QAAO,EAE7B,E,2WC1CA,IAAMI,EAAOC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAUC,EAAAA,IAASA,EA2YnBC,EAAe,SAC1BC,CAAI,CACJC,CAAQ,CAGRC,CAAG,CACHC,CAAG,CACHC,CAAG,M,0BAEWC,EAK2BC,EALnCC,EAIAC,EACAC,EAGAC,E,suCAPN,GAAI,CADEH,CAAAA,EAAQ,MAAAF,CAAAA,EAAAA,CAAQ,CAACH,MAAAA,EAAAA,EAxTH,MAwTiB,AAAD,EAAtBG,EAA2BJ,EAAS,GAAG,AAAD,EAElD,O,GAGU,OADNO,EAAOG,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAKR,MAAAA,EAAAA,EAAO,GAAII,EAAM,IAAI,EAC3B,C,EAAMK,AAAAA,GAAAA,EAAAA,GAAAA,AAAAA,EAAc,UAAEZ,GAAwB,aAAjBM,CAAAA,EAAAA,EAAM,IAAI,AAAD,EAATA,EAAc,IAAM,CAC3D,aAAcF,EAAM,cAAgB,MACtC,G,QAIA,GAAI,AAAgB,UAAhB,MAHEM,CAAAA,EAAO,AAAUG,EAARJ,AAHTA,CAAAA,EAAM,UAGO,IAAII,CAAYC,aAE/B,IAAIC,WAAWN,EAAI,IAAI,EADvBA,EAAI,IAAI,AACe,GACK,CAAMI,EAAJH,EAAgBK,YAChD,MAAM,AAAIC,QAEZ,O,EAAMC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAUT,EAAME,G,QACtB,GADA,SACI,CAACN,EACH,O,GAEF,O,EAAMR,EAAKsB,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EApZN,cAoZ0BX,EAAM,IAAI,EAAG,CAAEJ,IAAAA,CAAI,G,QAClD,OADA,SACA,C,EAAMgB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAGX,EAAM,CAAE,MAAO,EAAK,G,eAA7B,S,MACF,E,shFCvYA,IAiBMY,EAAc,SAAC5B,CAAI,EACvB,GACE,AAAC,OAAA6B,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,EAAc,UAAU,AAAD,OACtBC,AAAAA,OAAAA,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,EAAe,UAAU,AAAD,OACxBC,AAAAA,CAAAA,OAAAA,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,CAAc,GAAkB,AAAD,OAC/BC,AAAAA,OAAAA,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,CAAc,GAAkB,AAAD,KAAMC,GACpCC,CAAAA,OAAAA,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,CAAe,GAAkB,AAAD,OAC/BC,AAAAA,OAAAA,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,CAAe,GAAkB,AAAD,KAAMF,EAE1C,MAAM,AAAIT,QAEZ,IATGK,EACCC,EACAC,EACAC,EACCE,EACCC,EAoBFC,EAOKC,EAvBHC,EAAKC,EAAcvC,GACzB,GAAKsC,GAGL,IAAME,EAAKC,EAAczC,GACzB,GAAKwC,GAGL,IAAME,EAAIC,EAAa3C,GACvB,GAAK0C,GAGL,IAAME,EAAMC,EAAe7C,GAC3B,GAAKsC,CAAAA,EAAG,QAAQ,EAAIE,EAAG,QAAQ,EAAIE,EAAE,OAAM,GAAME,EAAI,SAAS,EAK5DN,CAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAI,WAAW,AAAD,OACdA,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAI,WAAW,AAAD,OACdE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAI,WAAW,AAAD,OACdA,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAI,WAAW,AAAD,KAAMP,GAGhB,CADJG,CAAAA,EAAO,MAAAC,CAAAA,EAAAA,CAAI,CAACrC,EAAK,IAAI,CAAe,AAAf,EAAdqC,KAAAA,EAAAA,EAA+B,IAAI,AAAD,EATzC,MAAM,AAAIb,QAcZ,OAAO,OAAKc,EAAOE,EAAOE,EAAME,GAAAA,CAAKR,KAAAA,C,KACvC,EAEMG,EAAgB,SAACvC,CAAI,EACzB,IAAiB6B,EACbiB,EAEsDf,EAKtDgB,EAAcC,EAAaC,EAAWC,EA2B5BlB,EAnCRmB,EAAW,MAAAtB,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,EAAc,UAAU,CAEzC,GAAI9B,EAAMoD,IAEJ,CADJL,CAAAA,EAAQ9C,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAAG,IAAM,MAAA8B,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,EAAc,IAAI,AAAD,EAEvE,MAAM,AAAIP,QAId,GAAI2B,MAAsC,CAExC,GAAI,CADJJ,CAAAA,EAAe/C,EAAK,OAAQ,GAAyB,AAAD,EACjC,YACjBoD,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,QAAQ,EAI3B,GACEL,AAFFA,CAAAA,EAAchD,EAAK,OAAQ,GAAkB,AAAD,OAG1CgD,MACA,CAEA,GAAI,CADJC,CAAAA,EAAYjD,EAAK,OAAQ,CAACgD,EAAY,AAAD,EACrB,YACdI,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,KAAK,EAGxB,GACEL,OACC,EAACC,EAAU,KAAK,EAAI,CAACA,EAAU,QAAO,GAIrC,CAACF,EAAa,IAAI,EAGlB/C,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EAErC,CADJiD,CAAAA,EAAQ,MAAAlB,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,EAAc,IAAI,AAAD,EANzB,MAAM,AAAIR,OAWd,MAAO,GAAIwB,YAGT,MAAM,AAAIxB,OAEd,MAAO,GAAIzB,EAAMoD,GACf,MAAM,AAAI3B,QAEZ,MAAO,CAAE2B,SAAAA,EAAUL,MAAAA,EAAOC,aAAAA,EAAcC,YAAAA,EAAaC,UAAAA,EAAWC,MAAAA,CAAM,CACxE,EAEMT,EAAgB,SAACzC,CAAI,EACzB,IAAiB8B,EACbwB,EAAcC,EAAaC,EAAWC,EA2B5BvB,EAoBFC,EAhDNuB,EAAW,MAAA5B,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,EAAe,UAAU,CAE1C,GAAI4B,MAAsC,CAExC,GAAI,CADJJ,CAAAA,EAAetD,EAAK,QAAS,GAAyB,AAAD,EAClC,YACjBoD,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,QAAQ,EAI3B,GACEE,AAFFA,CAAAA,EAAcvD,EAAK,QAAS,GAAkB,AAAD,OAG3CuD,MACA,CAEA,GAAI,CADJC,CAAAA,EAAYxD,EAAK,QAAS,CAACuD,EAAY,AAAD,EACtB,YACdH,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,KAAK,EAGxB,GACEE,OACC,EAACC,EAAU,KAAK,EAAI,CAACA,EAAU,QAAO,GAIrC,CAACF,EAAa,IAAI,EAGlBtD,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EAErC,CADJwD,CAAAA,EAAQ,MAAAvB,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,EAAe,IAAI,AAAD,EAN1B,MAAM,AAAIV,OAWd,MAAO,GAAI+B,YAGT,MAAM,AAAI/B,OAEd,MAAO,GAAIkC,MAAsC,CAE/C,GAAI,CADJJ,CAAAA,EAAetD,EAAK,QAAS,GAAyB,AAAD,EAClC,YACjBoD,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,QAAQ,EAG3B,GAAI,CAACC,EAAa,GAAG,EAAI,CAACA,EAAa,OAAO,EAAI,CAACA,EAAa,KAAK,EAGjEtD,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EAErC,CADJwD,CAAAA,EAAQ,MAAAtB,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,EAAe,IAAI,AAAD,EAH1B,MAAM,AAAIX,OAQd,MAAO,GAAIzB,EAAM2D,GACf,MAAM,AAAIlC,QAEZ,MAAO,CAAEkC,SAAAA,EAAUJ,aAAAA,EAAcC,YAAAA,EAAaC,UAAAA,EAAWC,MAAAA,CAAM,CACjE,EAEMd,EAAe,SAAC3C,CAAI,EACxB,IAAgB2D,EACZC,EAAaC,EAWNC,EAZLC,EAAU,MAAAJ,CAAAA,EAAAA,EAAK,MAAM,AAAD,EAAVA,KAAAA,EAAAA,EAAa,UAAU,CAEvC,GAAII,MAAmC,CAErC,GAAI,CADJH,CAAAA,EAAc5D,EAAK,MAAO,GAAuB,AAAD,EAC9B,YAChBoD,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,MAAM,EAGzB,GAAI,CAACO,EAAY,KAAK,EAGlB5D,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EAErC,CADJ4D,CAAAA,EAAO,MAAAC,CAAAA,EAAAA,EAAK,MAAM,AAAD,EAAVA,KAAAA,EAAAA,EAAa,IAAI,AAAD,EAHvB,MAAM,AAAItC,OAQd,MAAO,GAAIzB,EAAMgE,GACf,MAAM,AAAIvC,QAEZ,MAAO,CAAEuC,QAAAA,EAASH,YAAAA,EAAaC,KAAAA,CAAK,CACtC,EAEMhB,EAAiB,SAAC7C,CAAI,EAC1B,GAAID,EAAM,MAAAiE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,UAAU,GAAKjE,EAAM,MAAAkE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,UAAU,EAC3D,MAAM,AAAIzC,QAEZ,IAHUwC,EAA+BC,EAIjCC,EAA+CC,EAEnDC,EAGeC,EAAyCC,EANtDC,EACJxE,EAAM,MAAAmE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,UAAU,EAAIlE,EAAK,GAAG,CAAE,UAAU,CAAG,MAAAmE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,UAAU,CAG3E,GAAII,MACF,IAAIvE,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EAErC,CADJmE,CAAAA,EAASrE,EAAM,MAAAsE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,UAAU,EAAIrE,EAAK,GAAG,CAAE,IAAI,CAAG,MAAAsE,CAAAA,EAAAA,EAAK,GAAG,AAAD,EAAPA,KAAAA,EAAAA,EAAU,IAAI,AAAD,EAEnE,MAAM,AAAI9C,OAEd,MACK,GAAIzB,EAAMwE,GACf,MAAM,AAAI/C,QAEZ,MAAO,CAAE+C,UAAAA,EAAWH,OAAAA,CAAO,CAC7B,EAEMI,EAAW,SAAOxE,CAAI,E,wBACpByE,EAIAC,EAUEC,E,iDAbR,GAAI,CAAC5E,EADC0E,EAAMzE,EAAK,GAAG,EAElB,MAAM,AAAIwB,QAGZ,GAAI,CADEkD,CAAAA,EAAS1E,CAAI,CAACyE,EAAK,AAAF,EAGrB,OADArB,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,KAAK,EACtB,C,MAEEoB,MAAAA,MAAAA,C,KACF,GAAI,CAACC,EAAO,IAAI,EAAI,CAACA,EAAO,KAAK,CAC/B,MAAM,AAAIlD,QAGZ,O,QAAMmD,CAAAA,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACJC,OACA3E,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,IAEtB,MAAM,AAAD,EAJD0E,KAAAA,EAAAA,EAII,GAAG,CAAC3E,G,QACd,GALA,SAKI,CAACA,CAAI,GAAkB,CAEzB,OADAoD,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,IAAI,EACrB,C,oBAGJ,MAAO,C,EAAA,CAAE,IAAKoB,EAAMC,OAAAA,CAAO,E,GAC7B,I,EAaMG,EAAU,Y,IACdN,EAAAA,EAAAA,SAAS,CACTpB,EAAAA,EAAAA,QAAQ,CACRH,EAAAA,EAAAA,WAAW,CACXU,EAAAA,EAAAA,QAAQ,CACRH,EAAAA,EAAAA,WAAW,CACXQ,EAAAA,EAAAA,OAAO,CACPe,EAAAA,EAAAA,QAAQ,CACRC,EAAAA,EAAAA,GAAG,C,wBAUWlE,EAKZmE,EACGC,EAQUC,EAKbC,EACGC,EAQUC,EAnCCC,EAARvE,EAOFwE,EAIAC,EAUAC,EAIAC,EAUAC,E,qDApCFpB,EAAAA,MAAAA,C,KAEF,GAAI,CADExD,CAAAA,EAAQ,MAAAuE,CAAAA,EAAAA,CAAQ,CAACf,EAAU,AAAD,EAAlBe,EAAuBM,EAAS,GAAG,AAAD,EAE9C,MAAM,AAAIpE,QAEZ,O,EAAMjB,EAAaC,EAAMO,EAAO+D,EAAW,OAASC,EAAK,IAAK,I,eAC9D,OADA,SACA,C,UAGF,GAAI,CADEQ,CAAAA,EAAAA,MAAQ1E,CAAAA,EAAAA,CAAQ,CAACsC,MAAAA,EAAAA,EDtNH,MCsNsB,AAAD0C,EAA3BhF,EAAgCJ,EAAS,GAAG,AAAD,GAWrD,CAPE+E,CAAAA,EAAAA,MACJR,CAAAA,EAAAA,CAAK,CAAC,MACHC,CAAAA,EAAAA,OACDjC,MACI,SACAA,CAAU,EAHbiC,ED5Ne,MCgOjB,AAD2BY,EAJ5Bb,EAKKO,EAAM,GAAG,AAAD,GAKX,CADEE,CAAAA,EAAAA,MAASP,CAAAA,EAAAA,CAAM,CAACxB,MAAAA,EAAAA,EDpOF,MCoOqB,AAADmC,EAAzBX,EAA8BM,EAAO,GAAG,AAAD,GAWlD,CAPEE,CAAAA,EAAAA,MACJP,CAAAA,EAAAA,CAAM,CAAC,MACJC,CAAAA,EAAAA,OACD7B,MACI,SACAA,CAAU,EAHb6B,ED1Oe,MC8OjB,AAD2BS,EAJ5BV,EAKKM,EAAO,GAAG,AAAD,GAKZ,CADEE,CAAAA,EAAS,MAAAN,CAAAA,EAAAA,CAAM,CAACtB,MAAAA,EAAAA,EDlPF,MCkPoB,AAAD8B,EAAxBR,EAA6BK,EAAO,GAAG,AAAD,EA1BnD,MAAM,AAAIlE,QA8BZ,O,EAAMjB,EAAaC,EAAMmF,EAAQb,EAAW,OAASC,EAAK,IAAK,I,GACjE,I,EAIMe,EAAW,Y,IAASrB,EAAAA,EAAAA,GAAG,CAAEC,EAAAA,EAAAA,MAAM,C,wEAC/BD,MAAAA,MAAAA,C,KAMF,OALArB,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,QAAQ,EACzBD,EAAAA,GAAAA,CAAAA,IAAQ,CACN,qEAGF,C,EAAM2C,QAAQ,OAAO,CAAC,CADErB,EAAhBsB,IAAI,CAAYtB,EAAVuB,KAAK,C,UACnB,S,6BAEJ,I,EAqCMC,EAAW,Y,IACf/C,EAAAA,EAAAA,QAAQ,CACRJ,EAAAA,EAAAA,YAAY,CACZC,EAAAA,EAAAA,WAAW,CACXC,EAAAA,EAAAA,SAAS,CACTC,EAAAA,EAAAA,KAAK,C,wBAGKiD,EAAOC,EAASH,EAAOI,EASrBC,EAAUC,EAAMC,E,oDAVxBrD,MAAAA,MAAAA,C,MAEF,OADQgD,EAAgCpD,EAAhCoD,KAAK,CAAEC,EAAyBrD,EAAzBqD,OAAO,CAAEH,EAAgBlD,EAAhBkD,KAAK,CAAEI,EAAStD,EAATsD,IAAI,CACnC,C,EAAMjG,EAAK,KAAM,CAAC,SAAU,MAAOqG,EAAgB,SAAUN,E,UAC7D,OADA,SACA,C,EAAM/F,EAAK,KAAM,CAAC,SAAU,MAAOsG,EAAc,SAAUN,E,UAC3D,OADA,SACA,C,EAAMhG,EAAK,KAAM,CAAC,SAAU,MAAOuG,EAAgB,SAAUV,E,aAA7D,S,CAEEI,EAAAA,MAAAA,C,KACC,O,EAAMjG,EAAK,KAAM,CAAC,SAAU,MAAOwG,EAAe,SAAUP,E,UAA5D,S,oBAECrD,MAAAA,MAAAA,C,KAEF,OADQsD,EAA0BrD,EAA1BqD,QAAQ,CAAEC,EAAgBtD,EAAhBsD,IAAI,CAAEC,EAAUvD,EAAVuD,KAAK,CAC7B,C,EAAMpG,EAAK,KAAM,CAAC,SAAU,MAAOyG,GAAW,SAAUP,E,UACxD,OADA,SACA,C,EAAMlG,EAAK,KAAM,CAAC,SAAU,MAAO0G,GAAY,SAAUP,E,UACzD,OADA,SACA,C,EAAMnG,EAAK,KAAM,CAAC,SAAU,MAAO2G,GAAa,SAAUP,E,iBAA1D,S,cACK,GACLxD,OACAA,YAIA,MAAM,AAAIxB,O,yCAEP,GAAIzB,EAAMoD,GACf,MAAM,AAAI3B,O,wBAGV0B,EAAAA,MAAAA,C,MAAU,O,EAAM9C,EAAK,KAAM,CAAC,WAAY,MAAO4G,GAAU,SAAU9D,E,WAAzD,S,+BAEd,I,EAEM+D,EAAW,Y,IACfvD,EAAAA,EAAAA,QAAQ,CACRJ,EAAAA,EAAAA,YAAY,CACZC,EAAAA,EAAAA,WAAW,CACXC,EAAAA,EAAAA,SAAS,CACTC,EAAAA,EAAAA,KAAK,C,wBAGK0C,EAAOC,EAASH,EAAOI,EASrBC,EAAUC,EAAMC,EAalBU,EAAKC,EAASC,E,oDAvBpB1D,MAAAA,MAAAA,C,MAEF,OADQyC,EAAgC7C,EAAhC6C,KAAK,CAAEC,EAAyB9C,EAAzB8C,OAAO,CAAEH,EAAgB3C,EAAhB2C,KAAK,CAAEI,EAAS/C,EAAT+C,IAAI,CACnC,C,EAAMjG,EAAK,KAAM,CAAC,SAAU,MAAOqG,EAAgB,SAAUN,E,UAC7D,OADA,SACA,C,EAAM/F,EAAK,KAAM,CAAC,SAAU,MAAOsG,EAAc,SAAUN,E,UAC3D,OADA,SACA,C,EAAMhG,EAAK,KAAM,CAAC,SAAU,MAAOuG,EAAgB,SAAUV,E,aAA7D,S,CAEEI,EAAAA,MAAAA,C,KACC,O,EAAMjG,EAAK,KAAM,CAAC,SAAU,MAAOwG,EAAe,SAAUP,E,UAA5D,S,oBAEC9C,MAAAA,MAAAA,C,KAEF,OADQ+C,EAA0B9C,EAA1B8C,QAAQ,CAAEC,EAAgB/C,EAAhB+C,IAAI,CAAEC,EAAUhD,EAAVgD,KAAK,CAC7B,C,EAAMpG,EAAK,KAAM,CAAC,SAAU,MAAOyG,GAAW,SAAUP,E,UACxD,OADA,SACA,C,EAAMlG,EAAK,KAAM,CAAC,SAAU,MAAO0G,GAAY,SAAUP,E,UACzD,OADA,SACA,C,EAAMnG,EAAK,KAAM,CAAC,SAAU,MAAO2G,GAAa,SAAUP,E,iBAA1D,S,cACK,GACLjD,OACAA,YAIA,MAAM,AAAI/B,O,4CAEHkC,MAAAA,MAAAA,C,MAET,OADQwD,EAAwB5D,EAAxB4D,GAAG,CAAEC,EAAmB7D,EAAnB6D,OAAO,CAAEC,EAAU9D,EAAV8D,KAAK,CAC3B,C,EAAMhH,EAAK,KAAM,CAAC,SAAU,MAAOiH,GAAc,SAAUH,E,WAC3D,OADA,SACA,C,EAAM9G,EAAK,KAAM,CAAC,SAAU,MAAOkH,GAAc,SAAUH,E,WAC3D,OADA,SACA,C,EAAM/G,EAAK,KAAM,CAAC,SAAU,MAAOmH,GAAgB,SAAUH,E,kBAA7D,S,eACK,GAAIrH,EAAM2D,GACf,MAAM,AAAIlC,O,wBAGViC,EAAAA,MAAAA,C,MAAU,O,EAAMrD,EAAK,KAAM,CAAC,WAAY,MAAOoH,GAAU,SAAU/D,E,WAAzD,S,+BAEd,I,EAEMgE,EAAU,Y,IAAS1D,EAAAA,EAAAA,OAAO,CAAEH,EAAAA,EAAAA,WAAW,CAAEC,EAAAA,EAAAA,IAAI,C,wEAC7CE,MAAAA,MAAAA,C,KAEF,O,EAAM3D,EAAK,KAAM,CAAC,SAAU,MAAOsH,GAAc,SAD/B9D,EAAVqC,KAAK,C,iBACb,S,aACK,GAAIlG,EAAMgE,GACf,MAAM,AAAIvC,O,sBAGVqC,EAAAA,MAAAA,C,KAAS,O,EAAMzD,EAAK,KAAM,CAAC,WAAY,MAAOuH,GAAS,SAAU9D,E,UAAxD,S,6BAEb,I,EAEM+D,EAAY,Y,IAASrD,EAAAA,EAAAA,SAAS,CAAEH,EAAAA,EAAAA,MAAM,C,qEAC1C,GAAIG,YAEG,GAAIxE,EAAMwE,GACf,MAAM,AAAI/C,Q,IAGV4C,EAAAA,MAAAA,C,KACC,O,EAAMhE,EAAK,KAAM,CAAC,WAAY,MAAOyH,GAAW,SAAUzD,E,UAA1D,S,6BAEL,I,EAEM0D,EAAa,Y,IAAShF,EAAAA,EAAAA,KAAK,C,wBAEvBiF,EAGDC,EAAAA,EAAAA,EAAAA,EAAAA,EAAMC,EAIgBC,EAAlB9F,EAAS+F,EACVzH,EACA0H,EAAAA,E,qDAVNtF,EAAAA,MAAAA,C,KAEA,O,EAAMuF,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASlH,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAK2B,EAAOwF,IAAM,SAAS,KAAK,CAAC,W,MAAM,E,WADlDP,EACJ,SACA,KAAK,CAAC,SACHC,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,wCAAAA,EAAcD,CAAK,CAALA,OAAAA,QAAAA,CAAAA,G,0BAAdC,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,CAAAA,MAAAA,C,KACH,GAAI,CADKC,CAAAA,EAAND,EAAAA,KAAAA,AAAAA,GACUC,EAAK,UAAU,CAAC,OAGtB7F,EAAkB8F,AAAAA,CAAAA,E,4CAAAA,EAAK,KAAK,CAAC,O,ykBAAI,CAAfA,CAAAA,EAAAA,CAATC,EAASD,EAAAA,KAAAA,CAAZ,GACPxH,EAAM0B,EAAK,IAAI,GACfgG,EAAQD,EAAM,IAAI,CAAC,KAAK,IAAI,GAC9B,CAACzH,GAAO,CAAC0H,GALX,O,KAQF,O,EAAMhI,EAAK,KAAM,CAAC,SAAU,MAAOM,EAAK,SAAU0H,E,UAAlD,S,wBAVGJ,EAAAA,G,kDAAAA,EAAAA,GAAAA,EAAAA,E,iBAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,8BAaT,I,EAEMO,EAAQ,iBAEdC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EACE,CACE,IAAI,GACJD,MAAAA,EACA,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,EAAE,CACZ,OAAQ,CACN,KAAO,GAA6BtG,MAAAA,CAA3BhC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,CAAC,KAAkB,UACnDsI,MAAAA,EACAE,IA/fN,SAAiCzI,CAAU,E,wBACnC0I,EAIAC,E,8BAeiB3I,EAqVHkB,E,uBApWN,MAHdwH,AADMA,CAAAA,EAAIE,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,GAAQ,EAChB,KAAK,GACPxF,EAAAA,GAAAA,CAAAA,IAAQ,CAAC1B,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO2B,GAAQ,WAAW,CAAE,IAAI,CAAC,KAAK,GAEjC,C,GAeSrD,EAfOA,E,iBAgBxB+E,EAIAD,EACA+D,EAIApE,E,iDARN,GAAIM,AADEA,CAAAA,EAAM/E,EAAK,GAAG,AAAD,IACP8I,EAAAA,GAAAA,CAAAA,GAAO,EAAI/D,IAAQ+D,EAAAA,GAAAA,CAAAA,IAAQ,CACrC,MAAM,AAAItH,QAIZ,GAFMsD,EAAW9E,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAEpD,CADE4I,CAAAA,EAASjH,EAAY5B,EAAI,EAE7B,O,GAEU,O,EAAMwE,EAASxE,G,QAC3B,GAAI,CADEyE,CAAAA,EAAM,UAEV,O,GAEF,MAAO,C,EAAA,GAAEM,IAAAA,EAAKD,SAAAA,C,EAAa+D,EAAWpE,G,GACxC,M,QA7BE,GAAI,CADEkE,CAAAA,EAAQ,UAEZ,O,GAGF,O,EAAM9D,EAAQ8D,G,QACd,OADA,SACA,C,EAAM7C,EAAS6C,G,QAEf,OAFA,SACAvF,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,GAAQ,MAAM,EACvB,C,GA4VoBnC,EA5VPyH,E,iBAiWLvG,E,iDAJR,O,EAAM8D,EAAShF,G,QACf,OADA,SACA,C,EAAM+F,EAAS/F,G,QACf,OADA,SACA,C,EAAMuG,EAAQvG,G,QACd,OADA,SACA,C,EAAM0G,EAAU1G,G,WAAhB,S,CACQkB,CAAAA,EAASlB,EAATkB,IAAI,AAAD,EAETA,MAAAA,C,KAAS,O,EAAMhC,EAAK,KAAM,CAAC,WAAY,MAAO2I,GAAS,SAAU3G,E,UAAxD,S,iBAEX,O,EAAM0F,EAAW5G,G,QACjB,OADA,SACA,C,EAAMd,EAAK,MAAO,CAAC,MAAO,I,UAC1B,OADA,SACA,C,EAAMA,EAAK,MAAO,CAAC,SAAU,KAAM,0B,UACnC,OADA,SACA,C,EAAMA,EAAK,MAAO,CAAC,O,kBAAnB,S,MACF,M,eAzWE,SACAJ,CAAI,GAAgB,CAAG,CAAC,EAExBoD,EAAAA,GAAAA,CAAAA,IAAQ,CAAC1B,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO2B,GAAQ,YAAY,CAAE,IAAI,CAAC,KAAK,GAChDqF,EAAE,IAAI,G,MACR,a,CA8eI,CACF,EACAzI,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,EAGzB,IAAMG,EAAOC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU2I,EAAAA,QAAQA,EAUzBxI,EACJ,qEACI4B,EAAO,UAYP3B,EAiBF,CACF,OAAQ,CACN,OAAQ,CACN,OAAQ,CACN,IAAK,CACH,KAAM,CAAE,IAAK,CAAE2B,KAAAA,EAAM,KAAM,8BAA+B,CAAE,EAC5D,IAAK,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,6BAA8B,CAAE,CAC5D,CACF,EACA,IAAK,CACH,IAAK,CACH,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,+BAAgC,CAAE,EAC7D,IAAK,CACH,KAAM,CAAEA,KAAAA,EAAM,KAAM,mCAAoC,EACxD,IAAK,CAAEA,KAAAA,EAAM,KAAM,kCAAmC,CACxD,CACF,CACF,CACF,EACA,KAAM,CACJ,OAAQ,CACN,IAAK,CACH,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,+BAAgC,CAAE,EAC7D,IAAK,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,8BAA+B,CAAE,CAC7D,CACF,EACA,IAAK,CACH,IAAK,CACH,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,gCAAiC,CAAE,EAC9D,IAAK,CACH,IAAK,CAAEA,KAAAA,EAAM,KAAM,mCAAoC,EACvD,KAAM,CAAEA,KAAAA,EAAM,KAAM,oCAAqC,CAC3D,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,IAAK,CACH,OAAQ,CACN,OAAQ,CACN,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,6BAA8B,CAAE,EAC3D,IAAK,CACH,KAAM,CAAEA,KAAAA,EAAM,KAAM,iCAAkC,EACtD,IAAK,CAAEA,KAAAA,EAAM,KAAM,gCAAiC,CACtD,CACF,EACA,KAAM,CACJ,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,8BAA+B,CAAE,EAC5D,IAAK,CACH,IAAK,CAAEA,KAAAA,EAAM,KAAM,iCAAkC,EACrD,KAAM,CAAEA,KAAAA,EAAM,KAAM,kCAAmC,CACzD,CACF,CACF,EACA,OAAQ,CACN,IAAK,CACH,KAAM,CAAE,IAAK,CAAEA,KAAAA,EAAM,KAAM,yBAA0B,CAAE,EACvD,IAAK,CACH,KAAM,CAAEA,KAAAA,EAAM,KAAM,6BAA8B,EAClD,IAAK,CAAEA,KAAAA,EAAM,KAAM,4BAA6B,EAChD,KAAM,CAAEA,KAAAA,EAAM,KAAM,6BAA8B,CACpD,CACF,CACF,EACA,IAAK,CACH,IAAK,CACH,KAAM,CACJ,KAAM,CAAEA,KAAAA,EAAM,KAAM,+BAAgC,EACpD,IAAK,CAAEA,KAAAA,EAAM,KAAM,8BAA+B,EAClD,KAAM,CAAEA,KAAAA,EAAM,KAAM,+BAAgC,CACtD,EACA,IAAK,CACH,IAAK,CAAEA,KAAAA,EAAM,KAAM,6BAA8B,EACjD,KAAM,CAAEA,KAAAA,EAAM,KAAM,8BAA+B,CACrD,CACF,CACF,CACF,CACF,CACF,EAEMwD,EAA+D,CACnE,MAAO,CACL,KAAM,CAAExD,KAAAA,EAAM,KAAM,uBAAwB,EAC5C,IAAK,CAAEA,KAAAA,EAAM,KAAM,sBAAuB,EAC1C,KAAM,CAAEA,KAAAA,EAAM,KAAM,uBAAwB,CAC9C,CACF,EAEMqE,EAAiB,kBACjBC,EAAe,oBACfC,EAAiB,iBACjBC,EAAgB,iBAChBS,GAAe,gBACfC,GAAe,oBACfC,GAAiB,eACjBG,GAAe,aACfb,GAAY,kBACZC,GAAa,kBACbC,GAAc,eACdC,GAAW,cACXQ,GAAW,eACXG,GAAU,aACVE,GAAY,UACZkB,GAAU,OACVT,GAAM,YAENjF,GAAU,OCtrBO,CACrB,SAAU,mBACV,KAAM,CAAE,MAAO,cAAe,EAC9B,SAAU,CACR,KAAM,CAAE,MAAO,eAAgB,EAC/B,MAAO,CAAE,MAAO,mBAAoB,CACtC,EACA,SAAU,CACR,KAAM,uBACN,QAAS,CACP,MACE,2EACJ,EACA,SAAU,CACR,MACE,+FACJ,CACF,EACA,WAAY,uBACZ,YAAa,wCACb,cAAe,sCACf,aAAc,4CACd,UAAW,0BACX,aAAc,4DACd,YAAa,uBACb,UAAW,4CACX,cAAe,wBACf,QAAS,mBACT,QAAS,gDACT,aAAc,uBACd,aAAc,2CACd,WAAY,kDACZ,eAAgB,yBAChB,eAAgB,wDAChB,cAAe,wBACf,UAAW,wBACX,QAAS,wBACT,aAAc,qBACd,aAAc,+BACd,kBAAmB,4BACnB,SAAU,gCACV,cAAe,6BACf,YAAa,iBACb,OAAQ,mBACR,WAAY,oBACZ,UAAW,iBACX,aAAc,eAChB,GDwoBQ4F,CACN,SACE,8EACF,MACE,8EACF,MACE,0FACF,SACE,8EACF,OACE,4EACF,KAAM,8EACN,SAAU,4BACV,OAAQ,wB"}