@bradhezh/create-prj 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/plugins/000-type.js +2 -0
  4. package/dist/plugins/000-type.js.map +1 -0
  5. package/dist/plugins/001-monorepo.js +2 -0
  6. package/dist/plugins/001-monorepo.js.map +1 -0
  7. package/dist/plugins/002-node-ts.js +2 -0
  8. package/dist/plugins/002-node-ts.js.map +1 -0
  9. package/dist/plugins/003-be-deploy.js +2 -0
  10. package/dist/plugins/003-be-deploy.js.map +1 -0
  11. package/dist/plugins/004-be-deploy-src.js +2 -0
  12. package/dist/plugins/004-be-deploy-src.js.map +1 -0
  13. package/dist/plugins/005-fe-deploy.js +2 -0
  14. package/dist/plugins/005-fe-deploy.js.map +1 -0
  15. package/dist/plugins/006-fe-deploy-src.js +2 -0
  16. package/dist/plugins/006-fe-deploy-src.js.map +1 -0
  17. package/dist/plugins/007-render.js +2 -0
  18. package/dist/plugins/007-render.js.map +1 -0
  19. package/dist/plugins/008-docker.js +2 -0
  20. package/dist/plugins/008-docker.js.map +1 -0
  21. package/dist/plugins/009-fe-vercel.js +2 -0
  22. package/dist/plugins/009-fe-vercel.js.map +1 -0
  23. package/dist/plugins/010-m-deploy.js +2 -0
  24. package/dist/plugins/010-m-deploy.js.map +1 -0
  25. package/dist/plugins/011-m-expo.js +2 -0
  26. package/dist/plugins/011-m-expo.js.map +1 -0
  27. package/dist/plugins/012-pkg-deploy.js +2 -0
  28. package/dist/plugins/012-pkg-deploy.js.map +1 -0
  29. package/dist/plugins/100-builder.js +2 -0
  30. package/dist/plugins/100-builder.js.map +1 -0
  31. package/dist/plugins/101-rspack.js +2 -0
  32. package/dist/plugins/101-rspack.js.map +1 -0
  33. package/dist/plugins/200-test.js +2 -0
  34. package/dist/plugins/200-test.js.map +1 -0
  35. package/dist/plugins/201-jest.js +2 -0
  36. package/dist/plugins/201-jest.js.map +1 -0
  37. package/dist/plugins/202-lint.js +2 -0
  38. package/dist/plugins/202-lint.js.map +1 -0
  39. package/dist/plugins/203-eslint.js +2 -0
  40. package/dist/plugins/203-eslint.js.map +1 -0
  41. package/dist/plugins/204-git.js +2 -0
  42. package/dist/plugins/204-git.js.map +1 -0
  43. package/dist/plugins/205-github.js +2 -0
  44. package/dist/plugins/205-github.js.map +1 -0
  45. package/dist/plugins/206-cicd.js +2 -0
  46. package/dist/plugins/206-cicd.js.map +1 -0
  47. package/dist/plugins/207-gha.js +2 -0
  48. package/dist/plugins/207-gha.js.map +1 -0
  49. package/dist/registry.js +2 -0
  50. package/dist/registry.js.map +1 -0
  51. package/package.json +27 -24
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/004-be-deploy-src.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/004-be-deploy-src.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 } from \"@/registry\";\n\nregOption(\n { name: option.deploySrc, label: \"Backend deployment source\", values: [] },\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"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCG3BA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CAAE,KCF+B,YDEP,MAAO,4BAA6B,OAAQ,EAAE,AAAC,EACzEC,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={},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var p=t[n]={exports:{}};return e[n](p,p.exports,r),p.exports}r.rv=()=>"1.7.3",r.ruid="bundler=rspack@1.7.3";let n=require("../registry.js");(0,n.regOption)({name:n.meta.plugin.option.type.deployment,label:"Frontend deployment",values:[{name:n.meta.plugin.value.none,label:"None",pos:{mode:n.PosMode.last},skips:[{type:n.meta.plugin.type.frontend,option:"deploySrc"}],keeps:[],requires:[]}]},n.meta.system.option.category.type,n.meta.plugin.type.frontend)})();
2
+ //# sourceMappingURL=005-fe-deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/005-fe-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/005-fe-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: \"Frontend deployment\",\n values: [\n {\n name: meta.plugin.value.none,\n label: \"None\",\n pos: { mode: PosMode.last },\n skips: [{ type: meta.plugin.type.frontend, option: option.deploySrc }],\n keeps: [],\n requires: [],\n },\n ],\n },\n meta.system.option.category.type,\n meta.plugin.type.frontend,\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,sBACP,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,QAAyB,CAAE,OCVhB,WDUyC,EAAE,CACtE,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,QAAyB,C"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.rv=()=>"1.7.3",r.ruid="bundler=rspack@1.7.3";let o=require("../registry.js");(0,o.regOption)({name:"deploySrc",label:"Frontend deployment source",values:[{name:"repo",label:"Repository\n| Note: Extra authentication might be needed, e.g. for private repositories\n| on GitHub to be deployed on Render.com, you should install Render Github\n| App. You can install it on Render's dashboard, or via\n| https://github.com/apps/render/installations/new.",skips:[],keeps:[],requires:[{option:o.meta.plugin.option.git}]}]},o.meta.system.option.category.type,o.meta.plugin.type.frontend)})();
2
+ //# sourceMappingURL=006-fe-deploy-src.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/006-fe-deploy-src.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/006-fe-deploy-src.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, value } from \"./const\";\nimport { regOption, meta } from \"@/registry\";\n\nregOption(\n {\n name: option.deploySrc,\n label: \"Frontend deployment source\",\n values: [\n {\n name: value.deploySrc.repo,\n label:\n \"Repository\\n| Note: Extra authentication might be needed, e.g. for private repositories\\n| on GitHub to be deployed on Render.com, you should install Render Github\\n| App. You can install it on Render's dashboard, or via\\n| https://github.com/apps/render/installations/new.\",\n skips: [],\n keeps: [],\n requires: [{ option: meta.plugin.option.git }],\n },\n ],\n },\n meta.system.option.category.type,\n meta.plugin.type.frontend,\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"],"mappings":"sJAAA,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,gCCG3BA,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EACE,CACE,KCH+B,YDI/B,MAAO,6BACP,OAAQ,CACN,CACE,KCU6C,ODT7C,MACE,gSACF,MAAO,EAAE,CACT,MAAO,EAAE,CACT,SAAU,CAAC,CAAE,OAAQC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,AAAC,EAAE,AAChD,EACD,AACH,EACAA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,IAAgC,CAChCA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,C"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e={},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.rv=()=>"1.7.3",t.ruid="bundler=rspack@1.7.3";let n=require("node:fs/promises"),o=require("node:path"),i=require("axios"),a=require("@clack/prompts"),u=require("node:util"),s=require("../registry.js");var c="deploySrc",l="render",p="dkrhub",f="ghcr",d="repo",y=function(e){return!!(e&&("string"==typeof e&&e!==s.meta.plugin.value.none||Array.isArray(e)&&e.length||(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"))};let m=require("node:child_process"),h=require("node:os"),b=require("open");var v=t.n(b);let g=require("comment-json");var k=t.n(g);require("yaml");let w=require("node:readline/promises");var O={validate:"Option required.",type:{label:"Project type"},monorepo:{name:{label:"Monorepo name"},types:{label:"Types in monorepo"}},optional:{hint:"Optional options: %s",options:{label:"Configure them one by one, or choose none of them (except required ones)?"},defaults:{label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"}},opCanceled:"Operation cancelled.",cwdNonEmpty:"Current work directory must be empty.",pmUnsupported:"Only npm or pnpm supported for now.",pnpmRequired:"Only pnpm supported for monorepo for now.",elemExist:"Element exists already.",refsRequired:'When using "after", reference elements must be specified.',circularDep:"Circular dependency.",afterLast:"Element cannot be after ones as the last.",invSkipOrKeep:"Invalid skip or keep.",invElem:"Invalid element.",sysType:"Type cannot be registered with a system name.",typeNotExist:"Type does not exist.",typeRequired:"Type must be specified for type options.",sysConfKey:"Option cannot be registered with a system name.",optionNotExist:"Option does not exist.",optionConflict:"Option conflict between compulsory and optional ones.",valueNotExist:"Value does not exist.",invFormat:"Invalid format of %s.",userGot:"Paste your username: ",userRequired:"Username required.",readTokenGot:"Paste your read-only token: ",readTokenRequired:"Read-only token required.",tokenGot:"Paste your read-write token: ",tokenRequired:"Read-write token required.",pluginStart:"Configuring %s",setPkg:"Setting packages",setWkspace:"Setting workspace",setShared:"Setting shared",pluginFinish:"%s completed!"};function j(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function P(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){j(i,n,o,a,u,"next",e)}function u(e){j(i,n,o,a,u,"throw",e)}a(void 0)})}}function E(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function T(e,r){var t,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(a,"next",{value:s(0)}),u(a,"throw",{value:s(1)}),u(a,"return",{value:s(2)}),"function"==typeof Symbol&&u(a,Symbol.iterator,{value:function(){return this}}),a;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(0,u.promisify)(m.exec);var x=".bradhezh-create-prj",S="config.json",q=function(e){return P(function(){var r,t,i,a,u,s,c,l,p;return T(this,function(f){switch(f.label){case 0:return t=k().parse,[4,(0,n.readFile)((0,o.join)((0,h.homedir)(),x,S),"utf-8").catch(function(){return"{}"})];case 1:if(r=t.apply(k(),[f.sent()]),!e)return[2,r];i=r,a=!0,u=!1,s=void 0;try{for(c=e.split(".")[Symbol.iterator]();!(a=(l=c.next()).done);a=!0){if(p=l.value,(void 0===i?"undefined":E(i))!=="object"||null===i||Array.isArray(i))return[2];i=i[p]}}catch(e){u=!0,s=e}finally{try{a||null==c.return||c.return()}finally{if(u)throw s}}return[2,i]}})})()},C=function(e,r){return P(function(){var t,i,a,u,s,c,l,p,f,d,y,m,b;return T(this,function(v){switch(v.label){case 0:return[4,(0,n.mkdir)((0,o.join)((0,h.homedir)(),x),{recursive:!0})];case 1:return v.sent(),t=(0,o.join)((0,h.homedir)(),x,S),a=k().parse,[4,(0,n.readFile)(t,"utf8").catch(function(){return"{}"})];case 2:if(i=a.apply(k(),[v.sent()]),r){((void 0===i?"undefined":E(i))!=="object"||null===i||Array.isArray(i))&&(i={}),u=i,c=(s=r.split(".")).pop(),l=!0,p=!1,f=void 0;try{for(d=s[Symbol.iterator]();!(l=(y=d.next()).done);l=!0)m=y.value,("object"!==E(u[m])||null===u[m]||Array.isArray(u[m]))&&(u[m]={}),u=u[m]}catch(e){p=!0,f=e}finally{try{l||null==d.return||d.return()}finally{if(p)throw f}}u[c]=e}else i=e;return b=k().stringify(i,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,n.writeFile)(t,b)];case 3:return v.sent(),[2]}})})()},A=function(){(0,a.cancel)(O.opCanceled),process.exit(0)};function R(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function I(e){if(Array.isArray(e))return e}function D(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function G(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){D(i,n,o,a,u,"next",e)}function u(e){D(i,n,o,a,u,"throw",e)}a(void 0)})}}function _(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function F(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}function N(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):(function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e}function M(e,r){if(e){if("string"==typeof e)return R(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return R(e,r)}}function U(e,r){var t,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(a,"next",{value:s(0)}),u(a,"throw",{value:s(1)}),u(a,"return",{value:s(2)}),"function"==typeof Symbol&&u(a,Symbol.iterator,{value:function(){return this}}),a;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}for(var z=function(e){return function(r){return G(function(){var t,n,o,i;return U(this,function(s){switch(s.label){case 0:if((t=(0,a.spinner)()).start(),a.log.info((0,u.format)(eq.pluginStart,"".concat(this.label," for the ").concat(e))),!(n=W(r,e)))return[2];return[4,B(t)];case 1:return o=s.sent(),a.log.info(eq.createRender),[4,L(F({},n,o))];case 2:return i=s.sent(),Q(r,F({},n,o,i)),a.log.info((0,u.format)(eq.pluginFinish,"".concat(this.label," for the ").concat(e))),t.stop(),[2]}})}).call(this)}},W=function(e,r){var t,n=e.npm;if(n!==s.NPM.npm&&n!==s.NPM.pnpm)throw Error();var o=null==(t=e[e.type])?void 0:t.name;if(!o)throw Error();var i=K(e,r);if(i)return F({type:r,npm:n,name:o},i)},K=function(e,r){if(r!==s.meta.plugin.type.backend&&r!==s.meta.plugin.type.frontend||(null==(t=e.backend)?void 0:t.deployment)===l&&(null==(n=e.frontend)?void 0:n.deployment)===l)throw Error();var t,n,o,i,u=e[r][c];if(u===p||u===f){if(!(i=e[r][u]))return void a.log.warn(eq.noDkr);if(u===f&&!i.image)throw Error()}else if(u===d){if(!y(e.git))throw Error();if(!(i=e[e.git]))return void a.log.warn(eq.noGit);if(!i.repo)throw Error()}else throw Error();var m=e.type!==s.meta.plugin.type.monorepo?".":null==(o=e[r])?void 0:o.name;if(!m)throw Error();return{src:u,srcData:i,cwd:m}},B=function(e){return G(function(){var r;return U(this,function(t){switch(t.label){case 0:var n,o,i;return[4,(n={token:ea},o={},i=eq.token,P(function(){var r,t,u;return T(this,function(s){var c,l,p,f,d,y,m,h;switch(s.label){case 0:return[4,(c=n,l=o,P(function(){var e,r,t,n,o,i,a,u,s;return T(this,function(p){switch(p.label){case 0:if(!c.user&&!c.readToken&&!c.token)return[2,{}];if(!(r=c.user))return[3,3];if(t=l.user)return[3,2];return[4,q(c.user)];case 1:t=p.sent(),p.label=2;case 2:r=t,p.label=3;case 3:if(e=r,!(o=c.readToken))return[3,6];if(i=l.readToken)return[3,5];return[4,q(c.readToken)];case 4:i=p.sent(),p.label=5;case 5:o=i,p.label=6;case 6:if(n=o,!(u=c.token))return[3,9];if(s=l.token)return[3,8];return[4,q(c.token)];case 7:s=p.sent(),p.label=8;case 8:u=s,p.label=9;case 9:if(a=u,"string"!=typeof e&&void 0!==e||"string"!=typeof n&&void 0!==n||"string"!=typeof a&&void 0!==a)throw Error();return[2,{user:e,readToken:n,token:a}]}})})())];case 1:if(r=s.sent(),(!n.user||r.user)&&(!n.readToken||r.readToken)&&(!n.token||r.token))return[2,r];return null==e||e.stop(),[4,(t=(0,w.createInterface)({input:process.stdin,output:process.stdout})).question(i)];case 2:if(s.sent(),t.close(),!(n.readToken&&!r.readToken||n.token&&!r.token))return[3,4];return[4,v()(eu)];case 3:s.sent(),s.label=4;case 4:return[4,(p=!!(n.user&&!r.user),f=!!(n.readToken&&!r.readToken),d=!!(n.token&&!r.token),(0,a.group)(function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}({},p&&{user:function(){return(0,a.text)({message:O.userGot,validate:function(e){return e?void 0:O.userRequired}})}},f&&{readToken:function(){return(0,a.password)({message:O.readTokenGot,mask:"*",validate:function(e){return e?void 0:O.readTokenRequired}})}},d&&{token:function(){return(0,a.password)({message:O.tokenGot,mask:"*",validate:function(e){return e?void 0:O.tokenRequired}})}}),{onCancel:A}))];case 5:return u=s.sent(),null==e||e.start(),[4,(y=r,m=n,h=u,P(function(){return T(this,function(e){switch(e.label){case 0:if(!(m.user&&!y.user))return[3,2];if(!h.user)throw Error();return y.user=h.user,[4,C(y.user,m.user)];case 1:e.sent(),e.label=2;case 2:if(!(m.readToken&&!y.readToken))return[3,4];if(!h.readToken)throw Error();return y.readToken=h.readToken,[4,C(y.readToken,m.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(m.token&&!y.token))return[3,6];if(!h.token)throw Error();return y.token=h.token,[4,C(y.token,m.token)];case 5:e.sent(),e.label=6;case 6:return[2]}})})())];case 6:return s.sent(),[2,r]}})})())];case 1:if(!(r=t.sent().token))throw Error();return[2,{token:r}]}})})()},L=function(e){return G(function(){var r,t,n,o,a;return U(this,function(u){switch(u.label){case 0:return r=e.token,[4,V(t=(0,i.create)({baseURL:es,headers:{Authorization:"Bearer ".concat(r),Accept:"application/json","Content-Type":"application/json"}}))];case 1:return n=u.sent(),[4,$(t,n,e)];case 2:return o=u.sent(),[4,H(t,n,e,o)];case 3:return a=u.sent(),[4,J(t,a,e)];case 4:return u.sent(),[2,{owner:n,service:a,cred:o}]}})})()},V=function(e){return G(function(){var r,t;return U(this,function(n){switch(n.label){case 0:return[4,q(en)];case 1:if("string"!=typeof(r=n.sent())&&void 0!==r)throw Error();if(r)return[2,r];return[4,e.get(ec)];case 2:var o;if(o=n.sent().data,"string"!=typeof(t=(I(o)||function(e,r){var t,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,u=!1;try{for(o=o.call(e);!(a=(t=o.next()).done)&&(i.push(t.value),1!==i.length);a=!0);}catch(e){u=!0,n=e}finally{try{a||null==o.return||o.return()}finally{if(u)throw n}}return i}}(o,1)||M(o,1)||_())[0].owner.id))throw Error();return[4,C(t,en)];case 3:return n.sent(),[2,t]}})})()},$=function(e,r,t){var n=t.src,o=t.srcData;return G(function(){var t,i,a,u,s,c,l,d;return U(this,function(y){switch(y.label){case 0:if(n===p)t=eo,i=ed,a=em;else{if(n!==f)return[2];t=ei,i=ey,a=eh}return[4,q(t)];case 1:if("string"!=typeof(u=y.sent())&&void 0!==u)throw Error();if(u)return[2,u];return[4,e.get(el,{params:{name:i}})];case 2:if(s=y.sent().data,c=o,d=(null==s?void 0:s.length)&&s[0].id)return[3,4];return[4,e.post(el,{ownerId:r,name:i,registry:a,username:c.user,authToken:c.readToken})];case 3:d=y.sent().data.id,y.label=4;case 4:if("string"!=typeof(l=d))throw Error();return[4,C(l,t)];case 5:return y.sent(),[2,l]}})})()},H=function(e,r,t,n){var o=t.name,i=t.src,a=t.srcData,c=t.type,l=t.npm,y=t.cwd;return G(function(){var t,m,h,b;return U(this,function(v){switch(v.label){case 0:if(i===p||i===f)t={image:{ownerId:r,imagePath:i===p?eb:a.image,registryCredentialId:n}},m={type:ev},h={serviceDetails:{runtime:ek,plan:eE,region:eT,healthCheckPath:ex}};else if(i===d)if(t={repo:a.repo},c===s.meta.plugin.type.backend)m={type:ev},h={serviceDetails:{runtime:ew,buildCommand:(0,u.format)(eO,l,l),startCommand:(0,u.format)(ej,l),plan:eE,region:eT,healthCheckPath:ex}};else if(c===s.meta.plugin.type.frontend)m={type:eg},h={serviceDetails:{buildCommand:(0,u.format)(eO,l,l),publishPath:(0,u.format)(eP,y)}};else throw Error();else throw Error();return[4,e.post(ep,N(F({ownerId:r,name:o},t,m,h),{autoDeploy:"no"}))];case 1:if("string"!=typeof(b=v.sent().data.service.id))throw Error();return[2,b]}})})()},J=function(e,r,t){var i=t.type,a=t.cwd;return G(function(){var t,c,l,p,f,d,y,m,h,b,v,g,k;return U(this,function(w){switch(w.label){case 0:if(i!==s.meta.plugin.type.backend)return[3,9];return[4,(0,n.readFile)((0,o.join)(a,eS),"utf-8").catch(function(){return""})];case 1:t=w.sent().split(/\r?\n/),c=!0,l=!1,p=void 0,w.label=2;case 2:w.trys.push([2,7,8,9]),f=t[Symbol.iterator](),w.label=3;case 3:var O;if(c=(d=f.next()).done)return[3,6];if(!(y=d.value)||y.startsWith("#")||y.startsWith("PORT")||(h=(m=I(O=y.split("="))||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(O)||M(O)||_())[0],b=m.slice(1),v=h.trim(),g=b.join("=").trim(),!v||!g))return[3,5];return[4,e.put((0,u.format)(ef,r,v),{value:g})];case 4:w.sent(),w.label=5;case 5:return c=!0,[3,3];case 6:return[3,9];case 7:return k=w.sent(),l=!0,p=k,[3,9];case 8:try{c||null==f.return||f.return()}finally{if(l)throw p}return[7];case 9:return[2]}})})()},Q=function(e,r){var t=r.type,n=r.owner,o=r.service,i=r.token,a=r.cred;e[t][l]={owner:n,service:o,token:i,cred:a}},X="Render.com",Y=0,Z=[{type:s.meta.plugin.type.backend,skips:[{type:s.meta.plugin.type.frontend,option:s.meta.plugin.option.type.deployment},{type:s.meta.plugin.type.frontend,option:c},{type:s.meta.plugin.type.lib,option:s.meta.plugin.option.type.deployment},{type:s.meta.plugin.type.cli,option:s.meta.plugin.option.type.deployment}]},{type:s.meta.plugin.type.frontend,skips:[{type:s.meta.plugin.type.lib,option:s.meta.plugin.option.type.deployment},{type:s.meta.plugin.type.cli,option:s.meta.plugin.option.type.deployment}]}];Y<Z.length;Y++){var ee=Z[Y],er=ee.type,et=ee.skips;(0,s.regValue)({name:l,label:X,skips:et,keeps:[],requires:[{option:s.meta.plugin.option.git},{option:s.meta.plugin.option.cicd}],plugin:{name:"".concat(er,"_").concat(s.meta.plugin.option.type.deployment,"_").concat(l),label:X,pos:{mode:s.PosMode.after,refs:["".concat(er,"_").concat(c),s.meta.plugin.option.git]},run:z(er)}},s.meta.plugin.option.type.deployment,er)}var en="render.owner",eo="render.credential.docker-hub",ei="render.credential.github-cr",ea="render.token",eu="https://dashboard.render.com/u/settings#api-keys",es="https://api.render.com/v1",ec="/owners",el="/registrycredentials",ep="/services",ef="/services/%s/env-vars/%s",ed="bradhezh-create-prj-dkrhub-img",ey="bradhezh-create-prj-ghcr-img",em="DOCKER",eh="GITHUB",eb="docker.io/library/alpine:latest",ev="web_service",eg="static_site",ek="image",ew="node",eO="%s i && %s build",ej="%s start",eP="%s/dist",eE="free",eT="oregon",ex="/health-check",eS=".env",eq=N(F({},O),{noDkr:"Cannot work as expected because the docker plugin has not run successfully.",noGit:"Cannot work as expected because the plugin for the Git option has not run successfully.",token:"API key needed to create a Render service, as well as for CI/CD. Press [ENTER] to open your browser and create an API key...",createRender:"Creating the service on Render.com"})})();
2
+ //# sourceMappingURL=007-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/007-render.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/compat_get_default_export","webpack://@bradhezh/create-prj/webpack/runtime/define_property_getters","webpack://@bradhezh/create-prj/webpack/runtime/has_own_property","webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/message.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/plugins/007-render.ts"],"sourcesContent":["// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","export const message = {\n validate: \"Option required.\",\n type: { label: \"Project type\" },\n monorepo: {\n name: { label: \"Monorepo name\" },\n types: { label: \"Types in monorepo\" },\n },\n optional: {\n hint: \"Optional options: %s\",\n options: {\n label:\n \"Configure them one by one, or choose none of them (except required ones)?\",\n },\n defaults: {\n label:\n \"Accept defaults, or configure them one by one, or choose none of them (except required ones)?\",\n },\n },\n opCanceled: \"Operation cancelled.\",\n cwdNonEmpty: \"Current work directory must be empty.\",\n pmUnsupported: \"Only npm or pnpm supported for now.\",\n pnpmRequired: \"Only pnpm supported for monorepo for now.\",\n elemExist: \"Element exists already.\",\n refsRequired: 'When using \"after\", reference elements must be specified.',\n circularDep: \"Circular dependency.\",\n afterLast: \"Element cannot be after ones as the last.\",\n invSkipOrKeep: \"Invalid skip or keep.\",\n invElem: \"Invalid element.\",\n sysType: \"Type cannot be registered with a system name.\",\n typeNotExist: \"Type does not exist.\",\n typeRequired: \"Type must be specified for type options.\",\n sysConfKey: \"Option cannot be registered with a system name.\",\n optionNotExist: \"Option does not exist.\",\n optionConflict: \"Option conflict between compulsory and optional ones.\",\n valueNotExist: \"Value does not exist.\",\n invFormat: \"Invalid format of %s.\",\n userGot: \"Paste your username: \",\n userRequired: \"Username required.\",\n readTokenGot: \"Paste your read-only token: \",\n readTokenRequired: \"Read-only token required.\",\n tokenGot: \"Paste your read-write token: \",\n tokenRequired: \"Read-write token required.\",\n pluginStart: \"Configuring %s\",\n setPkg: \"Setting packages\",\n setWkspace: \"Setting workspace\",\n setShared: \"Setting shared\",\n pluginFinish: \"%s completed!\",\n} as const;\n","import { exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, readFile, writeFile, rm, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { get } from \"axios\";\nimport open from \"open\";\nimport Json from \"comment-json\";\nimport Yaml from \"yaml\";\nimport { createInterface } from \"node:readline/promises\";\nimport { group, text, password, cancel, spinner } from \"@clack/prompts\";\n\nimport { meta, NPM } from \"@/registry\";\nimport { message } from \"@/message\";\n\nconst exec = promisify(execAsync);\n\nconst command = {\n volta: \"volta -v\",\n node: \"node -v\",\n npm: `%s -v`,\n pnpm: \"pnpm -v\",\n setPkgName: '%s pkg set name=\"%s\"',\n setPkgVoltaNode: '%s pkg set \"volta.node\"=\"%s\"',\n setPkgVoltaNpm: '%s pkg set \"volta.%s\"=\"%s\"',\n setPkgPkgMgr: '%s pkg set packageManager=\"%s@%s\"',\n setPkgScript: '%s pkg set \"scripts.%s\"=\"%s\"',\n getPkgScript: '%s pkg get \"scripts.%s\"',\n rmPkgScript: '%s pkg delete \"scripts.%s\"',\n setPkgDeps: '%s pkg set \"dependencies.%s\"=\"%s\"',\n setPkgDevDeps: '%s pkg set \"devDependencies.%s\"=\"%s\"',\n setPkgBin: '%s pkg set \"bin.%s\"=\"%s\"',\n rmNodeLinker: \"pnpm config --location project delete node-linker\",\n tar: \"tar -xvf %s\",\n} as const;\n\nexport const setPkgName = async (name: string, npm: NPM, cwd?: string) => {\n await exec(format(command.setPkgName, npm, name), { cwd });\n};\n\nlet volta: boolean | undefined;\n\nexport const setPkgVers = async (npm: NPM, cwd?: string) => {\n void (\n volta !== undefined ||\n (volta = await exec(command.volta)\n .then(() => true)\n .catch(() => false))\n );\n if (volta) {\n const node = (await exec(command.node)).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNode,\n npm,\n !node.startsWith(\"v\") ? node : node.slice(1),\n ),\n { cwd },\n );\n const npmV = (await exec(format(command.npm, npm))).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNpm,\n npm,\n npm,\n !npmV.startsWith(\"v\") ? npmV : npmV.slice(1),\n ),\n { cwd },\n );\n }\n\n if (npm !== NPM.pnpm) {\n return;\n }\n const pnpm = (await exec(command.pnpm)).stdout.trim();\n await exec(\n format(\n command.setPkgPkgMgr,\n NPM.pnpm,\n NPM.pnpm,\n !pnpm.startsWith(\"v\") ? pnpm : pnpm.slice(1),\n ),\n { cwd },\n );\n};\n\nexport const setPkgScript = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n if (!script) {\n await exec(format(command.rmPkgScript, npm, name), { cwd });\n return;\n }\n await exec(format(command.setPkgScript, npm, name, script), { cwd });\n};\n\nexport const getPkgScript = async (name: string, npm: NPM, cwd?: string) => {\n const script = (\n await exec(format(command.getPkgScript, npm, name), { cwd })\n ).stdout.trim();\n return script === \"{}\" ? undefined : script;\n};\n\ntype Script = { name: string; script?: string };\nexport const defKey = \"def\" as const;\nexport type Scripts<T extends string> = Partial<\n Record<T | typeof defKey, readonly Script[]>\n>;\n\nexport const setPkgScripts = async <K extends string, T extends Scripts<K>>(\n scripts: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const scripts0 = scripts[key ?? defKey] ?? scripts.def;\n if (!scripts0) {\n return;\n }\n for (const { name, script } of scripts0) {\n await setPkgScript(name, script, npm, cwd);\n }\n};\n\nexport const setPkgDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDeps, npm, name, version), { cwd });\n};\n\nexport const setPkgDevDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDevDeps, npm, name, version), { cwd });\n};\n\ntype PkgDep = { name: string; version: string; dev?: boolean };\nexport type PkgDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly PkgDep[]>\n>;\n\nexport const setPkgDeps = async <K extends string, T extends PkgDeps<K>>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n for (const { name, version } of deps0.filter((e) => !e.dev)) {\n await setPkgDep(name, version, npm, cwd);\n }\n for (const { name, version } of deps0.filter((e) => e.dev)) {\n await setPkgDevDep(name, version, npm, cwd);\n }\n};\n\nexport const setPkgBin = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(\n format(\n command.setPkgBin,\n npm,\n !name.includes(\"/\") ? name : name.split(\"/\").pop(),\n script ?? \"dist/index.js\",\n ),\n { cwd },\n );\n};\n\nconst workspace = \"pnpm-workspace.yaml\" as const;\n\nexport const createWkspace = async (pkgs: readonly string[]) => {\n const packages = pkgs.length <= 1 ? pkgs : [...pkgs, meta.system.type.shared];\n for (const pkg of packages) {\n await mkdir(pkg);\n }\n await writeFile(workspace, Yaml.stringify({ packages }));\n};\n\nexport const addPkgInWkspace = async (pkg: string) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.packages || (doc0.packages = []));\n if (!Array.isArray(doc0.packages)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.packages.push(pkg);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const addOnlyBuiltDeps = async (deps: readonly string[]) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.onlyBuiltDependencies || (doc0.onlyBuiltDependencies = []));\n if (!Array.isArray(doc0.onlyBuiltDependencies)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.onlyBuiltDependencies.push(...deps);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const rmPnpmNodeLinker = async () => {\n await exec(command.rmNodeLinker);\n};\n\nexport type BuiltDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly string[]>\n>;\n\nexport const setWkspaceBuiltDeps = async <\n K extends string,\n T extends BuiltDeps<K>,\n>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key?: K,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n await addOnlyBuiltDeps(deps0);\n};\n\nconst tsconfig = \"tsconfig.json\" as const;\n\nexport const setTsOptions = async (options: object, cwd?: string) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions = { ...doc.compilerOptions, ...options };\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype PathAlias = Record<string, readonly string[]>;\n\nexport const setPathAlias = async (\n base: string,\n pathAlias: PathAlias,\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.baseUrl = base;\n doc.compilerOptions.paths = pathAlias as Json.CommentObject;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nexport const addPathAlias = async (\n name: string,\n paths: readonly string[],\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions.paths ||\n (doc.compilerOptions.paths = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions.paths !== \"object\" ||\n doc.compilerOptions.paths === null ||\n Array.isArray(doc.compilerOptions.paths)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.paths[name] = paths as Json.CommentArray<string>;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nconst src = \"src\" as const;\nconst pathAliasWithShared = { \"@/*\": [\"\"], \"@shared/*\": [\"shared/src/*\"] };\n\nexport const setPathAliasWithShared = async (cwd: string) => {\n await access(join(cwd, src))\n .then(() => (pathAliasWithShared[\"@/*\"][0] = format(`%s/${src}/*`, cwd)))\n .catch(() => (pathAliasWithShared[\"@/*\"][0] = format(\"%s/*\", cwd)));\n await setPathAlias(\"..\", pathAliasWithShared, cwd);\n};\n\nconst cfgDir = \".bradhezh-create-prj\" as const;\nconst config = \"config.json\" as const;\n\nexport const getCfg = async (path?: string) => {\n const doc = Json.parse(\n await readFile(join(homedir(), cfgDir, config), \"utf-8\").catch(() => \"{}\"),\n );\n if (!path) {\n return doc;\n }\n let value = doc;\n for (const key of path.split(\".\")) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\nexport const setCfg = async (value: Json.CommentJSONValue, path?: string) => {\n await mkdir(join(homedir(), cfgDir), { recursive: true });\n const file = join(homedir(), cfgDir, config);\n let doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (!path) {\n doc = value;\n } else {\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n doc = {} as Json.CommentObject;\n }\n let obj = doc;\n const keys = path.split(\".\");\n const last = keys.pop()!;\n for (const key of keys) {\n if (\n typeof obj[key] !== \"object\" ||\n obj[key] === null ||\n Array.isArray(obj[key])\n ) {\n obj[key] = {} as Json.CommentObject;\n }\n obj = obj[key];\n }\n obj[last] = value;\n }\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype Tmplt = { name: string; path?: string };\nexport type Template<T extends string> = Partial<\n Record<T | typeof defKey, Tmplt>\n>;\n\nexport const installTmplt = async <K extends string, T extends Template<K>>(\n base: string,\n template: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key?: K,\n cwd?: string,\n tar?: boolean,\n) => {\n const tmplt = template[key ?? defKey] ?? template.def;\n if (!tmplt) {\n return;\n }\n const file = join(cwd ?? \"\", tmplt.name);\n const res = await get<unknown>(`${base}${tmplt.path ?? \"\"}`, {\n responseType: tar ? \"arraybuffer\" : \"text\",\n });\n const data = !(res.data instanceof ArrayBuffer)\n ? res.data\n : new Uint8Array(res.data);\n if (typeof data !== \"string\" && !(data instanceof Uint8Array)) {\n throw new Error();\n }\n await writeFile(file, data);\n if (!tar) {\n return;\n }\n await exec(format(command.tar, tmplt.name), { cwd });\n await rm(file, { force: true });\n};\n\nexport enum AuthKey {\n user = \"user\",\n readToken = \"readToken\",\n token = \"token\",\n}\ntype Auth = Partial<Record<AuthKey, string>>;\ntype AuthCfgPath = Auth;\ntype Spinner = ReturnType<typeof spinner>;\n\nexport const auth = async (\n path: AuthCfgPath,\n ini: Auth,\n hint: string,\n tokenUrl: string,\n s?: Spinner,\n) => {\n const value = await authGot(path, ini);\n if (\n (!path.user || value.user) &&\n (!path.readToken || value.readToken) &&\n (!path.token || value.token)\n ) {\n return value;\n }\n s?.stop();\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n await rl.question(hint);\n rl.close();\n if ((path.readToken && !value.readToken) || (path.token && !value.token)) {\n await open(tokenUrl);\n }\n const answer = await authPrompt(\n !!(path.user && !value.user),\n !!(path.readToken && !value.readToken),\n !!(path.token && !value.token),\n );\n s?.start();\n await setAuth(value, path, answer);\n return value;\n};\n\nconst authGot = async (path: AuthCfgPath, ini: Auth) => {\n if (!path.user && !path.readToken && !path.token) {\n return {};\n }\n const user = path.user && (ini.user || (await getCfg(path.user)));\n const readToken =\n path.readToken && (ini.readToken || (await getCfg(path.readToken)));\n const token = path.token && (ini.token || (await getCfg(path.token)));\n if (\n (typeof user !== \"string\" && typeof user !== \"undefined\") ||\n (typeof readToken !== \"string\" && typeof readToken !== \"undefined\") ||\n (typeof token !== \"string\" && typeof token !== \"undefined\")\n ) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst authPrompt = (\n forUser: boolean,\n forReadToken: boolean,\n forToken: boolean,\n) => {\n return group(\n {\n ...(forUser && {\n user: () =>\n text({\n message: message.userGot,\n validate: (value?: string) =>\n value ? undefined : message.userRequired,\n }),\n }),\n ...(forReadToken && {\n readToken: () =>\n password({\n message: message.readTokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.readTokenRequired,\n }),\n }),\n ...(forToken && {\n token: () =>\n password({\n message: message.tokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.tokenRequired,\n }),\n }),\n },\n { onCancel },\n );\n};\n\nconst setAuth = async (auth: Auth, path: AuthCfgPath, answer: Auth) => {\n if (path.user && !auth.user) {\n if (!answer.user) {\n throw new Error();\n }\n auth.user = answer.user;\n await setCfg(auth.user, path.user);\n }\n if (path.readToken && !auth.readToken) {\n if (!answer.readToken) {\n throw new Error();\n }\n auth.readToken = answer.readToken;\n await setCfg(auth.readToken, path.readToken);\n }\n if (path.token && !auth.token) {\n if (!answer.token) {\n throw new Error();\n }\n auth.token = answer.token;\n await setCfg(auth.token, path.token);\n }\n};\n\nexport const onCancel = () => {\n cancel(message.opCanceled);\n process.exit(0);\n};\n","import { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { create, AxiosInstance } from \"axios\";\nimport { log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport {\n valid,\n option,\n value,\n RenderValue,\n DkrValue,\n GitSvcValue,\n} from \"./const\";\nimport {\n regValue,\n meta,\n PosMode,\n NPM,\n Conf,\n Plugin,\n PrimeType,\n} from \"@/registry\";\nimport { auth, getCfg, setCfg } from \"@/command\";\nimport { message as msg } from \"@/message\";\n\nconst run = (type: PrimeType) => {\n return async function (this: Plugin, conf: Conf) {\n const s = spinner();\n s.start();\n log.info(format(message.pluginStart, `${this.label} for the ${type}`));\n\n const conf0 = parseConf(conf, type);\n if (!conf0) {\n return;\n }\n\n const auth0 = await authRender(s);\n log.info(message.createRender);\n const render = await createRender({ ...conf0, ...auth0 });\n setValue(conf, { ...conf0, ...auth0, ...render });\n\n log.info(format(message.pluginFinish, `${this.label} for the ${type}`));\n s.stop();\n };\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[conf.type as PrimeType]?.name;\n if (!name) {\n throw new Error();\n }\n const deploy = parseDeploy(conf, type);\n if (!deploy) {\n return;\n }\n return { type, npm, name, ...deploy };\n};\n\nconst parseDeploy = (conf: Conf, type: PrimeType) => {\n if (\n (type !== meta.plugin.type.backend && type !== meta.plugin.type.frontend) ||\n (conf.backend?.deployment === value.deployment.render &&\n conf.frontend?.deployment === value.deployment.render)\n ) {\n throw new Error();\n }\n const src = conf[type]![option.deploySrc];\n let srcData;\n if (src === value.deploySrc.dkrhub || src === value.deploySrc.ghcr) {\n srcData = conf[type]![src] as DkrValue;\n if (!srcData) {\n log.warn(message.noDkr);\n return;\n }\n if (src === value.deploySrc.ghcr && !srcData.image) {\n throw new Error();\n }\n } else if (src === value.deploySrc.repo) {\n if (!valid(conf.git)) {\n throw new Error();\n }\n srcData = conf[conf.git!] as GitSvcValue;\n if (!srcData) {\n log.warn(message.noGit);\n return;\n }\n if (!srcData.repo) {\n throw new Error();\n }\n } else {\n throw new Error();\n }\n const cwd = conf.type !== meta.plugin.type.monorepo ? \".\" : conf[type]?.name;\n if (!cwd) {\n throw new Error();\n }\n return { src, srcData, cwd };\n};\n\nconst authRender = async (s: Spinner) => {\n const { token } = await auth(\n { token: tokenPath },\n {},\n message.token,\n tokenUrl,\n s,\n );\n if (!token) {\n throw new Error();\n }\n return { token };\n};\n\ntype RenderData = {\n name: string;\n src: string;\n srcData: SrcData;\n type: PrimeType;\n token: string;\n npm: NPM;\n cwd: string;\n};\n\nconst createRender = async (data: RenderData) => {\n const { token } = data;\n const api = create({\n baseURL,\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n });\n const owner = await getOwner(api);\n const cred = await getCred(api, owner, data);\n const service = await createSvc(api, owner, data, cred);\n await setEnvVars(api, service, data);\n return { owner, service, cred };\n};\n\nconst getOwner = async (api: AxiosInstance) => {\n const owner = await getCfg(ownerPath);\n if (typeof owner !== \"string\" && typeof owner !== \"undefined\") {\n throw new Error();\n }\n if (owner) {\n return owner;\n }\n const {\n data: [\n {\n owner: { id },\n },\n ],\n } = await api.get<{ owner: { id: string } }[]>(ownersEp);\n if (typeof id !== \"string\") {\n throw new Error();\n }\n await setCfg(id, ownerPath);\n return id;\n};\n\nconst getCred = async (\n api: AxiosInstance,\n ownerId: string,\n { src, srcData }: RenderData,\n) => {\n let path, name, registry;\n if (src === value.deploySrc.dkrhub) {\n path = dhCredPath;\n name = dhCredName;\n registry = dhReg;\n } else if (src === value.deploySrc.ghcr) {\n path = ghcrCredPath;\n name = ghcrCredName;\n registry = ghcrReg;\n } else {\n return;\n }\n const cred = await getCfg(path);\n if (typeof cred !== \"string\" && typeof cred !== \"undefined\") {\n throw new Error();\n }\n if (cred) {\n return cred;\n }\n const { data } = await api.get<{ id: string }[]>(credsEp, {\n params: { name },\n });\n const docker = srcData as Docker;\n const id =\n (data?.length && data[0].id) ||\n (\n await api.post<{ id: string }>(credsEp, {\n ownerId,\n name,\n registry,\n username: docker.user,\n authToken: docker.readToken,\n })\n ).data.id;\n if (typeof id !== \"string\") {\n throw new Error();\n }\n await setCfg(id, path);\n return id;\n};\n\nconst createSvc = async (\n api: AxiosInstance,\n ownerId: string,\n { name, src, srcData, type, npm, cwd }: RenderData,\n registryCredentialId: string | undefined,\n) => {\n let src0, type0, detail;\n if (src === value.deploySrc.dkrhub || src === value.deploySrc.ghcr) {\n src0 = {\n image: {\n ownerId,\n imagePath:\n src === value.deploySrc.dkrhub ? dhImg : (srcData as Docker).image!,\n registryCredentialId,\n },\n };\n type0 = { type: webSvc };\n detail = {\n serviceDetails: {\n runtime: imgRuntime,\n plan: free,\n region: oregon,\n healthCheckPath,\n },\n };\n } else if (src === value.deploySrc.repo) {\n src0 = { repo: (srcData as GitSvc).repo! };\n if (type === meta.plugin.type.backend) {\n type0 = { type: webSvc };\n detail = {\n serviceDetails: {\n runtime: nodeRuntime,\n buildCommand: format(buildCommand, npm, npm),\n startCommand: format(startCommand, npm),\n plan: free,\n region: oregon,\n healthCheckPath,\n },\n };\n } else if (type === meta.plugin.type.frontend) {\n type0 = { type: staticSite };\n detail = {\n serviceDetails: {\n buildCommand: format(buildCommand, npm, npm),\n publishPath: format(publishPath, cwd),\n },\n };\n } else {\n throw new Error();\n }\n } else {\n throw new Error();\n }\n const {\n data: {\n service: { id: service },\n },\n } = await api.post<{ service: { id: string } }>(svcsEp, {\n ownerId,\n name,\n ...src0,\n ...type0,\n ...detail,\n autoDeploy: \"no\",\n });\n if (typeof service !== \"string\") {\n throw new Error();\n }\n return service;\n};\n\nconst setEnvVars = async (\n api: AxiosInstance,\n service: string,\n { type, cwd }: RenderData,\n) => {\n if (type === meta.plugin.type.backend) {\n const lines = (\n await readFile(join(cwd, env), \"utf-8\").catch(() => \"\")\n ).split(/\\r?\\n/);\n for (const line of lines) {\n if (!line || line.startsWith(\"#\") || line.startsWith(\"PORT\")) {\n continue;\n }\n const [name, ...parts] = line.split(\"=\");\n const key = name.trim();\n const value = parts.join(\"=\").trim();\n if (!key || !value) {\n continue;\n }\n await api.put(format(envVarEp, service, key), { value });\n }\n }\n};\n\ntype Value = { type: PrimeType } & NonNullable<RenderValue>;\n\nconst setValue = (conf: Conf, { type, owner, service, token, cred }: Value) => {\n (conf[type]![value.deployment.render] as RenderValue) = {\n owner,\n service,\n token,\n cred,\n };\n};\n\nconst label = \"Render.com\" as const;\n\nfor (const { type, skips } of [\n {\n type: meta.plugin.type.backend,\n skips: [\n {\n type: meta.plugin.type.frontend,\n option: meta.plugin.option.type.deployment,\n },\n { type: meta.plugin.type.frontend, option: option.deploySrc },\n {\n type: meta.plugin.type.lib,\n option: meta.plugin.option.type.deployment,\n },\n {\n type: meta.plugin.type.cli,\n option: meta.plugin.option.type.deployment,\n },\n ],\n },\n {\n type: meta.plugin.type.frontend,\n skips: [\n {\n type: meta.plugin.type.lib,\n option: meta.plugin.option.type.deployment,\n },\n {\n type: meta.plugin.type.cli,\n option: meta.plugin.option.type.deployment,\n },\n ],\n },\n]) {\n regValue(\n {\n name: value.deployment.render,\n label,\n skips,\n keeps: [],\n requires: [\n { option: meta.plugin.option.git },\n { option: meta.plugin.option.cicd },\n ],\n plugin: {\n name: `${type}_${meta.plugin.option.type.deployment}_${value.deployment.render}`,\n label,\n pos: {\n mode: PosMode.after,\n refs: [`${type}_${option.deploySrc}`, meta.plugin.option.git],\n },\n run: run(type),\n },\n },\n meta.plugin.option.type.deployment,\n type,\n );\n}\n\ntype Docker = NonNullable<DkrValue>;\ntype GitSvc = NonNullable<GitSvcValue>;\ntype SrcData = Docker | GitSvc;\ntype Spinner = ReturnType<typeof spinner>;\n\nconst ownerPath = \"render.owner\" as const;\nconst dhCredPath = \"render.credential.docker-hub\" as const;\nconst ghcrCredPath = \"render.credential.github-cr\" as const;\nconst tokenPath = \"render.token\" as const;\nconst tokenUrl = \"https://dashboard.render.com/u/settings#api-keys\" as const;\nconst baseURL = \"https://api.render.com/v1\" as const;\nconst ownersEp = \"/owners\" as const;\nconst credsEp = \"/registrycredentials\" as const;\nconst svcsEp = \"/services\" as const;\nconst envVarEp = \"/services/%s/env-vars/%s\" as const;\nconst dhCredName = \"bradhezh-create-prj-dkrhub-img\" as const;\nconst ghcrCredName = \"bradhezh-create-prj-ghcr-img\" as const;\nconst dhReg = \"DOCKER\" as const;\nconst ghcrReg = \"GITHUB\" as const;\nconst dhImg = \"docker.io/library/alpine:latest\" as const;\nconst webSvc = \"web_service\" as const;\nconst staticSite = \"static_site\" as const;\nconst imgRuntime = \"image\" as const;\nconst nodeRuntime = \"node\" as const;\nconst buildCommand = \"%s i && %s build\" as const;\nconst startCommand = \"%s start\" as const;\nconst publishPath = \"%s/dist\" as const;\nconst free = \"free\" as const;\nconst oregon = \"oregon\" as const;\nconst healthCheckPath = \"/health-check\" as const;\nconst env = \".env\" as const;\n\nconst message = {\n ...msg,\n noDkr:\n \"Cannot work as expected because the docker plugin has not run successfully.\",\n noGit:\n \"Cannot work as expected because the plugin for the Git option has not run successfully.\",\n token:\n \"API key needed to create a Render service, as well as for CI/CD. Press [ENTER] to open your browser and create an API key...\",\n createRender: \"Creating the service on Render.com\",\n} as const;\n"],"names":["e","Object","valid","conf","meta","Array","_type_of","message","promisify","execAsync","cfgDir","config","getCfg","path","doc","value","_iteratorError","key","Json","readFile","join","homedir","setCfg","file","obj","keys","last","text","mkdir","writeFile","onCancel","cancel","process","run","type","s","conf0","auth0","render","spinner","log","format","parseConf","authRender","createRender","setValue","_conf_conf_type","npm","NPM","Error","name","deploy","parseDeploy","_conf_backend","_conf_frontend","_conf_type","srcData","src","cwd","token","ini","hint","tokenPath","rl","answer","forUser","forReadToken","forToken","auth","user","readToken","createInterface","open","tokenUrl","group","undefined","password","data","api","owner","cred","service","getOwner","create","baseURL","getCred","createSvc","setEnvVars","id","ownerPath","_ref","ownersEp","ownerId","registry","docker","dhCredPath","dhCredName","dhReg","ghcrCredPath","ghcrCredName","ghcrReg","credsEp","registryCredentialId","src0","type0","detail","dhImg","webSvc","imgRuntime","free","oregon","healthCheckPath","nodeRuntime","buildCommand","startCommand","staticSite","publishPath","svcsEp","lines","line","_line_split","parts","_$value","env","envVarEp","label","_iter","skips","regValue","PosMode","option","msg"],"mappings":"sJACA,EAAoB,CAAC,CAAG,AAAC,IACxB,IAAI,EAAS,GAAU,EAAO,UAAU,CACvC,IAAO,EAAO,OAAU,CACxB,IAAO,EAER,OADA,EAAoB,CAAC,CAAC,EAAQ,CAAE,EAAG,CAAO,GACnC,CACR,ECPA,EAAoB,CAAC,CAAG,CAACA,EAAS,KACjC,IAAI,IAAI,KAAO,EACL,EAAoB,CAAC,CAAC,EAAY,IAAQ,CAAC,EAAoB,CAAC,CAACA,EAAS,IACzEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,IAAK,CAAU,CAAC,EAAI,AAAC,EAGzF,ECNA,EAAoB,CAAC,CAAG,CAAC,EAAK,IAAUC,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCAlF,EAAoB,EAAE,CAAG,IAAO,QCAhC,EAAoB,IAAI,CAAG,uB,2JCEpB,MAA4B,cAYvB,WAKW,WAAgB,SAAc,OA+BxCC,EAAQ,SAACC,CAAI,EACxB,MAAO,CAAC,CACNA,CAAAA,GACE,CAAgB,UAAhB,OAAOA,GAAqBA,IAASC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,IAAsB,EAC1DC,MAAM,OAAO,CAACF,IAASA,EAAK,MAAM,EACnCG,AAAAA,CAAgB,SAATH,EAAAA,Y,AAAAA,G,mBAAAA,E,qCAAAA,CAAI,GAAK,QAAO,EAE7B,E,2LCzDO,IAAMI,EAAU,CACrB,SAAU,mBACV,KAAM,CAAE,MAAO,cAAe,EAC9B,SAAU,CACR,KAAM,CAAE,MAAO,eAAgB,EAC/B,MAAO,CAAE,MAAO,mBAAoB,CACtC,EACA,SAAU,CACR,KAAM,uBACN,QAAS,CACP,MACE,2EACJ,EACA,SAAU,CACR,MACE,+FACJ,CACF,EACA,WAAY,uBACZ,YAAa,wCACb,cAAe,sCACf,aAAc,4CACd,UAAW,0BACX,aAAc,4DACd,YAAa,uBACb,UAAW,4CACX,cAAe,wBACf,QAAS,mBACT,QAAS,gDACT,aAAc,uBACd,aAAc,2CACd,WAAY,kDACZ,eAAgB,yBAChB,eAAgB,wDAChB,cAAe,wBACf,UAAW,wBACX,QAAS,wBACT,aAAc,qBACd,aAAc,+BACd,kBAAmB,4BACnB,SAAU,gCACV,cAAe,6BACf,YAAa,iBACb,OAAQ,mBACR,WAAY,oBACZ,UAAW,iBACX,aAAc,eAChB,E,ikDChCaC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAUC,EAAAA,IAASA,EAmVhC,IAAMC,EAAS,uBACTC,EAAS,cAEFC,EAAS,SAAOC,CAAI,E,wBACzBC,EAAAA,EAMFC,EACCC,EAAAA,EAAAA,EAAAA,EAAAA,EAAMC,E,iDANT,O,EADUC,AAAAA,IAAAA,KAAU,CACpB,C,EAAMC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASC,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAKC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,IAAWX,EAAQC,GAAS,SAAS,KAAK,CAAC,W,MAAM,I,WAEvE,GAHMG,EAAMI,EAAAA,KAAAA,CAAAA,IAAIA,CACd,S,EAEE,CAACL,EACH,MAAO,C,EAAAC,E,CAELC,EAAQD,EACPE,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,IAAL,IAAKA,EAAaH,EAAK,KAAK,CAAC,IAAI,CAAJ,oBAAxBG,CAAAA,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,AAAAA,EAAAA,EAAAA,GAA8B,CACjC,GADSC,EAAND,EAAAA,KAAAA,CACCV,AAAAA,CAAOS,SAAAA,EAAAA,YAAPT,EAAOS,EAAK,IAAK,UAAYA,AAAU,OAAVA,GAAkBV,MAAM,OAAO,CAACU,GAC/D,O,GAEFA,EAAQA,CAAK,CAACE,EAAI,AACpB,C,UALKD,EAAAA,GAAAA,EAAAA,C,aAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,EAML,MAAO,C,EAAAD,E,GACT,I,EAEaO,EAAS,SAAOP,CAAK,CAAyBF,CAAI,E,wBAEvDU,EACFT,EAAAA,EAOEU,EACEC,EACAC,EACDV,EAAAA,EAAAA,EAAAA,EAAAA,EAAMC,EAYPU,E,iDAxBN,O,EAAMC,AAAAA,GAAAA,EAAAA,KAAAA,AAAAA,EAAMR,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAKC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,IAAWX,GAAS,CAAE,UAAW,EAAK,G,QAElC,OAFrB,SACMa,EAAOH,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAKC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,IAAWX,EAAQC,G,EAC3BO,AAAAA,IAAAA,KAAU,CAAC,C,EAAMC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASI,EAAM,QAAQ,KAAK,CAAC,W,MAAM,I,WAC9D,GADIT,EAAMI,EAAAA,KAAAA,CAAAA,IAAIA,CAAO,S,EAChBL,EAEE,CACDP,CAAAA,CAAOQ,SAAAA,EAAAA,YAAPR,EAAOQ,EAAG,IAAK,UAAYA,AAAQ,OAARA,GAAgBT,MAAM,OAAO,CAACS,EAAG,GAC9DA,CAAAA,EAAM,CAAC,GAELU,EAAMV,EAEJY,EAAOD,AADPA,CAAAA,EAAOZ,EAAK,KAAK,CAAC,IAAG,EACT,GAAG,GAChBG,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,IAAL,IAAKA,EAAaS,CAAI,CAAJA,OAAAA,QAAAA,CAAAA,GAAAA,CAAbT,CAAAA,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,AAAAA,EAAAA,EAAAA,GAAMC,EAAND,EAAAA,KAAAA,CAEDV,CAAAA,AAAoB,WAApBA,EAAOkB,CAAG,CAACP,EAAI,GACfO,AAAa,OAAbA,CAAG,CAACP,EAAI,EACRZ,MAAM,OAAO,CAACmB,CAAG,CAACP,EAAI,IAEtBO,CAAAA,CAAG,CAACP,EAAI,CAAG,CAAC,GAEdO,EAAMA,CAAG,CAACP,EAAI,A,UARXD,EAAAA,GAAAA,EAAAA,C,aAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,EAULQ,CAAG,CAACE,EAAK,CAAGX,CACd,MAnBED,EAAMC,EAuBR,OAHMY,EACJT,IAAAA,SAAc,CAACJ,EAAK,KAAM,GAAG,OAAO,CAAC,uBAAwB,UAC7D,KACF,C,EAAMe,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAUN,EAAMI,G,eAAtB,S,MACF,I,EA+JaG,EAAW,WACtBC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOxB,EAAAA,UAAkB,EACzByB,QAAQ,IAAI,CAAC,EACf,E,i2FCpPA,QAvSMC,EAAM,SAACC,CAAI,EACf,OAAO,SAA8B/B,CAAU,E,wBACvCgC,EAIAC,EAKAC,EAEAC,E,iDANN,GAJAH,AADMA,CAAAA,EAAII,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,GAAQ,EAChB,KAAK,GACPC,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOlC,GAAQ,WAAW,CAAG,GAAwB2B,MAAAA,CAAtB,IAAI,CAAC,KAAK,CAAC,aAAgB,OAALA,KAG1D,CADEE,CAAAA,EAAQM,EAAUvC,EAAM+B,EAAI,EAEhC,O,GAGY,O,EAAMS,EAAWR,G,QAEhB,OAFTE,EAAQ,SACdG,EAAAA,GAAAA,CAAAA,IAAQ,CAACjC,GAAQ,YAAY,EACd,C,EAAMqC,EAAa,KAAKR,EAAUC,I,eAA3CC,EAAS,SACfO,EAAS1C,EAAM,KAAKiC,EAAUC,EAAUC,IAExCE,EAAAA,GAAAA,CAAAA,IAAQ,CAACC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOlC,GAAQ,YAAY,CAAG,GAAwB2B,MAAAA,CAAtB,IAAI,CAAC,KAAK,CAAC,aAAgB,OAALA,KAC/DC,EAAE,IAAI,G,MACR,a,CACF,EAEMO,EAAY,SAACvC,CAAI,CAAQ+B,CAAI,EACjC,IAIaY,EAJPC,EAAM5C,EAAK,GAAG,CACpB,GAAI4C,IAAQC,EAAAA,GAAAA,CAAAA,GAAO,EAAID,IAAQC,EAAAA,GAAAA,CAAAA,IAAQ,CACrC,MAAM,AAAIC,QAEZ,IAAMC,EAAO,MAAAJ,CAAAA,EAAAA,CAAI,CAAC3C,EAAK,IAAI,CAAc,AAAd,EAAd2C,KAAAA,EAAAA,EAA8B,IAAI,CAC/C,GAAI,CAACI,EACH,MAAM,AAAID,QAEZ,IAAME,EAASC,EAAYjD,EAAM+B,GACjC,GAAKiB,EAGL,OAAO,GAAEjB,KAAAA,EAAMa,IAAAA,EAAKG,KAAAA,C,EAASC,EAC/B,EAEMC,EAAc,SAACjD,CAAI,CAAQ+B,CAAI,EACnC,GACGA,IAAS9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAwB,EAAI8B,IAAS9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,EACvEiD,AAAAA,OAAAA,CAAAA,EAAAA,EAAK,OAAO,AAAD,EAAXA,KAAAA,EAAAA,EAAc,UAAU,AAAD,OACtBC,AAAAA,OAAAA,CAAAA,EAAAA,EAAK,QAAQ,AAAD,EAAZA,KAAAA,EAAAA,EAAe,UAAU,AAAD,MAE1B,MAAM,AAAIL,QAEZ,IALGI,EACCC,EA8BwDC,EAzBxDC,EADEC,EAAMtD,CAAI,CAAC+B,EAAM,GAAkB,CAEzC,GAAIuB,OAAkCA,MAA8B,CAElE,GAAI,CADJD,CAAAA,EAAUrD,CAAI,CAAC+B,EAAM,CAACuB,EAAI,AAAD,EACX,YACZjB,EAAAA,GAAAA,CAAAA,IAAQ,CAACjC,GAAQ,KAAK,EAGxB,GAAIkD,OAAgC,CAACD,EAAQ,KAAK,CAChD,MAAM,AAAIP,OAEd,MAAO,GAAIQ,MAA8B,CACvC,GAAI,CAACvD,EAAMC,EAAK,GAAG,EACjB,MAAM,AAAI8C,QAGZ,GAAI,CADJO,CAAAA,EAAUrD,CAAI,CAACA,EAAK,GAAG,CAAE,AAAF,EACT,YACZqC,EAAAA,GAAAA,CAAAA,IAAQ,CAACjC,GAAQ,KAAK,EAGxB,GAAI,CAACiD,EAAQ,IAAI,CACf,MAAM,AAAIP,OAEd,MACE,MAAM,AAAIA,QAEZ,IAAMS,EAAMvD,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAAG,IAAM,MAAAmD,CAAAA,EAAAA,CAAI,CAACrB,EAAK,AAAD,EAATqB,KAAAA,EAAAA,EAAY,IAAI,CAC5E,GAAI,CAACG,EACH,MAAM,AAAIT,QAEZ,MAAO,CAAEQ,IAAAA,EAAKD,QAAAA,EAASE,IAAAA,CAAI,CAC7B,EAEMf,EAAa,SAAOR,CAAC,E,wBACjBwB,E,qDD0VR9C,EACA+C,EACAC,EC5VkB,O,GD0VlBhD,ECzVE,CAAE,MAAOiD,EAAU,ED0VrBF,ECzVE,CAAC,ED0VHC,ECzVEtD,GAAQ,KAAK,C,iBD6VTQ,EASAgD,EAMAC,E,8BAUenD,EAAmB+C,EAmBxCK,EACAC,EACAC,EAmCqBC,EAAYvD,EAAmBmD,E,uBAjFtC,O,GAyBOnD,EAzBOA,EAyBY+C,EAzBNA,E,iBA6B5BS,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EAEAX,EAAAA,EAAAA,E,iDANN,GAAI,CAAC9C,EAAK,IAAI,EAAI,CAACA,EAAK,SAAS,EAAI,CAACA,EAAK,KAAK,CAC9C,MAAO,C,EAAA,CAAC,E,QAEGA,EAAK,IAAI,AAAD,EAARA,MAAAA,C,UAAc+C,EAAI,IAAI,CAARA,MAAAA,C,KAAa,O,EAAMhD,EAAOC,EAAK,IAAI,E,UAAtB,S,yCAAlCwD,EAAO,E,IAEXxD,EAAK,SAAS,AAAD,EAAbA,MAAAA,C,UAAmB+C,EAAI,SAAS,CAAbA,MAAAA,C,KAAkB,O,EAAMhD,EAAOC,EAAK,SAAS,E,UAA3B,S,yCADjCyD,EAAAA,E,IAEQzD,EAAK,KAAK,AAAD,EAATA,MAAAA,C,UAAe+C,EAAI,KAAK,CAATA,MAAAA,C,KAAc,O,EAAMhD,EAAOC,EAAK,KAAK,E,UAAvB,S,sCAC3C,GADM8C,EAAQ,EAEX,AAAgB,UAAhB,OAAOU,GAAqB,AAAgB,SAATA,GACnC,AAAqB,UAArB,OAAOC,GAA0B,AAAqB,SAAdA,GACxC,AAAiB,UAAjB,OAAOX,GAAsB,AAAiB,SAAVA,EAErC,MAAM,AAAIV,QAEZ,MAAO,C,EAAA,CAAEoB,KAAAA,EAAMC,UAAAA,EAAWX,MAAAA,CAAM,E,GAClC,M,QAxCE,GADM5C,EAAQ,SAEX,EAACF,EAAK,IAAI,EAAIE,EAAM,IAAG,GACvB,EAACF,EAAK,SAAS,EAAIE,EAAM,SAAQ,GACjC,EAACF,EAAK,KAAK,EAAIE,EAAM,KAAI,EAE1B,MAAO,C,EAAAA,E,CAIT,OAFAoB,MCnWEA,GDmWFA,ACnWEA,EDmWC,IAAI,GAEP,C,EAAM4B,AADAA,CAAAA,EAAKQ,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,EAAgB,CAAE,MAAOvC,QAAQ,KAAK,CAAE,OAAQA,QAAQ,MAAM,AAAC,EAAC,EAClE,QAAQ,CAAC6B,G,WAAlB,SACAE,EAAG,KAAK,G,CACHlD,CAAAA,EAAK,SAAS,EAAI,CAACE,EAAM,SAAS,EAAMF,EAAK,KAAK,EAAI,CAACE,EAAM,KAAK,AAAD,EAAlE,O,KACF,O,EAAMyD,ICzWNC,I,QDyWA,S,iBAEa,O,GA6BfR,EA5BE,CAAC,CAAEpD,CAAAA,EAAK,IAAI,EAAI,CAACE,EAAM,IAAG,EA6B5BmD,EA5BE,CAAC,CAAErD,CAAAA,EAAK,SAAS,EAAI,CAACE,EAAM,SAAQ,EA6BtCoD,EA5BE,CAAC,CAAEtD,CAAAA,EAAK,KAAK,EAAI,CAACE,EAAM,KAAI,EA8BvB2D,AAAAA,GAAAA,EAAAA,KAAAA,AAAAA,EACL,A,iaAAA,GACMT,GAAW,CACb,KAAM,W,MACJtC,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAK,CACH,QAASpB,EAAAA,OAAe,CACxB,SAAU,SAACQ,CAAK,E,OACdA,EAAQ4D,OAAYpE,EAAAA,YAAoB,A,CAC5C,E,CACJ,EACI2D,GAAgB,CAClB,UAAW,W,MACTU,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CACP,QAASrE,EAAAA,YAAoB,CAC7B,KAAM,IACN,SAAU,SAACQ,CAAK,E,OACdA,EAAQ4D,OAAYpE,EAAAA,iBAAyB,A,CACjD,E,CACJ,EACI4D,GAAY,CACd,MAAO,W,MACLS,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CACP,QAASrE,EAAAA,QAAgB,CACzB,KAAM,IACN,SAAU,SAACQ,CAAK,E,OACdA,EAAQ4D,OAAYpE,EAAAA,aAAqB,A,CAC7C,E,CACJ,GAEF,CAAEuB,SAAAA,CAAS,I,QAxDb,OANMkC,EAAS,SAKf7B,MC/WEA,GD+WFA,AC/WEA,ED+WC,KAAK,GACR,C,GA4DqBiC,EA5DPrD,EA4DmBF,EA5DZA,EA4D+BmD,EA5DzBA,E,kEA6DvBnD,CAAAA,EAAK,IAAI,EAAI,CAACuD,EAAK,IAAG,EAAtBvD,MAAAA,C,KACF,GAAI,CAACmD,EAAO,IAAI,CACd,MAAM,AAAIf,QAGZ,OADAmB,EAAK,IAAI,CAAGJ,EAAO,IAAI,CACvB,C,EAAM1C,EAAO8C,EAAK,IAAI,CAAEvD,EAAK,IAAI,E,QAAjC,S,qBAEEA,CAAAA,EAAK,SAAS,EAAI,CAACuD,EAAK,SAAQ,EAAhCvD,MAAAA,C,KACF,GAAI,CAACmD,EAAO,SAAS,CACnB,MAAM,AAAIf,QAGZ,OADAmB,EAAK,SAAS,CAAGJ,EAAO,SAAS,CACjC,C,EAAM1C,EAAO8C,EAAK,SAAS,CAAEvD,EAAK,SAAS,E,QAA3C,S,qBAEEA,CAAAA,EAAK,KAAK,EAAI,CAACuD,EAAK,KAAI,EAAxBvD,MAAAA,C,KACF,GAAI,CAACmD,EAAO,KAAK,CACf,MAAM,AAAIf,QAGZ,OADAmB,EAAK,KAAK,CAAGJ,EAAO,KAAK,CACzB,C,EAAM1C,EAAO8C,EAAK,KAAK,CAAEvD,EAAK,KAAK,E,QAAnC,S,6BAEJ,M,QAjFE,OADA,SACO,C,EAAAE,E,GACT,M,QChXE,GAAI,CAPI4C,CAAAA,EAAU,SAAVA,KAAK,AAAD,EAQV,MAAM,AAAIV,QAEZ,MAAO,C,EAAA,CAAEU,MAAAA,CAAM,E,GACjB,I,EAYMf,EAAe,SAAOiC,CAAI,E,wBACtBlB,EACFmB,EAQAC,EACAC,EACAC,E,iDAFQ,OATNtB,EAAUkB,EAAVlB,KAAK,CASC,C,EAAMuB,EARdJ,EAAMK,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO,CACjBC,QAAAA,GACA,QAAS,CACP,cAAgB,UAAe,OAANzB,GACzB,OAAQ,mBACR,eAAgB,kBAClB,CACF,I,QAEa,OADPoB,EAAQ,SACD,C,EAAMM,EAAQP,EAAKC,EAAOF,G,QACvB,OADVG,EAAO,SACG,C,EAAMM,EAAUR,EAAKC,EAAOF,EAAMG,G,QAClD,OADMC,EAAU,SAChB,C,EAAMM,EAAWT,EAAKG,EAASJ,G,QAC/B,OADA,SACO,C,EAAA,CAAEE,MAAAA,EAAOE,QAAAA,EAASD,KAAAA,CAAK,E,GAChC,I,EAEME,EAAW,SAAOJ,CAAG,E,wBACnBC,EAUSS,E,iDAVD,O,EAAM5E,EAAO6E,I,QAC3B,GAAI,AAAiB,UAAjB,MADEV,CAAAA,EAAQ,WACmB,AAAiB,SAAVA,EACtC,MAAM,AAAI9B,QAEZ,GAAI8B,EACF,MAAO,C,EAAAA,E,CAQLW,MAAAA,C,EAAMZ,EAAI,GAAG,CAA8Ba,I,cAC/C,G,EADID,AAAAA,EAAAA,IAAAA,GALF,IAAI,CAMF,AAAc,UAAd,MAJWF,CAAAA,EAAAA,AAFb,A,+LAAA,I,gHAAA,I,IAAA,I,IAAA,IAEI,KAAK,CAAIA,EAAE,AAAD,EAKd,MAAM,AAAIvC,QAEZ,O,EAAM3B,EAAOkE,EAAIC,I,QACjB,OADA,SACO,C,EAAAD,E,GACT,I,EAEMH,EAAU,SACdP,CAAG,CACHc,CAAO,CAAPA,CAAAA,E,IACEnC,EAAAA,EAAAA,GAAG,CAAED,EAAAA,EAAAA,OAAO,C,wBAEV3C,EAAMqC,EAAM2C,EAYVb,EAOEH,EAGFiB,EACAN,EAAAA,E,iDAtBN,GAAI/B,MACF5C,EAAOkF,GACP7C,EAAO8C,GACPH,EAAWI,QACN,GAAIxC,MAKT,O,GAJA5C,EAAOqF,GACPhD,EAAOiD,GACPN,EAAWO,GAIA,O,EAAMxF,EAAOC,G,QAC1B,GAAI,AAAgB,UAAhB,MADEmE,CAAAA,EAAO,WACmB,AAAgB,SAATA,EACrC,MAAM,AAAI/B,QAEZ,GAAI+B,EACF,MAAO,C,EAAAA,E,CAEQ,O,EAAMF,EAAI,GAAG,CAAmBuB,GAAS,CACxD,OAAQ,CAAEnD,KAAAA,CAAK,CACjB,G,WAFQ2B,EAAS,SAATA,IAAI,CAGNiB,EAAStC,E,EAEZqB,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAM,MAAM,AAAD,GAAKA,CAAI,CAAC,EAAE,CAAC,EAAE,CAA1BA,MAAAA,C,KAEC,O,EAAMC,EAAI,IAAI,CAAiBuB,GAAS,CACtCT,QAAAA,EACA1C,KAAAA,EACA2C,SAAAA,EACA,SAAUC,EAAO,IAAI,CACrB,UAAWA,EAAO,SAAS,AAC7B,G,UANA,SAOA,IAAI,CAAC,EAAE,C,iBACX,GAAI,AAAc,UAAd,MAXEN,CAAAA,EAAAA,CAAAA,EAYJ,MAAM,AAAIvC,QAEZ,O,EAAM3B,EAAOkE,EAAI3E,G,QACjB,OADA,SACO,C,EAAA2E,E,GACT,I,EAEMF,EAAY,SAChBR,CAAG,CACHc,CAAO,CAAPA,CAAAA,CAEAU,CAAoB,E,IADlBpD,EAAAA,EAAAA,IAAI,CAAEO,EAAAA,EAAAA,GAAG,CAAED,EAAAA,EAAAA,OAAO,CAAEtB,EAAAA,EAAAA,IAAI,CAAEa,EAAAA,EAAAA,GAAG,CAAEW,EAAAA,EAAAA,GAAG,C,wBAGhC6C,EAAMC,EAAOC,EAiDExB,E,iDAhDnB,GAAIxB,OAAkCA,MACpC8C,EAAO,CACL,MAAO,CACLX,QAAAA,EACA,UACEnC,MAAiCiD,GAASlD,EAAmB,KAAK,CACpE8C,qBAAAA,CACF,CACF,EACAE,EAAQ,CAAE,KAAMG,EAAO,EACvBF,EAAS,CACP,eAAgB,CACd,QAASG,GACT,KAAMC,GACN,OAAQC,GACRC,gBAAAA,EACF,CACF,OACK,GAAItD,MAET,GADA8C,EAAO,CAAE,KAAO/C,EAAmB,IAAI,AAAE,EACrCtB,IAAS9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAwB,CACnCoG,EAAQ,CAAE,KAAMG,EAAO,EACvBF,EAAS,CACP,eAAgB,CACd,QAASO,GACT,aAAcvE,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOwE,GAAclE,EAAKA,GACxC,aAAcN,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOyE,GAAcnE,GACnC,KAAM8D,GACN,OAAQC,GACRC,gBAAAA,EACF,CACF,OACK,GAAI7E,IAAS9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAC3CoG,EAAQ,CAAE,KAAMW,EAAW,EAC3BV,EAAS,CACP,eAAgB,CACd,aAAchE,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOwE,GAAclE,EAAKA,GACxC,YAAaN,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO2E,GAAa1D,EACnC,CACF,OAEA,MAAM,AAAIT,aAGZ,MAAM,AAAIA,QAMRyC,MAAAA,C,EAAMZ,EAAI,IAAI,CAA8BuC,GAAQ,KACtDzB,QAAAA,EACA1C,KAAAA,C,EACGqD,EACAC,EACAC,GAAAA,CACH,WAAY,I,YAEd,GAAI,AAAmB,UAAnB,MARAf,CAFeT,EAAAA,AADjB,AAGES,AAAAA,EAAAA,IAAAA,GAHF,IAAI,CACF,OAAO,CAAI,EAAE,AAAD,EAWd,MAAM,AAAIzC,QAEZ,MAAO,C,EAAAgC,E,GACT,I,EAEMM,EAAa,SACjBT,CAAG,CACHG,CAAO,CAAPA,CAAAA,E,IACE/C,EAAAA,EAAAA,IAAI,CAAEwB,EAAAA,EAAAA,GAAG,C,wBAGH4D,EAGDtG,EAAAA,EAAAA,EAAAA,EAAAA,EAAMuG,EAIgBC,EAAlBtE,EAASuE,EACVxG,EACAyG,EAAAA,E,oDAVNxF,IAAS9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAuB,CAAhC8B,MAAAA,C,KAEA,O,EAAMf,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASC,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAKsC,EAAKiE,IAAM,SAAS,KAAK,CAAC,W,MAAM,E,WADhDL,EACJ,SACA,KAAK,CAAC,SACHtG,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,wCAAAA,EAAcsG,CAAK,CAALA,OAAAA,QAAAA,CAAAA,G,0BAAdtG,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,CAAAA,MAAAA,C,KACH,GAAI,CADKuG,CAAAA,EAANvG,EAAAA,KAAAA,AAAAA,GACUuG,EAAK,UAAU,CAAC,MAAQA,EAAK,UAAU,CAAC,UAG9CrE,EAAkBsE,AAAAA,CAAAA,E,IAAAA,EAAK,KAAK,CAAC,O,qHAAI,CAAfA,CAAAA,EAAAA,CAATC,EAASD,EAAAA,KAAAA,CAAZ,GACPvG,EAAMiC,EAAK,IAAI,GACfwE,EAAQD,EAAM,IAAI,CAAC,KAAK,IAAI,GAC9B,CAACxG,GAAO,CAACyG,GALX,O,KAQF,O,EAAM5C,EAAI,GAAG,CAACrC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOmF,GAAU3C,EAAShE,GAAM,CAAEyG,MAAAA,CAAM,G,QAAtD,S,wBAVG1G,EAAAA,G,kDAAAA,EAAAA,GAAAA,EAAAA,E,iBAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,8BAaT,I,EAIM6B,EAAW,SAAC1C,CAAI,CAAJA,CAAAA,E,IAAc+B,EAAAA,EAAAA,IAAI,CAAE6C,EAAAA,EAAAA,KAAK,CAAEE,EAAAA,EAAAA,OAAO,CAAEtB,EAAAA,EAAAA,KAAK,CAAEqB,EAAAA,EAAAA,IAAI,AAC9D7E,CAAAA,CAAI,CAAC+B,EAAM,GAAyB,CAAmB,CACtD6C,MAAAA,EACAE,QAAAA,EACAtB,MAAAA,EACAqB,KAAAA,CACF,CACF,EAEM6C,EAAQ,aAEd,IAA8BC,EAAAA,CAC5B,CACE,KAAM1H,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,OAAwB,CAC9B,MAAO,CACL,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAC/B,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,AAC5C,EACA,CAAE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAAE,MAAM,EAAmB,EAC5D,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,GAAoB,CAC1B,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,AAC5C,EACA,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,GAAoB,CAC1B,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,AAC5C,EACD,AACH,EACA,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAC/B,MAAO,CACL,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,GAAoB,CAC1B,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,AAC5C,EACA,CACE,KAAMA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,GAAoB,CAC1B,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,AAC5C,EACD,AACH,EACD,GAhC6B0H,EAAAA,MAAAA,CAAAA,IAgC3B,C,OAhC2BA,CAAAA,CAAAA,EAAAA,CAAjB5F,GAAIA,GAAJA,IAAI,CAAE6F,GAAAA,GAAAA,KAAK,CAiCtBC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EACE,CACE,IAAI,GACJH,MAAAA,EACAE,MAAAA,GACA,MAAO,EAAE,CACT,SAAU,CACR,CAAE,OAAQ3H,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,AAAC,EACjC,CAAE,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAuB,AAAC,EACnC,CACD,OAAQ,CACN,KAAO,GAAUA,MAAAA,CAAR8B,GAAK,KAAyCnB,MAAAA,CAAtCX,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,CAAC,KAA2B,UAC/EyH,MAAAA,EACA,IAAK,CACH,KAAMI,EAAAA,OAAAA,CAAAA,KAAa,CACnB,KAAM,CAAE,GAAUC,MAAAA,CAARhG,GAAK,KAAoB,UAAG9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,CAAC,AAC/D,EACA,IAAK6B,EAAIC,GACX,CACF,EACA9B,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,CAClC8B,GAEJ,CA/VA,IAsWMuD,GAAY,eACZM,GAAa,+BACbG,GAAe,8BACfpC,GAAY,eACZW,GAAW,mDACXW,GAAU,4BACVO,GAAW,UACXU,GAAU,uBACVgB,GAAS,YACTO,GAAW,2BACX5B,GAAa,iCACbG,GAAe,+BACfF,GAAQ,SACRG,GAAU,SACVM,GAAQ,kCACRC,GAAS,cACTQ,GAAa,cACbP,GAAa,QACbI,GAAc,OACdC,GAAe,mBACfC,GAAe,WACfE,GAAc,UACdP,GAAO,OACPC,GAAS,SACTC,GAAkB,gBAClBY,GAAM,OAENpH,GAAU,OACX4H,GAAGA,CACN,MACE,8EACF,MACE,0FACF,MACE,+HACF,aAAc,oC"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,t,r={},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.rv=()=>"1.7.3",o.ruid="bundler=rspack@1.7.3";let a=require("@clack/prompts"),i=require("node:util"),s=require("../registry.js");var u="deploySrc",l="dkrhub",c="ghcr",p="gha",f=function(e){return!!(e&&("string"==typeof e&&e!==s.meta.plugin.value.none||Array.isArray(e)&&e.length||(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"))};let d=require("node:child_process"),m=require("node:fs/promises"),h=require("node:path"),y=require("node:os"),b=require("axios"),k=require("open");var g=o.n(k);let v=require("comment-json");var w=o.n(v);require("yaml");let T=require("node:readline/promises");var O={validate:"Option required.",type:{label:"Project type"},monorepo:{name:{label:"Monorepo name"},types:{label:"Types in monorepo"}},optional:{hint:"Optional options: %s",options:{label:"Configure them one by one, or choose none of them (except required ones)?"},defaults:{label:"Accept defaults, or configure them one by one, or choose none of them (except required ones)?"}},opCanceled:"Operation cancelled.",cwdNonEmpty:"Current work directory must be empty.",pmUnsupported:"Only npm or pnpm supported for now.",pnpmRequired:"Only pnpm supported for monorepo for now.",elemExist:"Element exists already.",refsRequired:'When using "after", reference elements must be specified.',circularDep:"Circular dependency.",afterLast:"Element cannot be after ones as the last.",invSkipOrKeep:"Invalid skip or keep.",invElem:"Invalid element.",sysType:"Type cannot be registered with a system name.",typeNotExist:"Type does not exist.",typeRequired:"Type must be specified for type options.",sysConfKey:"Option cannot be registered with a system name.",optionNotExist:"Option does not exist.",optionConflict:"Option conflict between compulsory and optional ones.",valueNotExist:"Value does not exist.",invFormat:"Invalid format of %s.",userGot:"Paste your username: ",userRequired:"Username required.",readTokenGot:"Paste your read-only token: ",readTokenRequired:"Read-only token required.",tokenGot:"Paste your read-write token: ",tokenRequired:"Read-write token required.",pluginStart:"Configuring %s",setPkg:"Setting packages",setWkspace:"Setting workspace",setShared:"Setting shared",pluginFinish:"%s completed!"};function j(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 E(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 P(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function q(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function x(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},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 l=[s,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&l[0]?n.return:l[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,l[1])).done)return o;switch(n=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,n=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],n=0}finally{r=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var S=(0,i.promisify)(d.exec),R=".bradhezh-create-prj",A="config.json",C=function(e){return E(function(){var t,r,n,o,a,i,s,u,l;return x(this,function(c){switch(c.label){case 0:return r=w().parse,[4,(0,m.readFile)((0,h.join)((0,y.homedir)(),R,A),"utf-8").catch(function(){return"{}"})];case 1:if(t=r.apply(w(),[c.sent()]),!e)return[2,t];n=t,o=!0,a=!1,i=void 0;try{for(s=e.split(".")[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){if(l=u.value,(void 0===n?"undefined":q(n))!=="object"||null===n||Array.isArray(n))return[2];n=n[l]}}catch(e){a=!0,i=e}finally{try{o||null==s.return||s.return()}finally{if(a)throw i}}return[2,n]}})})()},I=function(e,t){return E(function(){var r,n,o,a,i,s,u,l,c,p,f,d,b;return x(this,function(k){switch(k.label){case 0:return[4,(0,m.mkdir)((0,h.join)((0,y.homedir)(),R),{recursive:!0})];case 1:return k.sent(),r=(0,h.join)((0,y.homedir)(),R,A),o=w().parse,[4,(0,m.readFile)(r,"utf8").catch(function(){return"{}"})];case 2:if(n=o.apply(w(),[k.sent()]),t){((void 0===n?"undefined":q(n))!=="object"||null===n||Array.isArray(n))&&(n={}),a=n,s=(i=t.split(".")).pop(),u=!0,l=!1,c=void 0;try{for(p=i[Symbol.iterator]();!(u=(f=p.next()).done);u=!0)d=f.value,("object"!==q(a[d])||null===a[d]||Array.isArray(a[d]))&&(a[d]={}),a=a[d]}catch(e){l=!0,c=e}finally{try{u||null==p.return||p.return()}finally{if(l)throw c}}a[s]=e}else n=e;return b=w().stringify(n,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,m.writeFile)(r,b)];case 3:return k.sent(),[2]}})})()},N=function(e,t,r,n,o){return E(function(){var a,s,u,l,c,p;return x(this,function(f){switch(f.label){case 0:if(!(u=null!=(a=t[null!=r?r:"def"])?a:t.def))return[2];return l=(0,h.join)(null!=n?n:"",u.name),[4,(0,b.get)("".concat(e).concat(null!=(s=u.path)?s:""),{responseType:o?"arraybuffer":"text"})];case 1:if("string"!=typeof(p=P((c=f.sent()).data,ArrayBuffer)?new Uint8Array(c.data):c.data)&&!P(p,Uint8Array))throw Error();return[4,(0,m.writeFile)(l,p)];case 2:if(f.sent(),!o)return[2];return[4,S((0,i.format)("tar -xvf %s",u.name),{cwd:n})];case 3:return f.sent(),[4,(0,m.rm)(l,{force:!0})];case 4:return f.sent(),[2]}})})()},G=function(){(0,a.cancel)(O.opCanceled),process.exit(0)};function D(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 M(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 F(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 l=[s,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&l[0]?n.return:l[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,l[1])).done)return o;switch(n=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,n=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],n=0}finally{r=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}for(var _=function(e){return function(t){return M(function(){var r,n,o;return F(this,function(s){switch(s.label){case 0:return(r=(0,a.spinner)()).start(),a.log.info((0,i.format)(eg.pluginStart,"".concat(this.label.split("\n")[0]," for the ").concat(e))),[4,$(t,e,this.name.split("_").at(-1),r)];case 1:return[4,V(n=s.sent())];case 2:return s.sent(),[4,W(n,r)];case 3:return o=s.sent(),B(t,U({},n,o)),a.log.info((0,i.format)(eg.pluginFinish,"".concat(this.label.split("\n")[0]," for the ").concat(e))),r.stop(),[2]}})}).call(this)}},$=function(e,t,r,n){return M(function(){var o,a,i,u,l,c;return F(this,function(p){switch(p.label){case 0:if((o=e.npm)!==s.NPM.npm&&o!==s.NPM.pnpm)throw Error();return a=e.type===s.meta.plugin.type.monorepo,i=!!e.lint,u=!!e.test,[4,z(e,t,r,n)];case 1:return l=p.sent(),c=H(e,r),[2,U({type:t,reg:r,npm:o,monorepo:a,lint:i,test:u},l,c)]}})})()},z=function(e,t,r,n){return M(function(){var o,a,i,p,f;return F(this,function(d){switch(d.label){case 0:if(t!==s.meta.plugin.type.backend&&t!==s.meta.plugin.type.frontend||((null==(o=e.backend)?void 0:o[u])===l||(null==(a=e.backend)?void 0:a[u])===c)&&((null==(i=e.frontend)?void 0:i[u])===l||(null==(p=e.frontend)?void 0:p[u])===c))throw Error();if(r!==l)return[3,1];return[3,4];case 1:if(r!==c)return[3,3];return[4,K(ey,ed,n)];case 2:return f=d.sent(),[3,4];case 3:throw Error();case 4:return[2,{image:f}]}})})()},H=function(e,t){var r,n=!1;if(f(e.cicd)&&(e.cicd!==p||t!==c))if(n=!0,t===l)r=eu;else if(t===c)r=ed;else throw Error();return{forToken:n,registry:r}},K=function(e,t,r){return M(function(){var n,o;return F(this,function(s){switch(s.label){case 0:return[4,C(e)];case 1:if("string"!=typeof(n=s.sent())&&void 0!==n)throw Error();if(n)return[2,n];return r.stop(),[4,(0,a.group)({image:function(){return(0,a.text)({message:eg.imgGot,placeholder:(0,i.format)(eg.defImg,t),validate:function(e){return e?void 0:eg.imgRequired}})}},{onCancel:G})];case 2:return o=s.sent(),r.start(),[4,I(o.image,e)];case 3:return s.sent(),[2,o.image]}})})()},V=function(e){var t=e.monorepo,r=e.npm,n=e.type,o=e.lint,a=e.test;return M(function(){var e,i,s,u,l,c;return F(this,function(p){switch(p.label){case 0:return[4,N(eo,{ignoreTmplt:es},"ignoreTmplt")];case 1:if(p.sent(),!(u=null!=(e=ei[t?"mono":r])?e:ei.def)||!(l=null!=(i=u[n])?i:u.def)||!(c=null!=(s=l[o?"lint":"def"])?s:l.def))throw Error();return[4,N(eo,c,a?"test":"def",".",!0)];case 2:return p.sent(),[2]}})})()},W=function(e,t){var r=e.reg,n=e.forToken;return M(function(){var e,o,i,s,u,p,f,d,m;return F(this,function(h){switch(h.label){case 0:var y,b,k,v;if(r===l)e=el,o=ec,i=ep,s=n?eg.dhTokens:eg.dhReadToken,u=ef;else if(r===c)e=em,o=eh,i=eb,s=n?eg.ghcrTokens:eg.ghcrReadToken,u=ek;else throw Error();return[4,(y=U({user:e,readToken:o},n&&{token:i}),b={},k=s,v=u,E(function(){var e,r,n;return x(this,function(o){var i,s,u,l,c,p,f,d;switch(o.label){case 0:return[4,(i=y,s=b,E(function(){var e,t,r,n,o,a,u,l,c;return x(this,function(p){switch(p.label){case 0:if(!i.user&&!i.readToken&&!i.token)return[2,{}];if(!(t=i.user))return[3,3];if(r=s.user)return[3,2];return[4,C(i.user)];case 1:r=p.sent(),p.label=2;case 2:t=r,p.label=3;case 3:if(e=t,!(o=i.readToken))return[3,6];if(a=s.readToken)return[3,5];return[4,C(i.readToken)];case 4:a=p.sent(),p.label=5;case 5:o=a,p.label=6;case 6:if(n=o,!(l=i.token))return[3,9];if(c=s.token)return[3,8];return[4,C(i.token)];case 7:c=p.sent(),p.label=8;case 8:l=c,p.label=9;case 9:if(u=l,"string"!=typeof e&&void 0!==e||"string"!=typeof n&&void 0!==n||"string"!=typeof u&&void 0!==u)throw Error();return[2,{user:e,readToken:n,token:u}]}})})())];case 1:if(e=o.sent(),(!y.user||e.user)&&(!y.readToken||e.readToken)&&(!y.token||e.token))return[2,e];return null==t||t.stop(),[4,(r=(0,T.createInterface)({input:process.stdin,output:process.stdout})).question(k)];case 2:if(o.sent(),r.close(),!(y.readToken&&!e.readToken||y.token&&!e.token))return[3,4];return[4,g()(v)];case 3:o.sent(),o.label=4;case 4:return[4,(u=!!(y.user&&!e.user),l=!!(y.readToken&&!e.readToken),c=!!(y.token&&!e.token),(0,a.group)(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}({},u&&{user:function(){return(0,a.text)({message:O.userGot,validate:function(e){return e?void 0:O.userRequired}})}},l&&{readToken:function(){return(0,a.password)({message:O.readTokenGot,mask:"*",validate:function(e){return e?void 0:O.readTokenRequired}})}},c&&{token:function(){return(0,a.password)({message:O.tokenGot,mask:"*",validate:function(e){return e?void 0:O.tokenRequired}})}}),{onCancel:G}))];case 5:return n=o.sent(),null==t||t.start(),[4,(p=e,f=y,d=n,E(function(){return x(this,function(e){switch(e.label){case 0:if(!(f.user&&!p.user))return[3,2];if(!d.user)throw Error();return p.user=d.user,[4,I(p.user,f.user)];case 1:e.sent(),e.label=2;case 2:if(!(f.readToken&&!p.readToken))return[3,4];if(!d.readToken)throw Error();return p.readToken=d.readToken,[4,I(p.readToken,f.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(f.token&&!p.token))return[3,6];if(!d.token)throw Error();return p.token=d.token,[4,I(p.token,f.token)];case 5:e.sent(),e.label=6;case 6:return[2]}})})())];case 6:return o.sent(),[2,e]}})})())];case 1:if(f=(p=h.sent()).user,d=p.readToken,m=p.token,!f||!d||n&&!m)throw Error();return[2,{user:f,readToken:d,token:m}]}})})()},B=function(e,t){var r=t.type,n=t.reg,o=t.user,a=t.readToken,i=t.image,s=t.token,u=t.registry;e[r][n]={user:o,readToken:a,image:i,token:s,registry:u}},L=0,Y=[{type:s.meta.plugin.type.backend,skips:[{type:s.meta.plugin.type.frontend,option:u,value:l},{type:s.meta.plugin.type.frontend,option:u,value:c}]},{type:s.meta.plugin.type.frontend,skips:[]}];L<Y.length;L++)for(var J=Y[L],Q=J.type,X=J.skips,Z=0,ee=[{name:l,label:"Docker Hub"},{name:c,label:'GitHub Container Registry\n| Note: You must already have an arbitrary image in your ghcr.io registry\n| as an initial placeholder for deployment.\n| e.g. (Please use a token with "write:packages" to login)\n| $ docker login ghcr.io -u <USERNAME>\n| $ docker pull alpine:latest\n| $ docker tag alpine:latest ghcr.io/<USERNAME>/alpine:latest\n| $ docker push ghcr.io/<USERNAME>/alpine:latest'}];Z<ee.length;Z++){var et=ee[Z],er=et.name,en=et.label;(0,s.regValue)({name:er,label:en,skips:X,keeps:[],requires:[],plugin:{name:"".concat(Q,"_").concat(u,"_").concat(er),label:en,run:_(Q)}},u,Q)}var eo="https://raw.githubusercontent.com/bradhezh/prj-template/master/dkr",ea="dkr.tar",ei={mono:{backend:{lint:{test:{name:ea,path:"/file/mono/be/lint/test/dkr.tar"},def:{name:ea,path:"/file/mono/be/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/mono/be/no/test/dkr.tar"},def:{name:ea,path:"/file/mono/be/no/no/dkr.tar"}}},frontend:{lint:{test:{name:ea,path:"/file/mono/fe/lint/test/dkr.tar"},def:{name:ea,path:"/file/mono/fe/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/mono/fe/no/test/dkr.tar"},def:{name:ea,path:"/file/mono/fe/no/no/dkr.tar"}}}},npm:{backend:{lint:{test:{name:ea,path:"/file/npm/be/lint/test/dkr.tar"},def:{name:ea,path:"/file/npm/be/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/npm/be/no/test/dkr.tar"},def:{name:ea,path:"/file/npm/be/no/no/dkr.tar"}}},frontend:{lint:{test:{name:ea,path:"/file/npm/fe/lint/test/dkr.tar"},def:{name:ea,path:"/file/npm/fe/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/npm/fe/no/test/dkr.tar"},def:{name:ea,path:"/file/npm/fe/no/no/dkr.tar"}}}},pnpm:{backend:{lint:{test:{name:ea,path:"/file/pnpm/be/lint/test/dkr.tar"},def:{name:ea,path:"/file/pnpm/be/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/pnpm/be/no/test/dkr.tar"},def:{name:ea,path:"/file/pnpm/be/no/no/dkr.tar"}}},frontend:{lint:{test:{name:ea,path:"/file/pnpm/fe/lint/test/dkr.tar"},def:{name:ea,path:"/file/pnpm/fe/lint/no/dkr.tar"}},def:{test:{name:ea,path:"/file/pnpm/fe/no/test/dkr.tar"},def:{name:ea,path:"/file/pnpm/fe/no/no/dkr.tar"}}}}},es={name:".dockerignore",path:"/ignore/.dockerignore"},eu="docker.io",el="docker-hub.user",ec="docker-hub.read-token",ep="docker-hub.token",ef="https://app.docker.com/settings/personal-access-tokens",ed="ghcr.io",em="github-cr.user",eh="github-cr.read-token",ey="github-cr.image",eb="github-cr.token",ek="https://github.com/settings/tokens/new?description=bradhezh-create-prj-read-pkg&scopes=read:packages",eg=(e=U({},O),t=t={imgGot:"Arbitrary image in the registry: ",defImg:"%s/<USERNAME>/alpine:latest",imgRequired:"Image required.",dhReadToken:"Token needed for automated integration. Press [ENTER] to open your browser and create a read-only token for deployment...",dhTokens:"Tokens needed for automated integration. Press [ENTER] to open your browser and create a read-only token for deployment and a read-write token for CI/CD...",ghcrReadToken:'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the "read:packages" scope for deployment...',ghcrTokens:'Tokens needed for automated integration. Press [ENTER] to open your browser and create a token with the "read:packages" scope for deployment and a token with the "write:packages" scope for CI/CD...'},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=008-docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/008-docker.js","sources":["webpack://@bradhezh/create-prj/webpack/runtime/compat_get_default_export","webpack://@bradhezh/create-prj/webpack/runtime/define_property_getters","webpack://@bradhezh/create-prj/webpack/runtime/has_own_property","webpack://@bradhezh/create-prj/webpack/runtime/rspack_version","webpack://@bradhezh/create-prj/webpack/runtime/rspack_unique_id","webpack://@bradhezh/create-prj/./src/plugins/const.ts","webpack://@bradhezh/create-prj/./src/message.ts","webpack://@bradhezh/create-prj/./src/command.ts","webpack://@bradhezh/create-prj/./src/plugins/008-docker.ts"],"sourcesContent":["// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.rv = () => (\"1.7.3\")","__webpack_require__.ruid = \"bundler=rspack@1.7.3\";","import { meta, Conf } from \"@/registry\";\n\nexport const option = { deploySrc: \"deploySrc\", gitVis: \"gitVis\" } as const;\n\nexport const value = {\n framework: {\n express: \"express\",\n nest: \"nest\",\n react: \"react\",\n next: \"next\",\n expo: \"expo\",\n },\n typescript: { nodec: \"nodec\", metadata: \"metadata\" },\n deployment: {\n render: \"render\",\n vercel: \"vercel\",\n expo: \"expo\",\n npmjs: \"npmjs\",\n },\n deploySrc: { dkrhub: \"dkrhub\", ghcr: \"ghcr\", repo: \"repo\" },\n orm: { prisma: \"prisma\" },\n builder: { rspack: \"rspack\" },\n test: { jest: \"jest\" },\n lint: { eslint: \"eslint\" },\n git: { github: \"github\", gitlab: \"gitlab\" },\n gitVis: { public: \"public\", private: \"private\" },\n cicd: { gha: \"gha\", circle: \"circle\" },\n done: \"done\",\n} as const;\n\nexport type RenderValue =\n | { owner: string; service: string; token: string; cred?: string }\n | undefined;\nexport type VercelValue =\n | { org?: string; project?: string; token?: string }\n | undefined;\nexport type ExpoValue = { token?: string } | undefined;\nexport type DkrValue =\n | {\n user: string;\n readToken: string;\n image?: string;\n token?: string;\n registry?: string;\n }\n | undefined;\nexport type GitSvcValue =\n | { repo?: string; readToken?: string; token?: string }\n | undefined;\n\nexport const valid = (conf: Conf[string]) => {\n return !!(\n conf &&\n ((typeof conf === \"string\" && conf !== meta.plugin.value.none) ||\n (Array.isArray(conf) && conf.length) ||\n typeof conf === \"object\")\n );\n};\n","export const message = {\n validate: \"Option required.\",\n type: { label: \"Project type\" },\n monorepo: {\n name: { label: \"Monorepo name\" },\n types: { label: \"Types in monorepo\" },\n },\n optional: {\n hint: \"Optional options: %s\",\n options: {\n label:\n \"Configure them one by one, or choose none of them (except required ones)?\",\n },\n defaults: {\n label:\n \"Accept defaults, or configure them one by one, or choose none of them (except required ones)?\",\n },\n },\n opCanceled: \"Operation cancelled.\",\n cwdNonEmpty: \"Current work directory must be empty.\",\n pmUnsupported: \"Only npm or pnpm supported for now.\",\n pnpmRequired: \"Only pnpm supported for monorepo for now.\",\n elemExist: \"Element exists already.\",\n refsRequired: 'When using \"after\", reference elements must be specified.',\n circularDep: \"Circular dependency.\",\n afterLast: \"Element cannot be after ones as the last.\",\n invSkipOrKeep: \"Invalid skip or keep.\",\n invElem: \"Invalid element.\",\n sysType: \"Type cannot be registered with a system name.\",\n typeNotExist: \"Type does not exist.\",\n typeRequired: \"Type must be specified for type options.\",\n sysConfKey: \"Option cannot be registered with a system name.\",\n optionNotExist: \"Option does not exist.\",\n optionConflict: \"Option conflict between compulsory and optional ones.\",\n valueNotExist: \"Value does not exist.\",\n invFormat: \"Invalid format of %s.\",\n userGot: \"Paste your username: \",\n userRequired: \"Username required.\",\n readTokenGot: \"Paste your read-only token: \",\n readTokenRequired: \"Read-only token required.\",\n tokenGot: \"Paste your read-write token: \",\n tokenRequired: \"Read-write token required.\",\n pluginStart: \"Configuring %s\",\n setPkg: \"Setting packages\",\n setWkspace: \"Setting workspace\",\n setShared: \"Setting shared\",\n pluginFinish: \"%s completed!\",\n} as const;\n","import { exec as execAsync } from \"node:child_process\";\nimport { promisify, format } from \"node:util\";\nimport { mkdir, readFile, writeFile, rm, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { get } from \"axios\";\nimport open from \"open\";\nimport Json from \"comment-json\";\nimport Yaml from \"yaml\";\nimport { createInterface } from \"node:readline/promises\";\nimport { group, text, password, cancel, spinner } from \"@clack/prompts\";\n\nimport { meta, NPM } from \"@/registry\";\nimport { message } from \"@/message\";\n\nconst exec = promisify(execAsync);\n\nconst command = {\n volta: \"volta -v\",\n node: \"node -v\",\n npm: `%s -v`,\n pnpm: \"pnpm -v\",\n setPkgName: '%s pkg set name=\"%s\"',\n setPkgVoltaNode: '%s pkg set \"volta.node\"=\"%s\"',\n setPkgVoltaNpm: '%s pkg set \"volta.%s\"=\"%s\"',\n setPkgPkgMgr: '%s pkg set packageManager=\"%s@%s\"',\n setPkgScript: '%s pkg set \"scripts.%s\"=\"%s\"',\n getPkgScript: '%s pkg get \"scripts.%s\"',\n rmPkgScript: '%s pkg delete \"scripts.%s\"',\n setPkgDeps: '%s pkg set \"dependencies.%s\"=\"%s\"',\n setPkgDevDeps: '%s pkg set \"devDependencies.%s\"=\"%s\"',\n setPkgBin: '%s pkg set \"bin.%s\"=\"%s\"',\n rmNodeLinker: \"pnpm config --location project delete node-linker\",\n tar: \"tar -xvf %s\",\n} as const;\n\nexport const setPkgName = async (name: string, npm: NPM, cwd?: string) => {\n await exec(format(command.setPkgName, npm, name), { cwd });\n};\n\nlet volta: boolean | undefined;\n\nexport const setPkgVers = async (npm: NPM, cwd?: string) => {\n void (\n volta !== undefined ||\n (volta = await exec(command.volta)\n .then(() => true)\n .catch(() => false))\n );\n if (volta) {\n const node = (await exec(command.node)).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNode,\n npm,\n !node.startsWith(\"v\") ? node : node.slice(1),\n ),\n { cwd },\n );\n const npmV = (await exec(format(command.npm, npm))).stdout.trim();\n await exec(\n format(\n command.setPkgVoltaNpm,\n npm,\n npm,\n !npmV.startsWith(\"v\") ? npmV : npmV.slice(1),\n ),\n { cwd },\n );\n }\n\n if (npm !== NPM.pnpm) {\n return;\n }\n const pnpm = (await exec(command.pnpm)).stdout.trim();\n await exec(\n format(\n command.setPkgPkgMgr,\n NPM.pnpm,\n NPM.pnpm,\n !pnpm.startsWith(\"v\") ? pnpm : pnpm.slice(1),\n ),\n { cwd },\n );\n};\n\nexport const setPkgScript = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n if (!script) {\n await exec(format(command.rmPkgScript, npm, name), { cwd });\n return;\n }\n await exec(format(command.setPkgScript, npm, name, script), { cwd });\n};\n\nexport const getPkgScript = async (name: string, npm: NPM, cwd?: string) => {\n const script = (\n await exec(format(command.getPkgScript, npm, name), { cwd })\n ).stdout.trim();\n return script === \"{}\" ? undefined : script;\n};\n\ntype Script = { name: string; script?: string };\nexport const defKey = \"def\" as const;\nexport type Scripts<T extends string> = Partial<\n Record<T | typeof defKey, readonly Script[]>\n>;\n\nexport const setPkgScripts = async <K extends string, T extends Scripts<K>>(\n scripts: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const scripts0 = scripts[key ?? defKey] ?? scripts.def;\n if (!scripts0) {\n return;\n }\n for (const { name, script } of scripts0) {\n await setPkgScript(name, script, npm, cwd);\n }\n};\n\nexport const setPkgDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDeps, npm, name, version), { cwd });\n};\n\nexport const setPkgDevDep = async (\n name: string,\n version: string,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(format(command.setPkgDevDeps, npm, name, version), { cwd });\n};\n\ntype PkgDep = { name: string; version: string; dev?: boolean };\nexport type PkgDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly PkgDep[]>\n>;\n\nexport const setPkgDeps = async <K extends string, T extends PkgDeps<K>>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key: K | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n for (const { name, version } of deps0.filter((e) => !e.dev)) {\n await setPkgDep(name, version, npm, cwd);\n }\n for (const { name, version } of deps0.filter((e) => e.dev)) {\n await setPkgDevDep(name, version, npm, cwd);\n }\n};\n\nexport const setPkgBin = async (\n name: string,\n script: string | undefined,\n npm: NPM,\n cwd?: string,\n) => {\n await exec(\n format(\n command.setPkgBin,\n npm,\n !name.includes(\"/\") ? name : name.split(\"/\").pop(),\n script ?? \"dist/index.js\",\n ),\n { cwd },\n );\n};\n\nconst workspace = \"pnpm-workspace.yaml\" as const;\n\nexport const createWkspace = async (pkgs: readonly string[]) => {\n const packages = pkgs.length <= 1 ? pkgs : [...pkgs, meta.system.type.shared];\n for (const pkg of packages) {\n await mkdir(pkg);\n }\n await writeFile(workspace, Yaml.stringify({ packages }));\n};\n\nexport const addPkgInWkspace = async (pkg: string) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.packages || (doc0.packages = []));\n if (!Array.isArray(doc0.packages)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.packages.push(pkg);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const addOnlyBuiltDeps = async (deps: readonly string[]) => {\n const doc = Yaml.parse(\n await readFile(workspace, \"utf8\").catch(() => \"{}\"),\n ) as unknown;\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, workspace));\n }\n const doc0 = doc as Record<string, unknown>;\n void (doc0.onlyBuiltDependencies || (doc0.onlyBuiltDependencies = []));\n if (!Array.isArray(doc0.onlyBuiltDependencies)) {\n throw new Error(format(message.invFormat, workspace));\n }\n doc0.onlyBuiltDependencies.push(...deps);\n await writeFile(workspace, Yaml.stringify(doc));\n};\n\nexport const rmPnpmNodeLinker = async () => {\n await exec(command.rmNodeLinker);\n};\n\nexport type BuiltDeps<T extends string> = Partial<\n Record<T | typeof defKey, readonly string[]>\n>;\n\nexport const setWkspaceBuiltDeps = async <\n K extends string,\n T extends BuiltDeps<K>,\n>(\n deps: T & { [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never },\n key?: K,\n) => {\n const deps0 = deps[key ?? defKey] ?? deps.def;\n if (!deps0) {\n return;\n }\n await addOnlyBuiltDeps(deps0);\n};\n\nconst tsconfig = \"tsconfig.json\" as const;\n\nexport const setTsOptions = async (options: object, cwd?: string) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions = { ...doc.compilerOptions, ...options };\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype PathAlias = Record<string, readonly string[]>;\n\nexport const setPathAlias = async (\n base: string,\n pathAlias: PathAlias,\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.baseUrl = base;\n doc.compilerOptions.paths = pathAlias as Json.CommentObject;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nexport const addPathAlias = async (\n name: string,\n paths: readonly string[],\n cwd?: string,\n) => {\n const file = join(cwd ?? \"\", tsconfig);\n const doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions || (doc.compilerOptions = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions !== \"object\" ||\n doc.compilerOptions === null ||\n Array.isArray(doc.compilerOptions)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n void (\n doc.compilerOptions.paths ||\n (doc.compilerOptions.paths = {} as Json.CommentObject)\n );\n if (\n typeof doc.compilerOptions.paths !== \"object\" ||\n doc.compilerOptions.paths === null ||\n Array.isArray(doc.compilerOptions.paths)\n ) {\n throw new Error(format(message.invFormat, file));\n }\n doc.compilerOptions.paths[name] = paths as Json.CommentArray<string>;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\nconst src = \"src\" as const;\nconst pathAliasWithShared = { \"@/*\": [\"\"], \"@shared/*\": [\"shared/src/*\"] };\n\nexport const setPathAliasWithShared = async (cwd: string) => {\n await access(join(cwd, src))\n .then(() => (pathAliasWithShared[\"@/*\"][0] = format(`%s/${src}/*`, cwd)))\n .catch(() => (pathAliasWithShared[\"@/*\"][0] = format(\"%s/*\", cwd)));\n await setPathAlias(\"..\", pathAliasWithShared, cwd);\n};\n\nconst cfgDir = \".bradhezh-create-prj\" as const;\nconst config = \"config.json\" as const;\n\nexport const getCfg = async (path?: string) => {\n const doc = Json.parse(\n await readFile(join(homedir(), cfgDir, config), \"utf-8\").catch(() => \"{}\"),\n );\n if (!path) {\n return doc;\n }\n let value = doc;\n for (const key of path.split(\".\")) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\nexport const setCfg = async (value: Json.CommentJSONValue, path?: string) => {\n await mkdir(join(homedir(), cfgDir), { recursive: true });\n const file = join(homedir(), cfgDir, config);\n let doc = Json.parse(await readFile(file, \"utf8\").catch(() => \"{}\"));\n if (!path) {\n doc = value;\n } else {\n if (typeof doc !== \"object\" || doc === null || Array.isArray(doc)) {\n doc = {} as Json.CommentObject;\n }\n let obj = doc;\n const keys = path.split(\".\");\n const last = keys.pop()!;\n for (const key of keys) {\n if (\n typeof obj[key] !== \"object\" ||\n obj[key] === null ||\n Array.isArray(obj[key])\n ) {\n obj[key] = {} as Json.CommentObject;\n }\n obj = obj[key];\n }\n obj[last] = value;\n }\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n};\n\ntype Tmplt = { name: string; path?: string };\nexport type Template<T extends string> = Partial<\n Record<T | typeof defKey, Tmplt>\n>;\n\nexport const installTmplt = async <K extends string, T extends Template<K>>(\n base: string,\n template: T & {\n [K0 in keyof T]: K0 extends K | typeof defKey ? T[K0] : never;\n },\n key?: K,\n cwd?: string,\n tar?: boolean,\n) => {\n const tmplt = template[key ?? defKey] ?? template.def;\n if (!tmplt) {\n return;\n }\n const file = join(cwd ?? \"\", tmplt.name);\n const res = await get<unknown>(`${base}${tmplt.path ?? \"\"}`, {\n responseType: tar ? \"arraybuffer\" : \"text\",\n });\n const data = !(res.data instanceof ArrayBuffer)\n ? res.data\n : new Uint8Array(res.data);\n if (typeof data !== \"string\" && !(data instanceof Uint8Array)) {\n throw new Error();\n }\n await writeFile(file, data);\n if (!tar) {\n return;\n }\n await exec(format(command.tar, tmplt.name), { cwd });\n await rm(file, { force: true });\n};\n\nexport enum AuthKey {\n user = \"user\",\n readToken = \"readToken\",\n token = \"token\",\n}\ntype Auth = Partial<Record<AuthKey, string>>;\ntype AuthCfgPath = Auth;\ntype Spinner = ReturnType<typeof spinner>;\n\nexport const auth = async (\n path: AuthCfgPath,\n ini: Auth,\n hint: string,\n tokenUrl: string,\n s?: Spinner,\n) => {\n const value = await authGot(path, ini);\n if (\n (!path.user || value.user) &&\n (!path.readToken || value.readToken) &&\n (!path.token || value.token)\n ) {\n return value;\n }\n s?.stop();\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n await rl.question(hint);\n rl.close();\n if ((path.readToken && !value.readToken) || (path.token && !value.token)) {\n await open(tokenUrl);\n }\n const answer = await authPrompt(\n !!(path.user && !value.user),\n !!(path.readToken && !value.readToken),\n !!(path.token && !value.token),\n );\n s?.start();\n await setAuth(value, path, answer);\n return value;\n};\n\nconst authGot = async (path: AuthCfgPath, ini: Auth) => {\n if (!path.user && !path.readToken && !path.token) {\n return {};\n }\n const user = path.user && (ini.user || (await getCfg(path.user)));\n const readToken =\n path.readToken && (ini.readToken || (await getCfg(path.readToken)));\n const token = path.token && (ini.token || (await getCfg(path.token)));\n if (\n (typeof user !== \"string\" && typeof user !== \"undefined\") ||\n (typeof readToken !== \"string\" && typeof readToken !== \"undefined\") ||\n (typeof token !== \"string\" && typeof token !== \"undefined\")\n ) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\nconst authPrompt = (\n forUser: boolean,\n forReadToken: boolean,\n forToken: boolean,\n) => {\n return group(\n {\n ...(forUser && {\n user: () =>\n text({\n message: message.userGot,\n validate: (value?: string) =>\n value ? undefined : message.userRequired,\n }),\n }),\n ...(forReadToken && {\n readToken: () =>\n password({\n message: message.readTokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.readTokenRequired,\n }),\n }),\n ...(forToken && {\n token: () =>\n password({\n message: message.tokenGot,\n mask: \"*\",\n validate: (value?: string) =>\n value ? undefined : message.tokenRequired,\n }),\n }),\n },\n { onCancel },\n );\n};\n\nconst setAuth = async (auth: Auth, path: AuthCfgPath, answer: Auth) => {\n if (path.user && !auth.user) {\n if (!answer.user) {\n throw new Error();\n }\n auth.user = answer.user;\n await setCfg(auth.user, path.user);\n }\n if (path.readToken && !auth.readToken) {\n if (!answer.readToken) {\n throw new Error();\n }\n auth.readToken = answer.readToken;\n await setCfg(auth.readToken, path.readToken);\n }\n if (path.token && !auth.token) {\n if (!answer.token) {\n throw new Error();\n }\n auth.token = answer.token;\n await setCfg(auth.token, path.token);\n }\n};\n\nexport const onCancel = () => {\n cancel(message.opCanceled);\n process.exit(0);\n};\n","import { group, text, log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport { valid, option, value, DkrValue } from \"./const\";\nimport { regValue, meta, NPM, Conf, Plugin, PrimeType } from \"@/registry\";\nimport {\n installTmplt,\n auth,\n getCfg,\n setCfg,\n onCancel,\n defKey,\n Template,\n} from \"@/command\";\nimport { message as msg } from \"@/message\";\n\nconst run = (type: PrimeType) => {\n return async function (this: Plugin, conf: Conf) {\n const s = spinner();\n s.start();\n log.info(\n format(\n message.pluginStart,\n `${this.label.split(\"\\n\")[0]} for the ${type}`,\n ),\n );\n\n const reg = this.name.split(\"_\").at(-1)!;\n const conf0 = await parseConf(conf, type, reg, s);\n\n await install(conf0);\n const auth0 = await authDkr(conf0, s);\n setValue(conf, { ...conf0, ...auth0 });\n\n log.info(\n format(\n message.pluginFinish,\n `${this.label.split(\"\\n\")[0]} for the ${type}`,\n ),\n );\n s.stop();\n };\n};\n\nconst parseConf = async (\n conf: Conf,\n type: PrimeType,\n reg: string,\n s: Spinner,\n) => {\n const npm = conf.npm;\n if (npm !== NPM.npm && npm !== NPM.pnpm) {\n throw new Error();\n }\n const monorepo = conf.type === meta.plugin.type.monorepo;\n const lint = !!conf.lint;\n const test = !!conf.test;\n const deploy = await parseDeploy(conf, type, reg, s);\n const cicd = parseCicd(conf, reg);\n return { type, reg, npm, monorepo, lint, test, ...deploy, ...cicd };\n};\n\nconst parseDeploy = async (\n conf: Conf,\n type: PrimeType,\n reg: string,\n s: Spinner,\n) => {\n if (\n (type !== meta.plugin.type.backend && type !== meta.plugin.type.frontend) ||\n ((conf.backend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.backend?.[option.deploySrc] === value.deploySrc.ghcr) &&\n (conf.frontend?.[option.deploySrc] === value.deploySrc.dkrhub ||\n conf.frontend?.[option.deploySrc] === value.deploySrc.ghcr))\n ) {\n throw new Error();\n }\n let image;\n if (reg === value.deploySrc.dkrhub) {\n void 0;\n } else if (reg === value.deploySrc.ghcr) {\n image = await iniImg(ghcrImgPath, ghcrReg, s);\n } else {\n throw new Error();\n }\n return { image };\n};\n\nconst parseCicd = (conf: Conf, reg: string) => {\n let forToken = false;\n let registry;\n if (\n valid(conf.cicd) &&\n (conf.cicd !== value.cicd.gha || reg !== value.deploySrc.ghcr)\n ) {\n forToken = true;\n if (reg === value.deploySrc.dkrhub) {\n registry = dhReg;\n } else if (reg === value.deploySrc.ghcr) {\n registry = ghcrReg;\n } else {\n throw new Error();\n }\n }\n return { forToken, registry };\n};\n\nconst iniImg = async (path: string, registry: string, s: Spinner) => {\n const image = await getCfg(path);\n if (typeof image !== \"string\" && typeof image !== \"undefined\") {\n throw new Error();\n }\n if (image) {\n return image;\n }\n s.stop();\n const answer = await group(\n {\n image: () =>\n text({\n message: message.imgGot,\n placeholder: format(message.defImg, registry),\n validate: (value?: string) =>\n value ? undefined : message.imgRequired,\n }),\n },\n { onCancel },\n );\n s.start();\n await setCfg(answer.image, path);\n return answer.image;\n};\n\ntype InstallData = {\n monorepo: boolean;\n npm: NPM;\n type: PrimeType;\n lint: boolean;\n test: boolean;\n};\n\nconst install = async ({ monorepo, npm, type, lint, test }: InstallData) => {\n await installTmplt(base, { ignoreTmplt }, \"ignoreTmplt\");\n const tmplt = template[monorepo ? \"mono\" : npm] ?? template.def;\n if (!tmplt) {\n throw new Error();\n }\n const tmplt0 = tmplt[type] ?? tmplt.def;\n if (!tmplt0) {\n throw new Error();\n }\n const tmplt1 = tmplt0[lint ? \"lint\" : defKey] ?? tmplt0.def;\n if (!tmplt1) {\n throw new Error();\n }\n await installTmplt(base, tmplt1, test ? \"test\" : defKey, \".\", true);\n};\n\ntype AuthData = { reg: string; forToken: boolean };\n\nconst authDkr = async ({ reg, forToken }: AuthData, s: Spinner) => {\n let userPath, readTokenPath, tokenPath, msg, url;\n if (reg === value.deploySrc.dkrhub) {\n userPath = dhUserPath;\n readTokenPath = dhReadTokenPath;\n tokenPath = dhTokenPath;\n msg = forToken ? message.dhTokens : message.dhReadToken;\n url = dhTokenUrl;\n } else if (reg === value.deploySrc.ghcr) {\n userPath = ghcrUserPath;\n readTokenPath = ghcrReadTokenPath;\n tokenPath = ghcrTokenPath;\n msg = forToken ? message.ghcrTokens : message.ghcrReadToken;\n url = ghcrTokenUrl;\n } else {\n throw new Error();\n }\n const { user, readToken, token } = await auth(\n {\n user: userPath,\n readToken: readTokenPath,\n ...(forToken && { token: tokenPath }),\n },\n {},\n msg,\n url,\n s,\n );\n if (!user || !readToken || (forToken && !token)) {\n throw new Error();\n }\n return { user, readToken, token };\n};\n\ntype Value = { type: PrimeType; reg: string } & NonNullable<DkrValue>;\n\nconst setValue = (\n conf: Conf,\n { type, reg, user, readToken, image, token, registry }: Value,\n) => {\n (conf[type]![reg] as DkrValue) = { user, readToken, image, token, registry };\n};\n\nfor (const { type, skips } of [\n {\n type: meta.plugin.type.backend,\n skips: [\n {\n type: meta.plugin.type.frontend,\n option: option.deploySrc,\n value: value.deploySrc.dkrhub,\n },\n {\n type: meta.plugin.type.frontend,\n option: option.deploySrc,\n value: value.deploySrc.ghcr,\n },\n ],\n },\n { type: meta.plugin.type.frontend, skips: [] },\n]) {\n for (const { name, label } of [\n { name: value.deploySrc.dkrhub, label: \"Docker Hub\" },\n {\n name: value.deploySrc.ghcr,\n label:\n 'GitHub Container Registry\\n| Note: You must already have an arbitrary image in your ghcr.io registry\\n| as an initial placeholder for deployment.\\n| e.g. (Please use a token with \"write:packages\" to login)\\n| $ docker login ghcr.io -u <USERNAME>\\n| $ docker pull alpine:latest\\n| $ docker tag alpine:latest ghcr.io/<USERNAME>/alpine:latest\\n| $ docker push ghcr.io/<USERNAME>/alpine:latest',\n },\n ]) {\n regValue(\n {\n name,\n label,\n skips,\n keeps: [],\n requires: [],\n plugin: {\n name: `${type}_${option.deploySrc}_${name}`,\n label,\n run: run(type),\n },\n },\n option.deploySrc,\n type,\n );\n }\n}\n\ntype Spinner = ReturnType<typeof spinner>;\n\nconst base =\n \"https://raw.githubusercontent.com/bradhezh/prj-template/master/dkr\" as const;\nconst name = \"dkr.tar\" as const;\n\nconst template: Partial<\n Record<\n \"mono\" | NPM | typeof defKey,\n Partial<\n Record<\n PrimeType | typeof defKey,\n Partial<Record<\"lint\" | typeof defKey, Template<\"test\">>>\n >\n >\n >\n> = {\n mono: {\n backend: {\n lint: {\n test: { name, path: \"/file/mono/be/lint/test/dkr.tar\" },\n def: { name, path: \"/file/mono/be/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/mono/be/no/test/dkr.tar\" },\n def: { name, path: \"/file/mono/be/no/no/dkr.tar\" },\n },\n },\n frontend: {\n lint: {\n test: { name, path: \"/file/mono/fe/lint/test/dkr.tar\" },\n def: { name, path: \"/file/mono/fe/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/mono/fe/no/test/dkr.tar\" },\n def: { name, path: \"/file/mono/fe/no/no/dkr.tar\" },\n },\n },\n },\n npm: {\n backend: {\n lint: {\n test: { name, path: \"/file/npm/be/lint/test/dkr.tar\" },\n def: { name, path: \"/file/npm/be/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/npm/be/no/test/dkr.tar\" },\n def: { name, path: \"/file/npm/be/no/no/dkr.tar\" },\n },\n },\n frontend: {\n lint: {\n test: { name, path: \"/file/npm/fe/lint/test/dkr.tar\" },\n def: { name, path: \"/file/npm/fe/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/npm/fe/no/test/dkr.tar\" },\n def: { name, path: \"/file/npm/fe/no/no/dkr.tar\" },\n },\n },\n },\n pnpm: {\n backend: {\n lint: {\n test: { name, path: \"/file/pnpm/be/lint/test/dkr.tar\" },\n def: { name, path: \"/file/pnpm/be/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/pnpm/be/no/test/dkr.tar\" },\n def: { name, path: \"/file/pnpm/be/no/no/dkr.tar\" },\n },\n },\n frontend: {\n lint: {\n test: { name, path: \"/file/pnpm/fe/lint/test/dkr.tar\" },\n def: { name, path: \"/file/pnpm/fe/lint/no/dkr.tar\" },\n },\n def: {\n test: { name, path: \"/file/pnpm/fe/no/test/dkr.tar\" },\n def: { name, path: \"/file/pnpm/fe/no/no/dkr.tar\" },\n },\n },\n },\n} as const;\n\nconst ignoreTmplt = {\n name: \".dockerignore\",\n path: \"/ignore/.dockerignore\",\n} as const;\n\nconst dhReg = \"docker.io\" as const;\nconst dhUserPath = \"docker-hub.user\" as const;\nconst dhReadTokenPath = \"docker-hub.read-token\" as const;\nconst dhTokenPath = \"docker-hub.token\" as const;\nconst dhTokenUrl =\n \"https://app.docker.com/settings/personal-access-tokens\" as const;\nconst ghcrReg = \"ghcr.io\" as const;\nconst ghcrUserPath = \"github-cr.user\" as const;\nconst ghcrReadTokenPath = \"github-cr.read-token\" as const;\nconst ghcrImgPath = \"github-cr.image\" as const;\nconst ghcrTokenPath = \"github-cr.token\" as const;\nconst ghcrTokenUrl =\n \"https://github.com/settings/tokens/new?description=bradhezh-create-prj-read-pkg&scopes=read:packages\" as const;\n\nconst message = {\n ...msg,\n imgGot: \"Arbitrary image in the registry: \",\n defImg: \"%s/<USERNAME>/alpine:latest\",\n imgRequired: \"Image required.\",\n dhReadToken:\n \"Token needed for automated integration. Press [ENTER] to open your browser and create a read-only token for deployment...\",\n dhTokens:\n \"Tokens needed for automated integration. Press [ENTER] to open your browser and create a read-only token for deployment and a read-write token for CI/CD...\",\n ghcrReadToken:\n 'Token needed for automated integration. Press [ENTER] to open your browser and create a token with the \"read:packages\" scope for deployment...',\n ghcrTokens:\n 'Tokens needed for automated integration. Press [ENTER] to open your browser and create a token with the \"read:packages\" scope for deployment and a token with the \"write:packages\" scope for CI/CD...',\n} as const;\n"],"names":["e","Object","valid","conf","meta","Array","_type_of","message","exec","promisify","execAsync","cfgDir","config","getCfg","path","doc","value","_iteratorError","key","Json","readFile","join","homedir","setCfg","file","obj","keys","last","text","mkdir","writeFile","installTmplt","base","template","cwd","tar","_template_","_tmplt_path","tmplt","res","data","get","_instanceof","ArrayBuffer","Uint8Array","Error","format","rm","onCancel","cancel","process","run","type","s","conf0","auth0","spinner","log","parseConf","install","authDkr","setValue","reg","npm","monorepo","lint","test","deploy","cicd","NPM","parseDeploy","parseCicd","_conf_backend","_conf_backend1","_conf_frontend","_conf_frontend1","image","iniImg","ghcrImgPath","ghcrReg","registry","forToken","dhReg","answer","group","undefined","_tmplt_type","_tmplt0_","tmplt0","tmplt1","ignoreTmplt","defKey","userPath","readTokenPath","tokenPath","_$msg","url","_ref","user","readToken","token","ini","hint","tokenUrl","dhUserPath","dhReadTokenPath","dhTokenPath","dhTokenUrl","ghcrUserPath","ghcrReadTokenPath","ghcrTokenPath","ghcrTokenUrl","rl","forUser","forReadToken","auth","createInterface","open","password","_iter","skips","_iter1","name","label","regValue","option","name1","msg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var e,r,t,n={},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,a),t.exports}a.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return a.d(r,{a:r}),r},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),a.rv=()=>"1.7.3",a.ruid="bundler=rspack@1.7.3";let i=require("node:child_process"),u=require("node:fs/promises"),s=require("node:path"),c=require("comment-json");var l=a.n(c);let p=require("@clack/prompts"),f=require("node:util"),d=require("../registry.js");var y="vercel",b=function(e){return!!(e&&("string"==typeof e&&e!==d.meta.plugin.value.none||Array.isArray(e)&&e.length||(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"))};let m=require("node:os"),h=require("axios"),v=require("open");var k=a.n(v);require("yaml");let g=require("node:readline/promises");var w={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 j(e,r,t,n,o,a,i){try{var u=e[a](i),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function O(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var a=e.apply(r,t);function i(e){j(a,n,o,i,u,"next",e)}function u(e){j(a,n,o,i,u,"throw",e)}i(void 0)})}}function T(e,r){return null!=r&&"u">typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](e):e instanceof r}function P(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function x(e,r){var t,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(i,"next",{value:s(0)}),u(i,"throw",{value:s(1)}),u(i,"return",{value:s(2)}),"function"==typeof Symbol&&u(i,Symbol.iterator,{value:function(){return this}}),i;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return 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=r.call(e,a)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(0,f.promisify)(i.exec);var S=".bradhezh-create-prj",q="config.json",E=function(e){return O(function(){var r,t,n,o,a,i,c,p,f;return x(this,function(d){switch(d.label){case 0:return t=l().parse,[4,(0,u.readFile)((0,s.join)((0,m.homedir)(),S,q),"utf-8").catch(function(){return"{}"})];case 1:if(r=t.apply(l(),[d.sent()]),!e)return[2,r];n=r,o=!0,a=!1,i=void 0;try{for(c=e.split(".")[Symbol.iterator]();!(o=(p=c.next()).done);o=!0){if(f=p.value,(void 0===n?"undefined":P(n))!=="object"||null===n||Array.isArray(n))return[2];n=n[f]}}catch(e){a=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw i}}return[2,n]}})})()},I=function(e,r){return O(function(){var t,n,o,a,i,c,p,f,d,y,b,h,v;return x(this,function(k){switch(k.label){case 0:return[4,(0,u.mkdir)((0,s.join)((0,m.homedir)(),S),{recursive:!0})];case 1:return k.sent(),t=(0,s.join)((0,m.homedir)(),S,q),o=l().parse,[4,(0,u.readFile)(t,"utf8").catch(function(){return"{}"})];case 2:if(n=o.apply(l(),[k.sent()]),r){((void 0===n?"undefined":P(n))!=="object"||null===n||Array.isArray(n))&&(n={}),a=n,c=(i=r.split(".")).pop(),p=!0,f=!1,d=void 0;try{for(y=i[Symbol.iterator]();!(p=(b=y.next()).done);p=!0)h=b.value,("object"!==P(a[h])||null===a[h]||Array.isArray(a[h]))&&(a[h]={}),a=a[h]}catch(e){f=!0,d=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw d}}a[c]=e}else n=e;return v=l().stringify(n,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,u.writeFile)(t,v)];case 3:return k.sent(),[2]}})})()},A=function(){(0,p.cancel)(w.opCanceled),process.exit(0)};function R(e,r,t,n,o,a,i){try{var u=e[a](i),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function C(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var a=e.apply(r,t);function i(e){R(a,n,o,i,u,"next",e)}function u(e){R(a,n,o,i,u,"throw",e)}i(void 0)})}}function F(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}function G(e,r){var t,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(i,"next",{value:s(0)}),u(i,"throw",{value:s(1)}),u(i,"return",{value:s(2)}),"function"==typeof Symbol&&u(i,Symbol.iterator,{value:function(){return this}}),i;function s(u){return function(s){var c=[u,s];if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(t=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return 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=r.call(e,a)}catch(e){c=[6,e],n=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var N=function(e,r){var t=e.npm;if(t!==d.NPM.npm&&t!==d.NPM.pnpm||r!==d.meta.plugin.type.frontend)throw Error();return F({type:r,npm:t},D(e))},D=function(e){return{forPrjToken:b(e.cicd)}},L=function(e,r){var t=e.forPrjToken;return C(function(){var e;return G(this,function(n){switch(n.label){case 0:var o,a,i;return[4,(o=F({},t&&{token:W}),a={},i=J.token,O(function(){var e,t,n;return x(this,function(u){var s,c,l,f,d,y,b,m;switch(u.label){case 0:return[4,(s=o,c=a,O(function(){var e,r,t,n,o,a,i,u,l;return x(this,function(p){switch(p.label){case 0:if(!s.user&&!s.readToken&&!s.token)return[2,{}];if(!(r=s.user))return[3,3];if(t=c.user)return[3,2];return[4,E(s.user)];case 1:t=p.sent(),p.label=2;case 2:r=t,p.label=3;case 3:if(e=r,!(o=s.readToken))return[3,6];if(a=c.readToken)return[3,5];return[4,E(s.readToken)];case 4:a=p.sent(),p.label=5;case 5:o=a,p.label=6;case 6:if(n=o,!(u=s.token))return[3,9];if(l=c.token)return[3,8];return[4,E(s.token)];case 7:l=p.sent(),p.label=8;case 8:u=l,p.label=9;case 9:if(i=u,"string"!=typeof e&&void 0!==e||"string"!=typeof n&&void 0!==n||"string"!=typeof i&&void 0!==i)throw Error();return[2,{user:e,readToken:n,token:i}]}})})())];case 1:if(e=u.sent(),(!o.user||e.user)&&(!o.readToken||e.readToken)&&(!o.token||e.token))return[2,e];return null==r||r.stop(),[4,(t=(0,g.createInterface)({input:process.stdin,output:process.stdout})).question(i)];case 2:if(u.sent(),t.close(),!(o.readToken&&!e.readToken||o.token&&!e.token))return[3,4];return[4,k()(B)];case 3:u.sent(),u.label=4;case 4:return[4,(l=!!(o.user&&!e.user),f=!!(o.readToken&&!e.readToken),d=!!(o.token&&!e.token),(0,p.group)(function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}({},l&&{user:function(){return(0,p.text)({message:w.userGot,validate:function(e){return e?void 0:w.userRequired}})}},f&&{readToken:function(){return(0,p.password)({message:w.readTokenGot,mask:"*",validate:function(e){return e?void 0:w.readTokenRequired}})}},d&&{token:function(){return(0,p.password)({message:w.tokenGot,mask:"*",validate:function(e){return e?void 0:w.tokenRequired}})}}),{onCancel:A}))];case 5:return n=u.sent(),null==r||r.start(),[4,(y=e,b=o,m=n,O(function(){return x(this,function(e){switch(e.label){case 0:if(!(b.user&&!y.user))return[3,2];if(!m.user)throw Error();return y.user=m.user,[4,I(y.user,b.user)];case 1:e.sent(),e.label=2;case 2:if(!(b.readToken&&!y.readToken))return[3,4];if(!m.readToken)throw Error();return y.readToken=m.readToken,[4,I(y.readToken,b.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(b.token&&!y.token))return[3,6];if(!m.token)throw Error();return y.token=m.token,[4,I(y.token,b.token)];case 5:e.sent(),e.label=6;case 6:return[2]}})})())];case 6:return u.sent(),[2,e]}})})())];case 1:if(e=n.sent().token,t&&!e)throw Error();return[2,{token:e}]}})})()},M=function(e,r){var t=e.npm,n=e.forPrjToken;return C(function(){var e,o,a;return G(this,function(c){switch(c.label){case 0:if(e=t===d.NPM.npm?K.npmLink:K.pnpmLink,p.log.info(e),r.stop(),(0,i.execSync)(e,{stdio:"inherit"}),r.start(),!n)return[3,2];return a=l().parse,[4,(0,u.readFile)((0,s.join)($,H),"utf-8").catch(function(){return"{}"})];case 1:if((void 0===(o=a.apply(l(),[c.sent()]))?"undefined":o&&"u">typeof Symbol&&o.constructor===Symbol?"symbol":typeof o)!="object"||null===o||Array.isArray(o)||"string"!=typeof o.orgId||"string"!=typeof o.projectId)throw Error();return[2,{org:o.orgId,project:o.projectId}];case 2:return[2]}})})()},_=function(e,r){var t=r.type,n=r.org,o=r.project,a=r.token;e[t][y]={org:n,project:o,token:a}},U="Vercel";(0,d.regValue)({name:y,label:U,skips:[{type:d.meta.plugin.type.frontend,option:"deploySrc"},{type:d.meta.plugin.type.lib,option:d.meta.plugin.option.type.deployment},{type:d.meta.plugin.type.cli,option:d.meta.plugin.option.type.deployment}],keeps:[],requires:[],plugin:{name:"".concat(d.meta.plugin.type.frontend,"_").concat(d.meta.plugin.option.type.deployment,"_").concat(y),label:U,run:(e=d.meta.plugin.type.frontend,function(r){return C(function(){var t,n,o,a;return G(this,function(i){switch(i.label){case 0:return(t=(0,p.spinner)()).start(),p.log.info((0,f.format)(J.pluginStart,"".concat(this.label," for the ").concat(e))),n=N(r,e),[4,C(function(){return G(this,function(e){switch(e.label){case 0:var r,t;return[4,(r={template:z},t="template",O(function(){var e,n,o,a,i,c;return x(this,function(l){switch(l.label){case 0:if(!(o=null!=(e=r[null!=t?t:"def"])?e:r.def))return[2];return a=(0,s.join)("",o.name),[4,(0,h.get)("".concat(V).concat(null!=(n=o.path)?n:""),{responseType:"text"})];case 1:if("string"!=typeof(c=T((i=l.sent()).data,ArrayBuffer)?new Uint8Array(i.data):i.data)&&!T(c,Uint8Array))throw Error();return[4,(0,u.writeFile)(a,c)];case 2:case 4:return l.sent(),[2];case 3:return l.sent(),[4,(0,u.rm)(a,{force:!0})]}})})())];case 1:return e.sent(),[2]}})})()];case 1:return i.sent(),[4,L(n,t)];case 2:return o=i.sent(),[4,M(F({},n,o),t)];case 3:return a=i.sent(),_(r,F({},n,o,a)),p.log.info((0,f.format)(J.pluginFinish,"".concat(this.label," for the ").concat(e))),t.stop(),[2]}})}).call(this)})}},d.meta.plugin.option.type.deployment,d.meta.plugin.type.frontend);var V="https://raw.githubusercontent.com/bradhezh/prj-template/master/vcl/vercel.json",z={name:"vercel.json"},K={npmLink:"npx vercel link",pnpmLink:"pnpm dlx vercel link"},W="vercel.token",B="https://vercel.com/account/settings/tokens",$=".vercel",H="project.json",J=(r=F({},w),t=t={token:"Token needed for automated integration. Press [ENTER] to open your browser and create a read-write token for CI/CD..."},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):(function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}),r)})();
2
+ //# sourceMappingURL=009-fe-vercel.js.map