@bradhezh/create-prj 1.0.3 → 1.0.5

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 +28 -20
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var r={},o={};function e(n){var s=o[n];if(void 0!==s)return s.exports;var t=o[n]={exports:{}};return r[n](t,t.exports,e),t.exports}e.rv=()=>"1.6.8",e.ruid="bundler=rspack@1.6.8",console.log("Hello scaffolding!")})();
1
+ (()=>{"use strict";var e,n={};let r=require("node:fs/promises"),t=require("node:path"),o=require("node:url"),a=require("@clack/prompts"),u=require("axios"),l=require("node:util"),i=require("./registry.js"),c=require("node:child_process");require("node:os"),require("open"),require("comment-json"),require("yaml"),require("node:readline/promises");var s="Option required.",p="Project type",f={label:"Monorepo name"},m={label:"Types in monorepo"},b="Optional options: %s",y={label:"Configure them one by one, or choose none of them (except required ones)?"},d={label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"};(0,l.promisify)(c.exec);var v=function(){(0,a.cancel)("Operation cancelled."),process.exit(0)};function h(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=Array(n);r<n;r++)t[r]=e[r];return t}function g(e,n,r,t,o,a,u){try{var l=e[a](u),i=l.value}catch(e){r(e);return}l.done?n(i):Promise.resolve(i).then(t,o)}function w(e){return function(){var n=this,r=arguments;return new Promise(function(t,o){var a=e.apply(n,r);function u(e){g(a,t,o,u,l,"next",e)}function l(e){g(a,t,o,u,l,"throw",e)}u(void 0)})}}function x(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return h(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 h(e,void 0)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function j(e,n){var r,t,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(u,"next",{value:i(0)}),l(u,"throw",{value:i(1)}),l(u,"return",{value:i(2)}),"function"==typeof Symbol&&l(u,Symbol.iterator,{value:function(){return this}}),u;function i(l){return function(i){var c=[l,i];if(r)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(a=0)),a;)try{if(r=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,t=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=n.call(e,a)}catch(e){c=[6,e],t=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var O=[],S=function(){var e,n,r;if(null==(e=process.env.npm_config_user_agent)?void 0:e.includes(i.NPM.pnpm))r=i.NPM.pnpm;else if(null==(n=process.env.npm_config_user_agent)?void 0:n.includes(i.NPM.npm))r=i.NPM.npm;else throw Error("Only npm or pnpm supported for now.");return{npm:r,type:""}},q=function(e,n,r,t){return w(function(){var o,a,u,l,i,c,s,p,f;return j(this,function(m){switch(m.label){case 0:o=r?e[r]:e,a=!0,u=!1,l=void 0,m.label=1;case 1:m.trys.push([1,6,7,8]),i=n[Symbol.iterator](),m.label=2;case 2:if(a=(c=i.next()).done)return[3,5];if((s=c.value).disabled)return[3,4];return[4,N(e,s,r,t)];case 3:p=m.sent(),I(e,o,s,p),m.label=4;case 4:return a=!0,[3,2];case 5:return[3,8];case 6:return f=m.sent(),u=!0,l=f,[3,8];case 7:try{a||null==i.return||i.return()}finally{if(u)throw l}return[7];case 8:return[2]}})})()},I=function(e,n,r,t){if(r.plugin&&(0,i.addInQueue)(O,r.plugin),!r.values.length){n[r.name]=t[r.name];return}if(!r.multiple){var o=t[r.name];n[r.name]=o.name,(0,i.adjustOptions)(e,o),o.plugin&&(0,i.addInQueue)(O,o.plugin);return}var a=t[r.name];n[r.name]=a.map(function(e){return e.name});var u=!0,l=!1,c=void 0;try{for(var s,p=a[Symbol.iterator]();!(u=(s=p.next()).done);u=!0){var f=s.value;(0,i.adjustOptions)(e,f),f.plugin&&(0,i.addInQueue)(O,f.plugin)}}catch(e){l=!0,c=e}finally{try{u||null==p.return||p.return()}finally{if(l)throw c}}},P="default",k="Accept defaults",_="manual",A="Configure manually",M=void 0,C="None",E=function(){return(0,a.group)({type:function(){return(0,a.select)({message:p,options:i.options.type.filter(function(e){return!e.disabled}).map(function(e){return{value:e,label:e.label}})})}},{onCancel:v})},Q=function(){return(0,a.group)({name:function(){return(0,a.text)({message:f.label,initialValue:(0,t.basename)(process.cwd()),validate:function(e){return e?void 0:s}})},types:function(){return(0,a.multiselect)({message:m.label,options:i.options.type.filter(function(e){return!e.disabled&&e.name!==i.meta.plugin.type.monorepo}).map(function(e){return{value:e,label:e.label}})})}},{onCancel:v})},N=function(e,n,r,o){var u,l,c,p=o?"".concat(o," | "):"";return(0,a.group)((u={},l=n.name,c=function(){var o;return n.values.length?n.multiple?(0,a.multiselect)({message:"".concat(p).concat(n.label),options:n.values.filter(function(e){return!e.disabled}).map(function(e){return{value:e,label:e.label}})}):(0,a.select)({message:"".concat(p).concat(n.label),options:n.values.filter(function(e){return!e.disabled}).map(function(e){return{value:e,label:e.label}})}):(0,a.text)({message:"".concat(p).concat(n.label),initialValue:null!=(o=n.initial)?o:r&&n.name===i.meta.plugin.option.type.name?e.type===i.meta.plugin.type.monorepo?r:(0,t.basename)(process.cwd()):"",validate:n.optional?void 0:function(e){return e?void 0:s}})},l in u?Object.defineProperty(u,l,{value:c,enumerable:!0,configurable:!0,writable:!0}):u[l]=c,u),{onCancel:v})},T=function(e){return(0,a.group)({optional:function(){return(0,a.select)({message:e.length?d.label:y.label,options:x(!e.length?[]:[{value:P,label:k}]).concat([{value:_,label:A},{value:M,label:C}])})}},{onCancel:v})},G=function(e){a.log.info((0,l.format)(b,e.map(function(e){var n=e.values.length&&e.values[0].name!==i.meta.plugin.value.none&&e.values[0].label,r=e.required?n?"(".concat(n,", Required)"):"(Required)":n?"(".concat(n,")"):"";return"".concat(e.label).concat(r)}).join(", ")))};function R(e,n,r,t,o,a,u){try{var l=e[a](u),i=l.value}catch(e){r(e);return}l.done?n(i):Promise.resolve(i).then(t,o)}var F=function(){var e;return(e=function(){var e,n,t,o,l,c,s,p,f,m;return function(e,n){var r,t,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(u,"next",{value:i(0)}),l(u,"throw",{value:i(1)}),l(u,"return",{value:i(2)}),"function"==typeof Symbol&&l(u,Symbol.iterator,{value:function(){return this}}),u;function i(l){return function(i){var c=[l,i];if(r)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(a=0)),a;)try{if(r=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,t=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=n.call(e,a)}catch(e){c=[6,e],t=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(b){switch(b.label){case 0:return b.trys.push([0,11,,12]),[4,(0,r.readdir)(process.cwd())];case 1:if(b.sent().length)return a.log.error("Current work directory must be empty."),[2];return[4,w(function(){var e;return j(this,function(n){var r,t;switch(n.label){case 0:return[4,(r=e=S(),w(function(){var e,n,t,o,a,u,l,c,s,p,f,m,b,y,d,v,h,g,w;return j(this,function(j){switch(j.label){case 0:return[4,E()];case 1:if((e=j.sent().type).name===i.meta.plugin.type.monorepo&&r.npm!==i.NPM.pnpm)throw Error("Only pnpm supported for monorepo for now.");if(r.type=e.name,(0,i.adjustOptions)(r,e),e.plugin&&(0,i.addInQueue)(O,e.plugin),n=[e],r.type!==i.meta.plugin.type.monorepo)return[3,3];return[4,Q()];case 2:r.monorepo={name:(a=j.sent()).name,types:(u=a.types).map(function(e){return e.name})},l=!0,c=!1,s=void 0;try{for(p=u[Symbol.iterator]();!(l=(f=p.next()).done);l=!0)m=f.value,(0,i.adjustOptions)(r,m),m.plugin&&(0,i.addInQueue)(O,m.plugin)}catch(e){c=!0,s=e}finally{try{l||null==p.return||p.return()}finally{if(c)throw s}}(o=n).push.apply(o,x(u)),t=e.label,j.label=3;case 3:b=!0,y=!1,d=void 0,j.label=4;case 4:j.trys.push([4,9,10,11]),v=n[Symbol.iterator](),j.label=5;case 5:if(b=(h=v.next()).done)return[3,8];return r[(g=h.value).name]||(r[g.name]={}),[4,q(r,g.options,g.name,null!=t?t:g.label)];case 6:j.sent(),j.label=7;case 7:return b=!0,[3,5];case 8:return[3,11];case 9:return w=j.sent(),y=!0,d=w,[3,11];case 10:try{b||null==v.return||v.return()}finally{if(y)throw d}return[7];case 11:return[2]}})})())];case 1:return n.sent(),[4,q(e,i.options.compulsory)];case 2:return n.sent(),[4,(t=e,w(function(){var e,n,r,o,a,u,l,c,s,p;return j(this,function(f){switch(f.label){case 0:if(!(e=i.options.optional.filter(function(e){return!e.disabled})).length)return[2];return G(e),[4,T(n=e.filter(function(e){return e.values.length&&e.values[0].name!==i.meta.plugin.value.none}))];case 1:if((r=f.sent().optional)!==_)return[3,3];return[4,q(t,e)];case 2:case 4:return f.sent(),[2];case 3:if(r===P){o=!0,a=!1,u=void 0;try{for(l=n[Symbol.iterator]();!(o=(c=l.next()).done);o=!0)(s=c.value).plugin&&(0,i.addInQueue)(O,s.plugin),p=s.values[0],t[s.name]=s.multiple?[p.name]:p.name,p.plugin&&(0,i.addInQueue)(O,p.plugin)}catch(e){a=!0,u=e}finally{try{o||null==l.return||l.return()}finally{if(a)throw u}}}return[4,q(t,(r!==P?e:e.filter(function(e){return!n.find(function(n){return n.name===e.name})})).filter(function(e){return e.required}))]}})})())];case 3:return n.sent(),[2,e]}})})()];case 2:e=b.sent(),n=!0,t=!1,o=void 0,b.label=3;case 3:b.trys.push([3,8,9,10]),l=O[Symbol.iterator](),b.label=4;case 4:if(n=(c=l.next()).done)return[3,7];return[4,c.value.run(e)];case 5:b.sent(),b.label=6;case 6:return n=!0,[3,4];case 7:return[3,10];case 8:return s=b.sent(),t=!0,o=s,[3,10];case 9:try{n||null==l.return||l.return()}finally{if(t)throw o}return[7];case 10:return[3,12];case 11:var y,d;return y=p=b.sent(),(null!=(d=Error)&&"u">typeof Symbol&&d[Symbol.hasInstance]?d[Symbol.hasInstance](y):y instanceof d)||(console.log(p),process.exit(1)),(0,u.isAxiosError)(p)?console.log((null==(m=null==(f=p.response)?void 0:f.data)?void 0:m.message)||p.message):console.log(p.message),console.log(p.stack),process.exit(1),[3,12];case 12:return[2]}})},function(){var n=this,r=arguments;return new Promise(function(t,o){var a=e.apply(n,r);function u(e){R(a,t,o,u,l,"next",e)}function l(e){R(a,t,o,u,l,"throw",e)}u(void 0)})})()};function U(e,n,r,t,o,a,u){try{var l=e[a](u),i=l.value}catch(e){r(e);return}l.done?n(i):Promise.resolve(i).then(t,o)}var V=Function("specifier","return import(specifier)");(e=function(){var e,n,a,u,l,i,c,s;return function(e,n){var r,t,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(u,"next",{value:i(0)}),l(u,"throw",{value:i(1)}),l(u,"return",{value:i(2)}),"function"==typeof Symbol&&l(u,Symbol.iterator,{value:function(){return this}}),u;function i(l){return function(i){var c=[l,i];if(r)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(a=0)),a;)try{if(r=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,t=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=n.call(e,a)}catch(e){c=[6,e],t=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(p){switch(p.label){case 0:e=(0,t.join)(__dirname,"plugins"),n=!0,a=!1,u=void 0,p.label=1;case 1:return p.trys.push([1,7,8,9]),[4,(0,r.readdir)(e)];case 2:l=p.sent().filter(function(e){return e.endsWith(".js")})[Symbol.iterator](),p.label=3;case 3:if(n=(i=l.next()).done)return[3,6];return c=i.value,[4,V((0,o.pathToFileURL)((0,t.join)(e,c)).href)];case 4:p.sent(),p.label=5;case 5:return n=!0,[3,3];case 6:return[3,9];case 7:return s=p.sent(),a=!0,u=s,[3,9];case 8:try{n||null==l.return||l.return()}finally{if(a)throw u}return[7];case 9:return[4,F()];case 10:return p.sent(),[2]}})},function(){var n=this,r=arguments;return new Promise(function(t,o){var a=e.apply(n,r);function u(e){U(a,t,o,u,l,"next",e)}function l(e){U(a,t,o,u,l,"throw",e)}u(void 0)})})();var L=exports;for(var W in n)L[W]=n[W];n.__esModule&&Object.defineProperty(L,"__esModule",{value:!0})})();
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/index.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.6.8\")","__webpack_require__.ruid = \"bundler=rspack@1.6.8\";","console.log(\"Hello scaffolding!\");\n"],"names":["console"],"mappings":"yIAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uBCA3BA,QAAQ,GAAG,CAAC,qB"}
1
+ {"version":3,"file":"index.js","sources":["webpack://@bradhezh/create-prj/./src/message.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/conf.ts","webpack://@bradhezh/create-prj/./src/main.ts","webpack://@bradhezh/create-prj/./src/index.ts"],"sourcesContent":["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 { group, text, select, multiselect, log } from \"@clack/prompts\";\nimport { basename } from \"node:path\";\nimport { format } from \"node:util\";\n\nimport {\n adjustOptions,\n addInQueue,\n options,\n meta,\n NPM,\n Conf,\n Plugin,\n Option,\n Value,\n} from \"@/registry\";\nimport { onCancel } from \"@/command\";\nimport { message } from \"@/message\";\n\nexport const plugins: Plugin[] = [];\n\nexport const config = async () => {\n const conf = init();\n await confTypes(conf);\n await confOptions(conf, options.compulsory);\n await confOptional(conf);\n return conf;\n};\n\nconst init = () => {\n let npm;\n if (process.env.npm_config_user_agent?.includes(NPM.pnpm)) {\n npm = NPM.pnpm;\n } else if (process.env.npm_config_user_agent?.includes(NPM.npm)) {\n npm = NPM.npm;\n } else {\n throw new Error(message.pmUnsupported);\n }\n return { npm, type: \"\" };\n};\n\nconst confTypes = async (conf: Conf) => {\n const { type } = await typePrompt();\n if (type.name === meta.plugin.type.monorepo && conf.npm !== NPM.pnpm) {\n throw new Error(message.pnpmRequired);\n }\n conf.type = type.name;\n adjustOptions(conf, type);\n void (type.plugin && addInQueue(plugins, type.plugin));\n\n const types = [type];\n let monoLabel;\n if (conf.type === meta.plugin.type.monorepo) {\n const { name, types: types0 } = await monoPrompt();\n conf.monorepo = { name, types: types0.map((e) => e.name) };\n for (const type of types0) {\n adjustOptions(conf, type);\n void (type.plugin && addInQueue(plugins, type.plugin));\n }\n types.push(...types0);\n monoLabel = type.label;\n }\n\n for (const type of types) {\n if (!conf[type.name]) {\n conf[type.name] = {};\n }\n await confOptions(conf, type.options, type.name, monoLabel ?? type.label);\n }\n};\n\ntype OptionConf = Record<string, string | string[]>;\n\nconst confOptions = async (\n conf: Conf,\n opts: Option[],\n type?: string,\n typeLabel?: string,\n) => {\n const optConf = (!type ? conf : conf[type]) as OptionConf;\n for (const opt of opts) {\n if (opt.disabled) {\n continue;\n }\n const answer = await optionPrompt(conf, opt, type, typeLabel);\n setOptionValues(conf, optConf, opt, answer);\n }\n};\n\ntype Answer = Record<string, string | Value | Value[]>;\n\nconst setOptionValues = (\n conf: Conf,\n optConf: OptionConf,\n option: Option,\n answer: Answer,\n) => {\n void (option.plugin && addInQueue(plugins, option.plugin));\n if (!option.values.length) {\n optConf[option.name] = answer[option.name] as string;\n return;\n }\n if (!option.multiple) {\n const value = answer[option.name] as Value;\n optConf[option.name] = value.name;\n adjustOptions(conf, value);\n void (value.plugin && addInQueue(plugins, value.plugin));\n return;\n }\n const values = answer[option.name] as Value[];\n optConf[option.name] = values.map((e) => e.name);\n for (const value of values) {\n adjustOptions(conf, value);\n void (value.plugin && addInQueue(plugins, value.plugin));\n }\n};\n\nconst optional = {\n default: { value: \"default\", label: \"Accept defaults\" },\n manual: { value: \"manual\", label: \"Configure manually\" },\n none: { value: undefined, label: \"None\" },\n} as const;\n\nconst confOptional = async (conf: Conf) => {\n const opts = options.optional.filter((e) => !e.disabled);\n if (!opts.length) {\n return;\n }\n hintOptional(opts);\n const defOpts = opts.filter(\n (e) => e.values.length && e.values[0].name !== meta.plugin.value.none,\n );\n const { optional: optl } = await optionalPrompt(defOpts);\n if (optl === optional.manual.value) {\n await confOptions(conf, opts);\n return;\n }\n if (optl === optional.default.value) {\n for (const opt of defOpts) {\n void (opt.plugin && addInQueue(plugins, opt.plugin));\n const value = opt.values[0];\n conf[opt.name] = !opt.multiple ? value.name : [value.name];\n void (value.plugin && addInQueue(plugins, value.plugin));\n }\n }\n await confOptions(\n conf,\n (optl !== optional.default.value\n ? opts\n : opts.filter((e) => !defOpts.find((e0) => e0.name === e.name))\n ).filter((e) => e.required),\n );\n};\n\nconst typePrompt = () => {\n return group(\n {\n type: () =>\n select({\n message: message.type.label,\n options: options.type\n .filter((e) => !e.disabled)\n .map((e) => ({ value: e, label: e.label })),\n }),\n },\n { onCancel },\n );\n};\n\nconst monoPrompt = () => {\n return group(\n {\n name: () =>\n text({\n message: message.monorepo.name.label,\n initialValue: basename(process.cwd()),\n validate: (value?: string) => (value ? undefined : message.validate),\n }),\n types: () =>\n multiselect({\n message: message.monorepo.types.label,\n options: options.type\n .filter((e) => !e.disabled && e.name !== meta.plugin.type.monorepo)\n .map((e) => ({ value: e, label: e.label })),\n }),\n },\n { onCancel },\n );\n};\n\nconst optionPrompt = (\n conf: Conf,\n option: Option,\n type: string | undefined,\n typeLabel: string | undefined,\n) => {\n const label = !typeLabel ? \"\" : `${typeLabel} | `;\n return group(\n {\n [option.name]: () =>\n !option.values.length\n ? text({\n message: `${label}${option.label}`,\n initialValue:\n option.initial ??\n (!type || option.name !== meta.plugin.option.type.name\n ? \"\"\n : conf.type === meta.plugin.type.monorepo\n ? type\n : basename(process.cwd())),\n validate: option.optional\n ? undefined\n : (value?: string) => (value ? undefined : message.validate),\n })\n : !option.multiple\n ? select({\n message: `${label}${option.label}`,\n options: option.values\n .filter((e) => !e.disabled)\n .map((e) => ({ value: e, label: e.label })),\n })\n : multiselect({\n message: `${label}${option.label}`,\n options: option.values\n .filter((e) => !e.disabled)\n .map((e) => ({ value: e, label: e.label })),\n }),\n },\n { onCancel },\n );\n};\n\nconst optionalPrompt = (defOpts: Option[]) => {\n return group(\n {\n optional: () =>\n select({\n message: !defOpts.length\n ? message.optional.options.label\n : message.optional.defaults.label,\n options: [\n ...(!defOpts.length\n ? []\n : [\n {\n value: optional.default.value,\n label: optional.default.label,\n },\n ]),\n { value: optional.manual.value, label: optional.manual.label },\n { value: optional.none.value, label: optional.none.label },\n ],\n }),\n },\n { onCancel },\n );\n};\n\nconst hintOptional = (opts: Option[]) => {\n log.info(\n format(\n message.optional.hint,\n opts\n .map((e) => {\n const def =\n e.values.length &&\n e.values[0].name !== meta.plugin.value.none &&\n e.values[0].label;\n const desc = !e.required\n ? !def\n ? \"\"\n : `(${def})`\n : !def\n ? \"(Required)\"\n : `(${def}, Required)`;\n return `${e.label}${desc}`;\n })\n .join(\", \"),\n ),\n );\n};\n","import { readdir } from \"node:fs/promises\";\nimport { log } from \"@clack/prompts\";\nimport { isAxiosError } from \"axios\";\n\nimport { config, plugins } from \"@/conf\";\nimport { message } from \"@/message\";\n\nexport const main = async () => {\n try {\n if ((await readdir(process.cwd())).length) {\n log.error(message.cwdNonEmpty);\n return;\n }\n const conf = await config();\n for (const plugin of plugins) {\n await plugin.run(conf);\n }\n } catch (err: unknown) {\n if (!(err instanceof Error)) {\n console.log(err);\n process.exit(1);\n }\n if (isAxiosError(err)) {\n const data = err.response?.data as { message?: string } | undefined;\n console.log(data?.message || err.message);\n } else {\n console.log(err.message);\n }\n console.log(err.stack);\n process.exit(1);\n }\n};\n","import { readdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport { main } from \"@/main\";\n\n// eslint-disable-next-line @typescript-eslint/no-implied-eval\nconst dynamicImport = new Function(\"specifier\", \"return import(specifier)\");\n\nvoid (async () => {\n const dir = join(__dirname, \"plugins\");\n for (const file of (await readdir(dir)).filter((e) => e.endsWith(\".js\"))) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n await dynamicImport(pathToFileURL(join(dir, file)).href);\n }\n await main();\n})();\n"],"names":["promisify","execAsync","onCancel","cancel","process","plugins","init","_process_env_npm_config_user_agent","_process_env_npm_config_user_agent1","npm","NPM","Error","confOptions","conf","opts","type","typeLabel","optConf","_iteratorError","opt","answer","optionPrompt","setOptionValues","option","addInQueue","value","adjustOptions","values","e","value1","undefined","typePrompt","group","select","options","monoPrompt","text","message","basename","multiselect","meta","label","_option_initial","optionalPrompt","defOpts","hintOptional","log","format","def","desc","main","plugin","err1","_err_response","data","readdir","types","monoLabel","_types","_ref","types0","type1","_iteratorError1","type2","name","optl","e0","console","isAxiosError","dynamicImport","Function","dir","file","join","__dirname","pathToFileURL"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.rv=()=>"1.7.3",a.ruid="bundler=rspack@1.7.3";let i=require("node:child_process"),s=require("node:fs/promises"),l=require("node:path"),u=require("@clack/prompts"),p=require("node:util"),c=require("../registry.js");var f="express",m="nest",d="react",y="next",b="expo";require("node:os");let h=require("axios");require("open");let v=require("comment-json");var g=a.n(v);let w=require("yaml");var k=a.n(w);require("node:readline/promises");var x={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 O(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 j(e,t,r,n,o,a,i){try{var s=e[a](i),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){j(a,n,o,i,s,"next",e)}function s(e){j(a,n,o,i,s,"throw",e)}i(void 0)})}}function q(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function P(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function A(e,t){var r,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),s=Object.defineProperty;return s(i,"next",{value:l(0)}),s(i,"throw",{value:l(1)}),s(i,"return",{value:l(2)}),"function"==typeof Symbol&&s(i,Symbol.iterator,{value:function(){return this}}),i;function l(s){return function(l){var u=[s,l];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,u[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,n=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var E=(0,p.promisify)(i.exec),I=function(e,t,r,n){return S(function(){return A(this,function(o){switch(o.label){case 0:if(t)return[3,2];return[4,E((0,p.format)('%s pkg delete "scripts.%s"',r,e),{cwd:n})];case 1:case 3:return o.sent(),[2];case 2:return[4,E((0,p.format)('%s pkg set "scripts.%s"="%s"',r,e,t),{cwd:n})]}})})()},F=function(e,t,r){return S(function(){var n;return A(this,function(o){switch(o.label){case 0:return[4,E((0,p.format)('%s pkg get "scripts.%s"',t,e),{cwd:r})];case 1:return[2,"{}"===(n=o.sent().stdout.trim())?void 0:n]}})})()},T=function(e,t,r,n){return S(function(){var o,a,i,s,l,u,p,c,f;return A(this,function(m){switch(m.label){case 0:if(!(a=null!=(o=e[null!=t?t:"def"])?o:e.def))return[2];i=!0,s=!1,l=void 0,m.label=1;case 1:m.trys.push([1,6,7,8]),u=a[Symbol.iterator](),m.label=2;case 2:if(i=(p=u.next()).done)return[3,5];return[4,I((c=p.value).name,c.script,r,n)];case 3:m.sent(),m.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return f=m.sent(),s=!0,l=f,[3,8];case 7:try{i||null==u.return||u.return()}finally{if(s)throw l}return[7];case 8:return[2]}})})()},N="pnpm-workspace.yaml",C={"@/*":[""],"@shared/*":["shared/src/*"]},M=function(e,t,r,n,o){return S(function(){var a,i,u,c,f,m;return A(this,function(d){switch(d.label){case 0:if(!(u=null!=(a=t[null!=r?r:"def"])?a:t.def))return[2];return c=(0,l.join)(null!=n?n:"",u.name),[4,(0,h.get)("".concat(e).concat(null!=(i=u.path)?i:""),{responseType:o?"arraybuffer":"text"})];case 1:if("string"!=typeof(m=q((f=d.sent()).data,ArrayBuffer)?new Uint8Array(f.data):f.data)&&!q(m,Uint8Array))throw Error();return[4,(0,s.writeFile)(c,m)];case 2:if(d.sent(),!o)return[2];return[4,E((0,p.format)("tar -xvf %s",u.name),{cwd:n})];case 3:return d.sent(),[4,(0,s.rm)(c,{force:!0})];case 4:return d.sent(),[2]}})})()};function R(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 D(e,t,r,n,o,a,i){try{var s=e[a](i),l=s.value}catch(e){r(e);return}s.done?t(l):Promise.resolve(l).then(n,o)}function W(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){D(a,n,o,i,s,"next",e)}function s(e){D(a,n,o,i,s,"throw",e)}i(void 0)})}}function U(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 B(e,t){var r,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),s=Object.defineProperty;return s(i,"next",{value:l(0)}),s(i,"throw",{value:l(1)}),s(i,"return",{value:l(2)}),"function"==typeof Symbol&&s(i,Symbol.iterator,{value:function(){return this}}),i;function l(s){return function(l){var u=[s,l];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,u[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,n=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}function G(e){return W(function(){var t,r;return B(this,function(n){switch(n.label){case 0:return(t=(0,u.spinner)()).start(),u.log.info((0,p.format)(em.pluginStart,this.label)),[4,_(r=L(e,this.name),t)];case 1:return n.sent(),u.log.info(em.setPkg),[4,K(r)];case 2:return n.sent(),u.log.info(em.setWkspace),[4,V(r)];case 3:return n.sent(),u.log.info((0,p.format)(em.pluginFinish,this.label)),t.stop(),[2]}})}).call(this)}for(var L=function(e,t){var r,n=e.npm;if(n!==c.NPM.npm&&n!==c.NPM.pnpm)throw Error();var o=null==(r=e[t])?void 0:r.name;if(!o)throw Error();var a=$(e,t,o);return U({npm:n,name:o},a)},$=function(e,t,r){var n,o,a,i,s=null!=(n=null==(a=e[t])?void 0:a.framework)?n:t;return{type:t,typeFrmwk:s,cwd:e.type!==c.meta.plugin.type.monorepo?".":r,shared:(null!=(o=null==(i=e.monorepo)?void 0:i.types.length)?o:0)>1}},_=function(e,t){var r=e.typeFrmwk,n=e.npm,o=e.cwd;return W(function(){var e,a;return B(this,function(c){switch(c.label){case 0:return[4,M(et,en,r,o,!0)];case 1:if(c.sent(),!ea[r])return[3,3];return e=(0,p.format)(ea[r],n,o),u.log.info(e),t.stop(),(0,i.execSync)(e,{stdio:"inherit"}),t.start(),[4,(0,s.rm)((0,l.join)(o,ep),{recursive:!0,force:!0})];case 2:c.sent(),c.label=3;case 3:return(a=en)[r]||a.def||ea[r]||u.log.warn((0,p.format)(em.noTmpltCmd,r)),[2]}})})()},K=function(e){var t=e.name,n=e.typeFrmwk,o=e.npm,a=e.cwd;return W(function(){var e,i,s,l,u,f,m,d,b,h;return B(this,function(v){switch(v.label){case 0:return[4,S(function(){return A(this,function(e){switch(e.label){case 0:return[4,E((0,p.format)('%s pkg set name="%s"',o,t),{cwd:a})];case 1:return e.sent(),[2]}})})()];case 1:return v.sent(),[4,S(function(){var e,t,n,i;return A(this,function(e){switch(e.label){case 0:if(void 0!==r)return[3,2];return[4,E("volta -v").then(function(){return!0}).catch(function(){return!1})];case 1:r=e.sent(),e.label=2;case 2:if(!r)return[3,7];return[4,E("node -v")];case 3:return t=e.sent().stdout.trim(),[4,E((0,p.format)('%s pkg set "volta.node"="%s"',o,t.startsWith("v")?t.slice(1):t),{cwd:a})];case 4:return e.sent(),[4,E((0,p.format)("%s -v",o))];case 5:return n=e.sent().stdout.trim(),[4,E((0,p.format)('%s pkg set "volta.%s"="%s"',o,o,n.startsWith("v")?n.slice(1):n),{cwd:a})];case 6:e.sent(),e.label=7;case 7:if(o!==c.NPM.pnpm)return[2];return[4,E("pnpm -v")];case 8:return i=e.sent().stdout.trim(),[4,E((0,p.format)('%s pkg set packageManager="%s@%s"',c.NPM.pnpm,c.NPM.pnpm,i.startsWith("v")?i.slice(1):i),{cwd:a})];case 9:return e.sent(),[2]}})})()];case 2:return v.sent(),[4,T(ei,n,o,a)];case 3:if(v.sent(),!ea[n])return[3,12];e=!0,i=!1,s=void 0,v.label=4;case 4:v.trys.push([4,10,11,12]),l=es[Symbol.iterator](),v.label=5;case 5:if(e=(u=l.next()).done)return[3,9];return m=(f=u.value).name,d=f.script,[4,F(m,o,a)];case 6:if(v.sent())return[3,8];return[4,I(m,d,o,a)];case 7:v.sent(),v.label=8;case 8:return e=!0,[3,5];case 9:return[3,12];case 10:return b=v.sent(),i=!0,s=b,[3,12];case 11:try{e||null==l.return||l.return()}finally{if(i)throw s}return[7];case 12:if(!(h=n===y))return[3,14];return[4,F(el[0].name,o,".")];case 13:h=v.sent(),v.label=14;case 14:if(!h)return[3,16];return[4,T({nextScripts:el},"nextScripts",o,".")];case 15:v.sent(),v.label=16;case 16:return[2]}})})()},V=function(e){var t=e.typeFrmwk,r=e.shared,n=e.cwd;return W(function(){var e;return B(this,function(o){switch(o.label){case 0:return[4,S(function(){var e,r;return A(this,function(n){switch(n.label){case 0:if(!(r=null!=(e=eu[null!=t?t:"def"])?e:eu.def))return[2];return[4,S(function(){var e,t,n,o;return A(this,function(a){switch(a.label){case 0:return n=k().parse,[4,(0,s.readFile)(N,"utf8").catch(function(){return"{}"})];case 1:if((void 0===(t=n.apply(k(),[a.sent()]))?"undefined":P(t))!=="object"||null===t||Array.isArray(t)||((o=t).onlyBuiltDependencies||(o.onlyBuiltDependencies=[]),!Array.isArray(o.onlyBuiltDependencies)))throw Error((0,p.format)(x.invFormat,N));return(e=o.onlyBuiltDependencies).push.apply(e,function(e){if(Array.isArray(e))return O(e)}(r)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return O(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 O(e,void 0)}}(r)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[4,(0,s.writeFile)(N,k().stringify(t))];case 2:return a.sent(),[2]}})})()];case 1:return n.sent(),[2]}})})()];case 1:if(o.sent(),"."===n)return[3,5];if(t!==y)return[3,3];return e=(0,l.join)(n,ec),[4,(0,s.rename)(e,"".concat(e).concat(ef)).then(function(){return!0}).catch(function(){return!1})];case 2:return o.sent()&&u.log.warn((0,p.format)(em.nextWkspaceRenamed,n,n)),[3,5];case 3:if(t!==b)return[3,5];return[4,S(function(){return A(this,function(e){switch(e.label){case 0:return[4,E("pnpm config --location project delete node-linker")];case 1:return e.sent(),[2]}})})()];case 4:o.sent(),o.label=5;case 5:if(!r)return[3,8];return u.log.info(em.setShared),[4,S(function(){return A(this,function(e){switch(e.label){case 0:return[4,(0,s.access)((0,l.join)(n,"src")).then(function(){return C["@/*"][0]=(0,p.format)("%s/".concat("src","/*"),n)}).catch(function(){return C["@/*"][0]=(0,p.format)("%s/*",n)})];case 1:return e.sent(),[4,S(function(){var e,t,r,o;return A(this,function(a){switch(a.label){case 0:return e=(0,l.join)(null!=n?n:"","tsconfig.json"),r=g().parse,[4,(0,s.readFile)(e,"utf8").catch(function(){return"{}"})];case 1:if((void 0===(t=r.apply(g(),[a.sent()]))?"undefined":P(t))!=="object"||null===t||Array.isArray(t)||(t.compilerOptions||(t.compilerOptions={}),"object"!==P(t.compilerOptions)||null===t.compilerOptions||Array.isArray(t.compilerOptions)))throw Error((0,p.format)(x.invFormat,e));return t.compilerOptions.baseUrl="..",t.compilerOptions.paths=C,o=g().stringify(t,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,s.writeFile)(e,o)];case 2:return a.sent(),[2]}})})()];case 2:return e.sent(),[2]}})})()];case 6:return o.sent(),[4,M(et,eo,t,n,!0)];case 7:o.sent(),o.label=8;case 8:return[2]}})})()},z=0,J=[{name:c.meta.plugin.type.backend,label:"Backend",keeps:[],frameworks:[{name:f,label:"Express",skips:[],keeps:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}],requires:[]},{name:m,label:"NestJS",skips:[],keeps:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}],requires:[]}]},{name:c.meta.plugin.type.frontend,label:"Frontend",keeps:[],frameworks:[{name:d,label:"React (Vite)",skips:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}],keeps:[],requires:[]},{name:y,label:"Next.js",skips:[{type:c.meta.plugin.type.frontend,option:c.meta.plugin.option.type.deployment,value:"render"},{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}],keeps:[{type:c.meta.plugin.type.frontend,option:c.meta.plugin.option.type.deployment}],requires:[]}]},{name:c.meta.plugin.type.mobile,label:"Mobile",keeps:[],frameworks:[{name:b,label:"Expo",skips:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}],keeps:[],requires:[]}]},{name:c.meta.plugin.type.node,label:"Node.js app",keeps:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}]},{name:c.meta.plugin.type.lib,label:"Library",keeps:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}]},{name:c.meta.plugin.type.cli,label:"CLI tool",keeps:[{option:c.meta.plugin.option.builder},{option:c.meta.plugin.option.test},{option:c.meta.plugin.option.lint}]}];z<J.length;z++){var H,Q=J[z],X=Q.name,Y=Q.label,Z=Q.keeps,ee=Q.frameworks;(0,c.regType)({name:X,label:Y,skips:[],keeps:Z,requires:[],plugin:{name:X,label:Y,run:G},options:[{name:c.meta.plugin.option.type.name,label:"".concat(Y," name"),values:[]}].concat(function(e){if(Array.isArray(e))return R(e)}(H=ee?[{name:c.meta.plugin.option.type.framework,label:"".concat(Y," framework"),values:ee}]:[])||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(H)||function(e,t){if(e){if("string"==typeof e)return R(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 R(e,void 0)}}(H)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})}var et="https://raw.githubusercontent.com/bradhezh/prj-template/master/type",er="type.tar",en={nest:{name:er,path:"/nest/type.tar"},express:{name:er,path:"/expr/ts/type.tar"},node:{name:er,path:"/node/ts/type.tar"},lib:{name:er,path:"/lib/ts/type.tar"},cli:{name:er,path:"/cli/ts/type.tar"}},eo={nest:{name:"ptch.tar",path:"/shrd/ptch/nest/ptch.tar"},express:{name:"ptch.tar",path:"/shrd/ptch/expr/ts/ptch.tar"}},ea={react:"%s create vite %s --template react-ts",next:"%s create next-app %s --ts --no-react-compiler --no-src-dir -app --api --eslint --tailwind --skip-install --disable-git",expo:"%s create expo-app %s --no-install"},ei={react:[{name:"start",script:"vite preview"}],expo:[{name:"dev",script:"expo start"}]},es=[{name:"test",script:"exit 0"},{name:"lint",script:"exit 0"}],el=[{name:"copy-dist",script:void 0},{name:"build",script:"pnpm --filter backend build && pnpm --filter frontend build"},{name:"start:fe",script:"pnpm --filter frontend start"}],eu={nest:["@nestjs/core"],react:["esbuild"]},ep=".git",ec="pnpm-workspace.yaml",ef=".bak",em=(e=U({},x),t=t={noTmpltCmd:'No template or command provided for "%s"',nextWkspaceRenamed:"%s/pnpm-workspace.yaml has been renamed %s/pnpm-workspace.yaml.bak, please check the content and merge necessary ones into the root workspace."},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=000-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/000-type.js","sources":["webpack://@bradhezh/create-prj/./src/command.ts","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/plugins/000-type.ts"],"sourcesContent":["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","// 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 { execSync } from \"node:child_process\";\nimport { rm, rename } 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 { regType, meta, NPM, Conf, Plugin, PrimeType } from \"@/registry\";\nimport {\n installTmplt,\n setPkgName,\n setPkgVers,\n getPkgScript,\n setPkgScript,\n setPkgScripts,\n setWkspaceBuiltDeps,\n rmPnpmNodeLinker,\n setPathAliasWithShared,\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, this.name as PrimeType);\n\n await install(conf0, s);\n log.info(message.setPkg);\n await setPkg(conf0);\n log.info(message.setWkspace);\n await setWkspace(conf0);\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\n\nconst parseConf = (conf: Conf, type: PrimeType) => {\n const npm = conf.npm;\n if (npm !== NPM.npm && npm !== NPM.pnpm) {\n throw new Error();\n }\n const name = conf[type]?.name;\n if (!name) {\n throw new Error();\n }\n const type0 = parseType(conf, type, name);\n return { npm, name, ...type0 };\n};\n\nconst parseType = (conf: Conf, type: PrimeType, name: string) => {\n const typeFrmwk = (conf[type]?.framework ?? type) as TypeFrmwk;\n const cwd = conf.type !== meta.plugin.type.monorepo ? \".\" : name;\n const shared = (conf.monorepo?.types.length ?? 0) > 1;\n return { type, typeFrmwk, cwd, shared };\n};\n\ntype InstallData = { typeFrmwk: TypeFrmwk; npm: NPM; cwd: string };\n\nconst install = async ({ typeFrmwk, npm, cwd }: InstallData, s: Spinner) => {\n await installTmplt(base, template, typeFrmwk, cwd, true);\n if (command[typeFrmwk]) {\n const cmd = format(command[typeFrmwk], npm, cwd);\n log.info(cmd);\n s.stop();\n execSync(cmd, { stdio: \"inherit\" });\n s.start();\n await rm(join(cwd, git), { recursive: true, force: true });\n }\n const tmplt = template as Template<TypeFrmwk>;\n if (!tmplt[typeFrmwk] && !tmplt.def && !command[typeFrmwk]) {\n log.warn(format(message.noTmpltCmd, typeFrmwk));\n }\n};\n\ntype PkgData = { name: string; typeFrmwk: TypeFrmwk; npm: NPM; cwd: string };\n\nconst setPkg = async ({ name, typeFrmwk, npm, cwd }: PkgData) => {\n await setPkgName(name, npm, cwd);\n await setPkgVers(npm, cwd);\n await setPkgScripts(scripts, typeFrmwk, npm, cwd);\n if (command[typeFrmwk]) {\n for (const { name, script } of nonTmpltScripts) {\n if (!(await getPkgScript(name, npm, cwd)))\n await setPkgScript(name, script, npm, cwd);\n }\n }\n if (\n typeFrmwk === value.framework.next &&\n (await getPkgScript(nextScripts[0].name, npm, \".\"))\n ) {\n await setPkgScripts({ nextScripts }, \"nextScripts\", npm, \".\");\n }\n};\n\ntype WkspaceData = { typeFrmwk: TypeFrmwk; shared: boolean; cwd: string };\n\nconst setWkspace = async ({ typeFrmwk, shared, cwd }: WkspaceData) => {\n await setWkspaceBuiltDeps(builtDeps, typeFrmwk);\n if (cwd !== \".\") {\n if (typeFrmwk === value.framework.next) {\n const wkspace = join(cwd, workspace);\n if (\n await rename(wkspace, `${wkspace}${bak}`)\n .then(() => true)\n .catch(() => false)\n ) {\n log.warn(format(message.nextWkspaceRenamed, cwd, cwd));\n }\n } else if (typeFrmwk === value.framework.expo) {\n await rmPnpmNodeLinker();\n }\n }\n if (shared) {\n log.info(message.setShared);\n await setPathAliasWithShared(cwd);\n await installTmplt(base, patchTmplt, typeFrmwk, cwd, true);\n }\n};\n\nfor (const { name, label, keeps, frameworks } of [\n {\n name: meta.plugin.type.backend,\n label: \"Backend\",\n keeps: [],\n frameworks: [\n {\n name: value.framework.express,\n label: \"Express\",\n skips: [],\n keeps: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n requires: [],\n },\n {\n name: value.framework.nest,\n label: \"NestJS\",\n skips: [],\n keeps: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n requires: [],\n },\n ],\n },\n {\n name: meta.plugin.type.frontend,\n label: \"Frontend\",\n keeps: [],\n frameworks: [\n {\n name: value.framework.react,\n label: \"React (Vite)\",\n skips: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n keeps: [],\n requires: [],\n },\n {\n name: value.framework.next,\n label: \"Next.js\",\n skips: [\n {\n type: meta.plugin.type.frontend,\n option: meta.plugin.option.type.deployment,\n value: value.deployment.render,\n },\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n keeps: [\n {\n type: meta.plugin.type.frontend,\n option: meta.plugin.option.type.deployment,\n },\n ],\n requires: [],\n },\n ],\n },\n {\n name: meta.plugin.type.mobile,\n label: \"Mobile\",\n keeps: [],\n frameworks: [\n {\n name: value.framework.expo,\n label: \"Expo\",\n skips: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n keeps: [],\n requires: [],\n },\n ],\n },\n {\n name: meta.plugin.type.node,\n label: \"Node.js app\",\n keeps: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n },\n {\n name: meta.plugin.type.lib,\n label: \"Library\",\n keeps: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n },\n {\n name: meta.plugin.type.cli,\n label: \"CLI tool\",\n keeps: [\n { option: meta.plugin.option.builder },\n { option: meta.plugin.option.test },\n { option: meta.plugin.option.lint },\n ],\n },\n]) {\n regType({\n name,\n label,\n skips: [],\n keeps,\n requires: [],\n plugin: { name, label, run },\n options: [\n {\n name: meta.plugin.option.type.name,\n label: `${label} name`,\n values: [],\n },\n ...(!frameworks\n ? []\n : [\n {\n name: meta.plugin.option.type.framework,\n label: `${label} framework`,\n values: frameworks,\n },\n ]),\n ],\n });\n}\n\ntype Spinner = ReturnType<typeof spinner>;\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/type\" as const;\nconst name = \"type.tar\" as const;\n\ntype TypeFrmwk = PrimeType | keyof typeof value.framework;\nconst template = {\n nest: { name, path: \"/nest/type.tar\" },\n express: { name, path: \"/expr/ts/type.tar\" },\n node: { name, path: \"/node/ts/type.tar\" },\n lib: { name, path: \"/lib/ts/type.tar\" },\n cli: { name, path: \"/cli/ts/type.tar\" },\n} as const;\n\nconst patchTmplt = {\n nest: { name: \"ptch.tar\", path: \"/shrd/ptch/nest/ptch.tar\" },\n express: { name: \"ptch.tar\", path: \"/shrd/ptch/expr/ts/ptch.tar\" },\n} as const;\n\ntype TypeFrmwkKey = TypeFrmwk | typeof defKey;\nconst command: Partial<Record<TypeFrmwkKey, string>> = {\n react: \"%s create vite %s --template react-ts\",\n next: \"%s create next-app %s --ts --no-react-compiler --no-src-dir -app --api --eslint --tailwind --skip-install --disable-git\",\n expo: \"%s create expo-app %s --no-install\",\n} as const;\n\nconst scripts = {\n react: [{ name: \"start\", script: \"vite preview\" }],\n expo: [{ name: \"dev\", script: \"expo start\" }],\n} as const;\n\nconst nonTmpltScripts = [\n { name: \"test\", script: \"exit 0\" },\n { name: \"lint\", script: \"exit 0\" },\n] as const;\n\nconst nextScripts = [\n { name: \"copy-dist\", script: undefined },\n {\n name: \"build\",\n script: \"pnpm --filter backend build && pnpm --filter frontend build\",\n },\n { name: \"start:fe\", script: \"pnpm --filter frontend start\" },\n] as const;\n\nconst builtDeps = { nest: [\"@nestjs/core\"], react: [\"esbuild\"] } as const;\n\nconst git = \".git\" as const;\nconst workspace = \"pnpm-workspace.yaml\" as const;\nconst bak = \".bak\" as const;\n\nconst message = {\n ...msg,\n noTmpltCmd: 'No template or command provided for \"%s\"',\n nextWkspaceRenamed:\n \"%s/pnpm-workspace.yaml has been renamed %s/pnpm-workspace.yaml.bak, please check the content and merge necessary ones into the root workspace.\",\n} as const;\n"],"names":["volta","e","Object","message","exec","promisify","execAsync","setPkgScript","name","script","npm","cwd","format","getPkgScript","undefined","setPkgScripts","scripts","key","_scripts_","scripts0","_iteratorError","workspace","pathAliasWithShared","installTmplt","base","template","tar","_template_","_tmplt_path","tmplt","file","res","data","join","get","_instanceof","ArrayBuffer","Uint8Array","Error","writeFile","rm","run","conf","s","conf0","spinner","log","install","parseConf","setPkg","setWkspace","type","_conf_type","NPM","type0","parseType","_conf_monorepo","typeFrmwk","meta","shared","cmd","command","execSync","git","name1","node","npmV","pnpm","nonTmpltScripts","value","nextScripts","wkspace","_deps_","deps0","builtDeps","deps","_doc0_onlyBuiltDependencies","doc","doc0","Yaml","readFile","_type_of","a","Array","rename","bak","access","text","Json","patchTmplt","_iter","label","keeps","frameworks","regType","msg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,t={},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var s=r[e]={exports:{}};return t[e](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.rv=()=>"1.7.3",n.ruid="bundler=rspack@1.7.3";let a=require("@clack/prompts"),s=require("node:util"),o=require("../registry.js"),i=require("node:child_process"),u=require("node:fs/promises"),c=require("node:path");require("node:os");let l=require("axios");require("open"),require("comment-json");let f=require("yaml");var p=n.n(f);function m(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 d(e,t,r,n,a,s,o){try{var i=e[s](o),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function b(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var s=e.apply(t,r);function o(e){d(s,n,a,o,i,"next",e)}function i(e){d(s,n,a,o,i,"throw",e)}o(void 0)})}}function h(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function y(e,t){var r,n,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:u(0)}),i(o,"throw",{value:u(1)}),i(o,"return",{value:u(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,n=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=t.call(e,s)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}require("node:readline/promises");var v=(0,s.promisify)(i.exec),g=function(t,r){return b(function(){var n,a,i;return y(this,function(u){switch(u.label){case 0:if(void 0!==e)return[3,2];return[4,v("volta -v").then(function(){return!0}).catch(function(){return!1})];case 1:e=u.sent(),u.label=2;case 2:if(!e)return[3,7];return[4,v("node -v")];case 3:return n=u.sent().stdout.trim(),[4,v((0,s.format)('%s pkg set "volta.node"="%s"',t,n.startsWith("v")?n.slice(1):n),{cwd:r})];case 4:return u.sent(),[4,v((0,s.format)("%s -v",t))];case 5:return a=u.sent().stdout.trim(),[4,v((0,s.format)('%s pkg set "volta.%s"="%s"',t,t,a.startsWith("v")?a.slice(1):a),{cwd:r})];case 6:u.sent(),u.label=7;case 7:if(t!==o.NPM.pnpm)return[2];return[4,v("pnpm -v")];case 8:return i=u.sent().stdout.trim(),[4,v((0,s.format)('%s pkg set packageManager="%s@%s"',o.NPM.pnpm,o.NPM.pnpm,i.startsWith("v")?i.slice(1):i),{cwd:r})];case 9:return u.sent(),[2]}})})()},w=function(e,t,r,n){return b(function(){return y(this,function(a){switch(a.label){case 0:if(t)return[3,2];return[4,v((0,s.format)('%s pkg delete "scripts.%s"',r,e),{cwd:n})];case 1:case 3:return a.sent(),[2];case 2:return[4,v((0,s.format)('%s pkg set "scripts.%s"="%s"',r,e,t),{cwd:n})]}})})()},k=function(e,t,r,n,a){return b(function(){var o,i,f,p,m,d;return y(this,function(b){switch(b.label){case 0:if(!(f=null!=(o=t[null!=r?r:"def"])?o:t.def))return[2];return p=(0,c.join)(null!=n?n:"",f.name),[4,(0,l.get)("".concat(e).concat(null!=(i=f.path)?i:""),{responseType:a?"arraybuffer":"text"})];case 1:if("string"!=typeof(d=h((m=b.sent()).data,ArrayBuffer)?new Uint8Array(m.data):m.data)&&!h(d,Uint8Array))throw Error();return[4,(0,u.writeFile)(p,d)];case 2:if(b.sent(),!a)return[2];return[4,v((0,s.format)("tar -xvf %s",f.name),{cwd:n})];case 3:return b.sent(),[4,(0,u.rm)(p,{force:!0})];case 4:return b.sent(),[2]}})})()};function x(e,t,r,n,a,s,o){try{var i=e[s](o),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function j(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var s=e.apply(t,r);function o(e){x(s,n,a,o,i,"next",e)}function i(e){x(s,n,a,o,i,"throw",e)}o(void 0)})}}function S(e,t){var r,n,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:u(0)}),i(o,"throw",{value:u(1)}),i(o,"return",{value:u(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,n=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=t.call(e,s)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var O=function(e){var t=e.npm;if(t!==o.NPM.npm&&t!==o.NPM.pnpm)throw Error();var r=e.monorepo.name;if(!r)throw Error();return function(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}({npm:t,name:r},N(e))},N=function(e){var t,r,n,a,s,i,u,c,l=e.monorepo.types,f=l.map(function(t){var r;if(!(null==(r=e[t])?void 0:r.name))throw Error();return e[t].name});if(new Set(f).size!==f.length)throw Error();if(l.includes(o.meta.plugin.type.backend)){if(!(t=null==(n=e.backend)?void 0:n.name))throw Error();r=t}if(l.includes(o.meta.plugin.type.frontend)){if(!(a=null==(s=e.frontend)?void 0:s.name))throw Error();r||(r=a)}if(l.includes(o.meta.plugin.type.mobile)&&!(i=null==(u=e.mobile)?void 0:u.name))throw Error();var p=l[0];if(!p||!r&&1===l.length&&!(r=null==(c=e[p])?void 0:c.name))throw Error();return{names:f,beName:t,feName:a,mName:i,defName:r,defType:p,shared:l.length>1,sharedJs:l.filter(function(t){var r;return(null==(r=e[t])?void 0:r.typescript)!==o.meta.plugin.value.none}).length<=1}},P=function(e){var t=e.beName,r=e.feName,n=e.mName,a=e.defName,o=e.npm;return j(function(){return S(this,function(e){switch(e.label){case 0:if(!(t&&r))return[3,3];return[4,w(_.copyDist.name,(0,s.format)(_.copyDist.script,t,r,t),o)];case 1:return e.sent(),[4,w(_.build.name,(0,s.format)(_.build.fullstack,t,r),o)];case 2:return e.sent(),[3,5];case 3:if(!(a&&a!==n))return[3,5];return[4,w(_.build.name,(0,s.format)(_.build.script,a),o)];case 4:e.sent(),e.label=5;case 5:return[2]}})})()},q=function(e){var t=e.feName,r=e.mName,n=e.defName,a=e.npm;return j(function(){return S(this,function(e){switch(e.label){case 0:if(!n)return[3,2];return[4,w(_.dev.name,(0,s.format)(_.dev.script,n),a)];case 1:e.sent(),e.label=2;case 2:if(!(t&&t!==n))return[3,4];return[4,w("".concat(_.dev.name).concat(_.frontend.suffix),(0,s.format)(_.dev.script,t),a)];case 3:e.sent(),e.label=4;case 4:if(!(r&&r!==n))return[3,6];return[4,w("".concat(_.dev.name).concat(_.mobile.suffix),(0,s.format)(_.dev.script,r),a)];case 5:e.sent(),e.label=6;case 6:return[2]}})})()},E=function(e){var t=e.defName,r=e.defType,n=e.npm;return j(function(){return S(this,function(e){switch(e.label){case 0:if(!(t&&r!==o.meta.plugin.type.lib&&r!==o.meta.plugin.type.cli&&r!==o.meta.plugin.type.mobile))return[3,2];return[4,w(_.start.name,(0,s.format)(_.start.script,t),n)];case 1:e.sent(),e.label=2;case 2:return[2]}})})()},A=function(e){var t=e.names,r=e.shared,n=e.sharedJs,s=e.npm;return j(function(){return S(this,function(e){switch(e.label){case 0:return[4,b(function(){var e,r,n,a,s,i,c,l;return y(this,function(f){switch(f.label){case 0:e=t.length<=1?t:((function(e){if(Array.isArray(e))return m(e)})(t)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return m(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 m(e,void 0)}}(t)||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([o.meta.system.type.shared]),r=!0,n=!1,a=void 0,f.label=1;case 1:f.trys.push([1,6,7,8]),s=e[Symbol.iterator](),f.label=2;case 2:if(r=(i=s.next()).done)return[3,5];return c=i.value,[4,(0,u.mkdir)(c)];case 3:f.sent(),f.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return l=f.sent(),n=!0,a=l,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(n)throw a}return[7];case 8:return[4,(0,u.writeFile)("pnpm-workspace.yaml",p().stringify({packages:e}))];case 9:return f.sent(),[2]}})})()];case 1:if(e.sent(),!r)return[3,4];return a.log.info("Setting shared"),[4,k(M,U,n?"js":"def",o.meta.system.type.shared,!0)];case 2:return e.sent(),[4,g(s,o.meta.system.type.shared)];case 3:e.sent(),e.label=4;case 4:return[2]}})})()},I="Monorepo";(0,o.regType)({name:o.meta.plugin.type.monorepo,label:I,skips:[],keeps:[],requires:[],plugin:{name:o.meta.plugin.type.monorepo,label:I,run:function(e){return j(function(){var t,r;return S(this,function(n){switch(n.label){case 0:return(t=(0,a.spinner)()).start(),a.log.info((0,s.format)("Configuring %s",this.label)),r=O(e),[4,j(function(){return S(this,function(e){switch(e.label){case 0:return[4,k(M,{template:D},"template")];case 1:return e.sent(),[2]}})})()];case 1:var o;return n.sent(),a.log.info("Setting packages"),[4,(o=r,j(function(){var e,t;return S(this,function(r){var n,a,i,u;switch(r.label){case 0:return e=o.name,[4,(n=t=o.npm,b(function(){return y(this,function(t){switch(t.label){case 0:return[4,v((0,s.format)('%s pkg set name="%s"',n,e),{cwd:void 0})];case 1:return t.sent(),[2]}})})())];case 1:return r.sent(),[4,g(t)];case 2:return r.sent(),[4,P(o)];case 3:return r.sent(),[4,q(o)];case 4:return r.sent(),[4,E(o)];case 5:return r.sent(),[4,(a={scripts:W},i="scripts",u=t,b(function(){var e,t,r,n,s,o,c,l,f;return y(this,function(p){switch(p.label){case 0:if(!(t=null!=(e=a[null!=i?i:"def"])?e:a.def))return[2];r=!0,n=!1,s=void 0,p.label=1;case 1:p.trys.push([1,6,7,8]),o=t[Symbol.iterator](),p.label=2;case 2:if(r=(c=o.next()).done)return[3,5];return[4,w((l=c.value).name,l.script,u,void 0)];case 3:p.sent(),p.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return f=p.sent(),n=!0,s=f,[3,8];case 7:try{r||null==o.return||o.return()}finally{if(n)throw s}return[7];case 8:return[2]}})})())];case 6:return r.sent(),[2]}})})())];case 2:return n.sent(),a.log.info("Setting workspace"),[4,A(r)];case 3:return n.sent(),a.log.info((0,s.format)("%s completed!",this.label)),t.stop(),[2]}})}).call(this)}},options:[]});var M="https://raw.githubusercontent.com/bradhezh/prj-template/master/type",T="type.tar",D={name:"package.json",path:"/mono/package.json"},U={js:{name:T,path:"/shrd/js/type.tar"},def:{name:T,path:"/shrd/ts/type.tar"}},W=[{name:"test",script:"pnpm -r test"},{name:"lint",script:"pnpm -r lint"}],_={build:{name:"build",script:"pnpm --filter %s build",fullstack:"pnpm --filter %s build && pnpm --filter %s build && pnpm copy-dist"},dev:{name:"dev",script:"pnpm --filter %s dev"},start:{name:"start",script:"pnpm --filter %s start"},copyDist:{name:"copy-dist",script:"pnpm dlx shx rm -rf %s/dist && pnpm dlx shx cp -r %s/dist %s/dist"},frontend:{suffix:":fe"},mobile:{suffix:":m"}}})();
2
+ //# sourceMappingURL=001-monorepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/001-monorepo.js","sources":["webpack://@bradhezh/create-prj/./src/command.ts","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/001-monorepo.ts","webpack://@bradhezh/create-prj/./src/message.ts"],"sourcesContent":["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","// 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 { log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport { regType, meta, NPM, Conf, Plugin, PrimeType } from \"@/registry\";\nimport {\n installTmplt,\n setPkgName,\n setPkgVers,\n setPkgScript,\n setPkgScripts,\n createWkspace,\n defKey,\n} from \"@/command\";\nimport { message } 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\n await install();\n log.info(message.setPkg);\n await setPkg(conf0);\n log.info(message.setWkspace);\n await setWkspace(conf0);\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\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 name = conf.monorepo!.name;\n if (!name) {\n throw new Error();\n }\n const type = parseType(conf);\n return { npm, name, ...type };\n};\n\nconst parseType = (conf: Conf) => {\n const types = conf.monorepo!.types as PrimeType[];\n const names = types.map((e) => {\n if (!conf[e]?.name) {\n throw new Error();\n }\n return conf[e].name;\n });\n if (new Set(names).size !== names.length) {\n throw new Error();\n }\n let beName, defName;\n if (types.includes(meta.plugin.type.backend)) {\n beName = conf.backend?.name;\n if (!beName) {\n throw new Error();\n }\n defName = beName;\n }\n let feName;\n if (types.includes(meta.plugin.type.frontend)) {\n feName = conf.frontend?.name;\n if (!feName) {\n throw new Error();\n }\n void (defName || (defName = feName));\n }\n let mName;\n if (types.includes(meta.plugin.type.mobile)) {\n mName = conf.mobile?.name;\n if (!mName) {\n throw new Error();\n }\n }\n const defType = types[0];\n if (!defType) {\n throw new Error();\n }\n if (!defName && types.length === 1) {\n defName = conf[defType]?.name;\n if (!defName) {\n throw new Error();\n }\n }\n const shared = types.length > 1;\n const sharedJs =\n types.filter((e) => conf[e]?.typescript !== meta.plugin.value.none)\n .length <= 1;\n return { names, beName, feName, mName, defName, defType, shared, sharedJs };\n};\n\nconst install = async () => {\n await installTmplt(base, { template }, \"template\");\n};\n\ntype PkgData = {\n name: string;\n beName?: string;\n feName?: string;\n mName?: string;\n defName?: string;\n defType: PrimeType;\n npm: NPM;\n};\n\nconst setPkg = async (data: PkgData) => {\n const { name, npm } = data;\n await setPkgName(name, npm);\n await setPkgVers(npm);\n await setBuildScripts(data);\n await setDevScripts(data);\n await setStartScripts(data);\n await setPkgScripts({ scripts }, \"scripts\", npm);\n};\n\nconst setBuildScripts = async ({\n beName,\n feName,\n mName,\n defName,\n npm,\n}: PkgData) => {\n if (beName && feName) {\n await setPkgScript(\n script.copyDist.name,\n format(script.copyDist.script, beName, feName, beName),\n npm,\n );\n await setPkgScript(\n script.build.name,\n format(script.build.fullstack, beName, feName),\n npm,\n );\n } else if (defName && defName !== mName) {\n await setPkgScript(\n script.build.name,\n format(script.build.script, defName),\n npm,\n );\n }\n};\n\nconst setDevScripts = async ({ feName, mName, defName, npm }: PkgData) => {\n void (\n defName &&\n (await setPkgScript(\n script.dev.name,\n format(script.dev.script, defName),\n npm,\n ))\n );\n if (feName && feName !== defName) {\n await setPkgScript(\n `${script.dev.name}${script.frontend.suffix}`,\n format(script.dev.script, feName),\n npm,\n );\n }\n if (mName && mName !== defName) {\n await setPkgScript(\n `${script.dev.name}${script.mobile.suffix}`,\n format(script.dev.script, mName),\n npm,\n );\n }\n};\n\nconst setStartScripts = async ({ defName, defType, npm }: PkgData) => {\n if (\n defName &&\n defType !== meta.plugin.type.lib &&\n defType !== meta.plugin.type.cli &&\n defType !== meta.plugin.type.mobile\n ) {\n await setPkgScript(\n script.start.name,\n format(script.start.script, defName),\n npm,\n );\n }\n};\n\ntype WkspaceData = {\n names: string[];\n shared: boolean;\n sharedJs: boolean;\n npm: NPM;\n};\n\nconst setWkspace = async ({ names, shared, sharedJs, npm }: WkspaceData) => {\n await createWkspace(names);\n if (shared) {\n log.info(message.setShared);\n await installTmplt(\n base,\n sharedTmplt,\n sharedJs ? \"js\" : defKey,\n meta.system.type.shared,\n true,\n );\n await setPkgVers(npm, meta.system.type.shared);\n }\n};\n\nconst label = \"Monorepo\" as const;\n\nregType({\n name: meta.plugin.type.monorepo,\n label,\n skips: [],\n keeps: [],\n requires: [],\n plugin: { name: meta.plugin.type.monorepo, label, run },\n options: [],\n});\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/type\" as const;\nconst name = \"type.tar\" as const;\n\nconst template = { name: \"package.json\", path: \"/mono/package.json\" } as const;\n\nconst sharedTmplt = {\n js: { name, path: \"/shrd/js/type.tar\" },\n def: { name, path: \"/shrd/ts/type.tar\" },\n} as const;\n\nconst scripts = [\n { name: \"test\", script: \"pnpm -r test\" },\n { name: \"lint\", script: \"pnpm -r lint\" },\n];\n\nconst script = {\n build: {\n name: \"build\",\n script: \"pnpm --filter %s build\",\n fullstack:\n \"pnpm --filter %s build && pnpm --filter %s build && pnpm copy-dist\",\n },\n dev: { name: \"dev\", script: \"pnpm --filter %s dev\" },\n start: { name: \"start\", script: \"pnpm --filter %s start\" },\n copyDist: {\n name: \"copy-dist\",\n script: \"pnpm dlx shx rm -rf %s/dist && pnpm dlx shx cp -r %s/dist %s/dist\",\n },\n frontend: { suffix: \":fe\" },\n mobile: { suffix: \":m\" },\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":["volta","e","Object","exec","promisify","execAsync","setPkgVers","npm","cwd","node","npmV","pnpm","undefined","format","NPM","setPkgScript","name","script","a","installTmplt","base","template","key","tar","_template_","_tmplt_path","tmplt","file","res","data","join","get","_instanceof","ArrayBuffer","Uint8Array","Error","writeFile","rm","parseConf","conf","parseType","beName","defName","_conf_backend","feName","_conf_frontend","mName","_conf_mobile","_conf_defType","types","names","_conf_e","Set","meta","defType","shared","sharedJs","setBuildScripts","setDevScripts","setStartScripts","setWkspace","packages","_iteratorError","pkg","pkgs","mkdir","Yaml","log","sharedTmplt","label","regType","run","s","conf0","spinner","scripts","_scripts_","scripts0"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.rv=()=>"1.7.3",a.ruid="bundler=rspack@1.7.3";let i=require("node:fs/promises"),s=require("node:path"),u=require("@clack/prompts"),c=require("node:util"),l=require("../registry.js");var p="nodec",f="metadata";let y=require("node:child_process");require("node:os");let m=require("axios");require("open");let d=require("comment-json");var b=a.n(d);require("yaml"),require("node:readline/promises");var v={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 h(e,t,r,n,o,a,i){try{var s=e[a](i),u=s.value}catch(e){r(e);return}s.done?t(u):Promise.resolve(u).then(n,o)}function g(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){h(a,n,o,i,s,"next",e)}function s(e){h(a,n,o,i,s,"throw",e)}i(void 0)})}}function w(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function O(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function j(e,t){var r,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),s=Object.defineProperty;return s(i,"next",{value:u(0)}),s(i,"throw",{value:u(1)}),s(i,"return",{value:u(2)}),"function"==typeof Symbol&&s(i,Symbol.iterator,{value:function(){return this}}),i;function u(s){return function(u){var c=[s,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(r=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 a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var k=(0,c.promisify)(y.exec);function P(e,t,r,n,o,a,i){try{var s=e[a](i),u=s.value}catch(e){r(e);return}s.done?t(u):Promise.resolve(u).then(n,o)}function q(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){P(a,n,o,i,s,"next",e)}function s(e){P(a,n,o,i,s,"throw",e)}i(void 0)})}}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:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),s=Object.defineProperty;return s(i,"next",{value:u(0)}),s(i,"throw",{value:u(1)}),s(i,"return",{value:u(2)}),"function"==typeof Symbol&&s(i,Symbol.iterator,{value:function(){return this}}),i;function u(s){return function(u){var c=[s,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(r=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 a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var S=function(e){var t=e.npm;if(t!==l.NPM.npm&&t!==l.NPM.pnpm)throw Error();var r=e.node.name;if(!r)throw Error();var n=e.type!==l.meta.plugin.type.monorepo?".":r;return{npm:t,name:r,cwd:n,ts:e.node.typescript}},E=function(e){var t=e.ts,n=e.name,o=e.npm,a=e.cwd;return q(function(){var e,y,d,h,P,q,S;return x(this,function(x){var E,N,R;switch(x.label){case 0:if(t!==p)return[3,1];return[3,16];case 1:if(t!==f)return[3,3];return[4,(E={experimentalDecorators:!0,emitDecoratorMetadata:!0},g(function(){var e,t,r,n;return j(this,function(o){switch(o.label){case 0:return e=(0,s.join)(null!=a?a:"","tsconfig.json"),r=b().parse,[4,(0,i.readFile)(e,"utf8").catch(function(){return"{}"})];case 1:if((void 0===(t=r.apply(b(),[o.sent()]))?"undefined":O(t))!=="object"||null===t||Array.isArray(t)||(t.compilerOptions||(t.compilerOptions={}),"object"!==O(t.compilerOptions)||null===t.compilerOptions||Array.isArray(t.compilerOptions)))throw Error((0,c.format)(v.invFormat,e));return t.compilerOptions=function(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}({},t.compilerOptions,E),n=b().stringify(t,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,i.writeFile)(e,n)];case 2:return o.sent(),[2]}})})())];case 2:return x.sent(),[3,16];case 3:if(t!==l.meta.plugin.value.none)return[3,15];u.log.info(I.reinstall),e=!0,y=!1,d=void 0,x.label=4;case 4:x.trys.push([4,9,10,11]),h=M[Symbol.iterator](),x.label=5;case 5:if(e=(P=h.next()).done)return[3,8];return q=P.value,[4,(0,i.rm)((0,s.join)(a,q),{recursive:!0,force:!0})];case 6:x.sent(),x.label=7;case 7:return e=!0,[3,5];case 8:return[3,11];case 9:return S=x.sent(),y=!0,d=S,[3,11];case 10:try{e||null==h.return||h.return()}finally{if(y)throw d}return[7];case 11:return[4,(N={template:D},R="template",g(function(){var e,t,r,n,o,u;return j(this,function(l){switch(l.label){case 0:if(!(r=null!=(e=N[null!=R?R:"def"])?e:N.def))return[2];return n=(0,s.join)(null!=a?a:"",r.name),[4,(0,m.get)("".concat(T).concat(null!=(t=r.path)?t:""),{responseType:"arraybuffer"})];case 1:if("string"!=typeof(u=w((o=l.sent()).data,ArrayBuffer)?new Uint8Array(o.data):o.data)&&!w(u,Uint8Array))throw Error();return[4,(0,i.writeFile)(n,u)];case 2:l.sent(),0;return[4,k((0,c.format)("tar -xvf %s",r.name),{cwd:a})];case 3:return l.sent(),[4,(0,i.rm)(n,{force:!0})];case 4:return l.sent(),[2]}})})())];case 12:return x.sent(),[4,g(function(){return j(this,function(e){switch(e.label){case 0:return[4,k((0,c.format)('%s pkg set name="%s"',o,n),{cwd:a})];case 1:return e.sent(),[2]}})})()];case 13:return x.sent(),[4,g(function(){var e,t,n;return j(this,function(i){switch(i.label){case 0:if(void 0!==r)return[3,2];return[4,k("volta -v").then(function(){return!0}).catch(function(){return!1})];case 1:r=i.sent(),i.label=2;case 2:if(!r)return[3,7];return[4,k("node -v")];case 3:return e=i.sent().stdout.trim(),[4,k((0,c.format)('%s pkg set "volta.node"="%s"',o,e.startsWith("v")?e.slice(1):e),{cwd:a})];case 4:return i.sent(),[4,k((0,c.format)("%s -v",o))];case 5:return t=i.sent().stdout.trim(),[4,k((0,c.format)('%s pkg set "volta.%s"="%s"',o,o,t.startsWith("v")?t.slice(1):t),{cwd:a})];case 6:i.sent(),i.label=7;case 7:if(o!==l.NPM.pnpm)return[2];return[4,k("pnpm -v")];case 8:return n=i.sent().stdout.trim(),[4,k((0,c.format)('%s pkg set packageManager="%s@%s"',l.NPM.pnpm,l.NPM.pnpm,n.startsWith("v")?n.slice(1):n),{cwd:a})];case 9:return i.sent(),[2]}})})()];case 14:return x.sent(),[3,16];case 15:throw Error();case 16:return[2]}})})()},N="Typescript for Node.js app";(0,l.regOption)({name:l.meta.plugin.option.type.typescript,label:N,plugin:{name:"".concat(l.meta.plugin.type.node,"_").concat(l.meta.plugin.option.type.typescript),label:N,run:function(e){return q(function(){var t;return x(this,function(r){switch(r.label){case 0:return(t=(0,u.spinner)()).start(),u.log.info((0,c.format)(I.pluginStart,this.label)),[4,E(S(e))];case 1:return r.sent(),u.log.info((0,c.format)(I.pluginFinish,this.label)),t.stop(),[2]}})}).call(this)}},values:[{name:p,label:"No decorator",skips:[],keeps:[],requires:[]},{name:f,label:"Decorator with emitDecoratorMetadata",skips:[],keeps:[],requires:[]},{name:l.meta.plugin.value.none,label:"None",skips:[],keeps:[],requires:[]}]},l.meta.system.option.category.type,l.meta.plugin.type.node);var T="https://raw.githubusercontent.com/bradhezh/prj-template/master/type/node/js/type.tar",D={name:"type.tar"},M=["package.json","tsconfig.json","src"],I=(e=function(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}({},v),t=t={reinstall:"Replacing Typescript files with Javascript ones"},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=002-node-ts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/002-node-ts.js","sources":["webpack://@bradhezh/create-prj/./src/command.ts","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/plugins/002-node-ts.ts"],"sourcesContent":["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","// 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 { rm } 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 { regOption, meta, NPM, Conf, Plugin } from \"@/registry\";\nimport { setTsOptions, installTmplt, setPkgName, setPkgVers } 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\n await reinstall(conf0);\n\n log.info(format(message.pluginFinish, this.label));\n s.stop();\n}\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 name = conf.node!.name;\n if (!name) {\n throw new Error();\n }\n const cwd = conf.type !== meta.plugin.type.monorepo ? \".\" : name;\n const ts = conf.node!.typescript;\n return { npm, name, cwd, ts };\n};\n\ntype InstallData = { ts?: string; name: string; npm: NPM; cwd: string };\n\nconst reinstall = async ({ ts, name, npm, cwd }: InstallData) => {\n if (ts === value.typescript.nodec) {\n void 0;\n } else if (ts === value.typescript.metadata) {\n await setTsOptions(\n { experimentalDecorators: true, emitDecoratorMetadata: true },\n cwd,\n );\n } else if (ts === meta.plugin.value.none) {\n log.info(message.reinstall);\n for (const replace of replaces) {\n await rm(join(cwd, replace), { recursive: true, force: true });\n }\n await installTmplt(base, { template }, \"template\", cwd, true);\n await setPkgName(name, npm, cwd);\n await setPkgVers(npm, cwd);\n } else {\n throw new Error();\n }\n};\n\nconst label = \"Typescript for Node.js app\" as const;\n\nregOption(\n {\n name: meta.plugin.option.type.typescript,\n label,\n plugin: {\n name: `${meta.plugin.type.node}_${meta.plugin.option.type.typescript}`,\n label,\n run,\n },\n values: [\n {\n name: value.typescript.nodec,\n label: \"No decorator\",\n skips: [],\n keeps: [],\n requires: [],\n },\n {\n name: value.typescript.metadata,\n label: \"Decorator with emitDecoratorMetadata\",\n skips: [],\n keeps: [],\n requires: [],\n },\n {\n name: meta.plugin.value.none,\n label: \"None\",\n skips: [],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.type,\n meta.plugin.type.node,\n);\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/type/node/js/type.tar\" as const;\nconst template = { name: \"type.tar\" } as const;\n\nconst replaces = [\"package.json\", \"tsconfig.json\", \"src\"] as const;\n\nconst message = {\n ...msg,\n reinstall: \"Replacing Typescript files with Javascript ones\",\n} as const;\n"],"names":["volta","e","Object","message","exec","promisify","execAsync","parseConf","conf","npm","NPM","Error","name","cwd","meta","ts","reinstall","_iteratorError","replace","options","template","key","file","doc","text","join","Json","readFile","_type_of","Array","format","writeFile","log","replaces","rm","_template_","_tmplt_path","tmplt","res","data","get","base","_instanceof","ArrayBuffer","Uint8Array","node","npmV","pnpm","undefined","label","regOption","run","s","spinner","msg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},t={};function r(p){var n=t[p];if(void 0!==n)return n.exports;var o=t[p]={exports:{}};return e[p](o,o.exports,r),o.exports}r.rv=()=>"1.7.3",r.ruid="bundler=rspack@1.7.3";let p=require("../registry.js");(0,p.regOption)({name:p.meta.plugin.option.type.deployment,label:"Backend deployment",values:[{name:p.meta.plugin.value.none,label:"None",pos:{mode:p.PosMode.last},skips:[{type:p.meta.plugin.type.backend,option:"deploySrc"}],keeps:[],requires:[]}]},p.meta.system.option.category.type,p.meta.plugin.type.backend)})();
2
+ //# sourceMappingURL=003-be-deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/003-be-deploy.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/003-be-deploy.ts","webpack://@bradhezh/create-prj/./src/plugins/const.ts"],"sourcesContent":["__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { option } from \"./const\";\nimport { regOption, meta, PosMode } from \"@/registry\";\n\nregOption(\n {\n name: meta.plugin.option.type.deployment,\n label: \"Backend deployment\",\n values: [\n {\n name: meta.plugin.value.none,\n label: \"None\",\n pos: { mode: PosMode.last },\n skips: [{ type: meta.plugin.type.backend, option: option.deploySrc }],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.type,\n meta.plugin.type.backend,\n);\n","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"],"names":["regOption","meta","PosMode"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCG3BA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,KAAMC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,CACxC,MAAO,qBACP,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,KAAMD,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAwB,CAAE,OCVf,WDUwC,EAAE,CACrE,MAAO,EAAE,CACT,SAAU,EAAE,AACd,EACD,AACH,EACAA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,IAAgC,CAChCA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAwB,C"}
@@ -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:"deploySrc",label:"Backend deployment source",values:[]},o.meta.system.option.category.type,o.meta.plugin.type.backend)})();
2
+ //# sourceMappingURL=004-be-deploy-src.js.map