@bradhezh/create-prj 1.0.5 → 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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{"use strict";var e,r,t,n={},o={};function i(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,i),t.exports}i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),i.rv=()=>"1.7.3",i.ruid="bundler=rspack@1.7.3";let a=require("node:child_process"),u=require("node:readline/promises"),s=require("@clack/prompts"),l=require("node:util"),c=require("../registry.js");var p="expo",f=function(e){return!!(e&&("string"==typeof e&&e!==c.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:fs/promises"),y=require("node:path"),b=require("node:os");require("axios");let m=require("open");var v=i.n(m);let h=require("comment-json");var k=i.n(h);require("yaml");var g={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 w(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function O(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){w(i,n,o,a,u,"next",e)}function u(e){w(i,n,o,a,u,"throw",e)}a(void 0)})}}function j(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function x(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 l=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=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 i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=r.call(e,i)}catch(e){l=[6,e],n=0}finally{t=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(0,l.promisify)(a.exec);var P=".bradhezh-create-prj",T="config.json",q=function(e){return O(function(){var r,t,n,o,i,a,u,s,l;return x(this,function(c){switch(c.label){case 0:return t=k().parse,[4,(0,d.readFile)((0,y.join)((0,b.homedir)(),P,T),"utf-8").catch(function(){return"{}"})];case 1:if(r=t.apply(k(),[c.sent()]),!e)return[2,r];n=r,o=!0,i=!1,a=void 0;try{for(u=e.split(".")[Symbol.iterator]();!(o=(s=u.next()).done);o=!0){if(l=s.value,(void 0===n?"undefined":j(n))!=="object"||null===n||Array.isArray(n))return[2];n=n[l]}}catch(e){i=!0,a=e}finally{try{o||null==u.return||u.return()}finally{if(i)throw a}}return[2,n]}})})()},E=function(e,r){return O(function(){var t,n,o,i,a,u,s,l,c,p,f,m,v;return x(this,function(h){switch(h.label){case 0:return[4,(0,d.mkdir)((0,y.join)((0,b.homedir)(),P),{recursive:!0})];case 1:return h.sent(),t=(0,y.join)((0,b.homedir)(),P,T),o=k().parse,[4,(0,d.readFile)(t,"utf8").catch(function(){return"{}"})];case 2:if(n=o.apply(k(),[h.sent()]),r){((void 0===n?"undefined":j(n))!=="object"||null===n||Array.isArray(n))&&(n={}),i=n,u=(a=r.split(".")).pop(),s=!0,l=!1,c=void 0;try{for(p=a[Symbol.iterator]();!(s=(f=p.next()).done);s=!0)m=f.value,("object"!==j(i[m])||null===i[m]||Array.isArray(i[m]))&&(i[m]={}),i=i[m]}catch(e){l=!0,c=e}finally{try{s||null==p.return||p.return()}finally{if(l)throw c}}i[u]=e}else n=e;return v=k().stringify(n,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,d.writeFile)(t,v)];case 3:return h.sent(),[2]}})})()},S=function(){(0,s.cancel)(g.opCanceled),process.exit(0)};function C(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 A(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){C(i,n,o,a,u,"next",e)}function u(e){C(i,n,o,a,u,"throw",e)}a(void 0)})}}function R(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,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 l=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=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 i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=r.call(e,i)}catch(e){l=[6,e],n=0}finally{t=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var I=function(e,r){var t=e.npm;if(t!==c.NPM.npm&&t!==c.NPM.pnpm)throw Error();var n=N(e,r);if(n)return R({type:r,npm:t},n,D(e))},N=function(e,r){if(r!==c.meta.plugin.type.mobile||!f(e.git))throw Error();if(!e[e.git])return void s.log.warn(W.noGit);var t,n=e.type!==c.meta.plugin.type.monorepo?".":null==(t=e[r])?void 0:t.name;if(!n)throw Error();return{cwd:n}},D=function(e){return{forToken:f(e.cicd)}},M=function(e,r){var t=e.forToken;return A(function(){var e;return G(this,function(n){switch(n.label){case 0:var o,i,a;return[4,(o=R({},t&&{token:U}),i={},a=W.token,O(function(){var e,t,n;return x(this,function(l){var c,p,f,d,y,b,m,h;switch(l.label){case 0:return[4,(c=o,p=i,O(function(){var e,r,t,n,o,i,a,u,s;return x(this,function(l){switch(l.label){case 0:if(!c.user&&!c.readToken&&!c.token)return[2,{}];if(!(r=c.user))return[3,3];if(t=p.user)return[3,2];return[4,q(c.user)];case 1:t=l.sent(),l.label=2;case 2:r=t,l.label=3;case 3:if(e=r,!(o=c.readToken))return[3,6];if(i=p.readToken)return[3,5];return[4,q(c.readToken)];case 4:i=l.sent(),l.label=5;case 5:o=i,l.label=6;case 6:if(n=o,!(u=c.token))return[3,9];if(s=p.token)return[3,8];return[4,q(c.token)];case 7:s=l.sent(),l.label=8;case 8:u=s,l.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(e=l.sent(),(!o.user||e.user)&&(!o.readToken||e.readToken)&&(!o.token||e.token))return[2,e];return null==r||r.stop(),[4,(t=(0,u.createInterface)({input:process.stdin,output:process.stdout})).question(a)];case 2:if(l.sent(),t.close(),!(o.readToken&&!e.readToken||o.token&&!e.token))return[3,4];return[4,v()(V)];case 3:l.sent(),l.label=4;case 4:return[4,(f=!!(o.user&&!e.user),d=!!(o.readToken&&!e.readToken),y=!!(o.token&&!e.token),(0,s.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}({},f&&{user:function(){return(0,s.text)({message:g.userGot,validate:function(e){return e?void 0:g.userRequired}})}},d&&{readToken:function(){return(0,s.password)({message:g.readTokenGot,mask:"*",validate:function(e){return e?void 0:g.readTokenRequired}})}},y&&{token:function(){return(0,s.password)({message:g.tokenGot,mask:"*",validate:function(e){return e?void 0:g.tokenRequired}})}}),{onCancel:S}))];case 5:return n=l.sent(),null==r||r.start(),[4,(b=e,m=o,h=n,O(function(){return x(this,function(e){switch(e.label){case 0:if(!(m.user&&!b.user))return[3,2];if(!h.user)throw Error();return b.user=h.user,[4,E(b.user,m.user)];case 1:e.sent(),e.label=2;case 2:if(!(m.readToken&&!b.readToken))return[3,4];if(!h.readToken)throw Error();return b.readToken=h.readToken,[4,E(b.readToken,m.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(m.token&&!b.token))return[3,6];if(!h.token)throw Error();return b.token=h.token,[4,E(b.token,m.token)];case 5:e.sent(),e.label=6;case 6:return[2]}})})())];case 6:return l.sent(),[2,e]}})})())];case 1:if(e=n.sent().token,t&&!e)throw Error();return[2,{token:e}]}})})()},F=function(e,r){var t=e.npm,n=e.cwd;return A(function(){var e,o,i,l;return G(this,function(p){switch(p.label){case 0:return e=t===c.NPM.npm?K.npmLink:K.pnpmLink,s.log.info(e),r.stop(),(0,a.execSync)(e,{stdio:"inherit",cwd:n}),[4,(o=(0,u.createInterface)({input:process.stdin,output:process.stdout})).question(W.build)];case 1:return i=p.sent().trim().toLowerCase(),o.close(),i&&"y"!==i&&"yes"!==i||(l=t===c.NPM.npm?K.npmAdrPreview:K.pnpmAdrPreview,s.log.info(l),(0,a.execSync)(l,{stdio:"inherit",cwd:n})),r.start(),[2]}})})()},L=function(e,r){var t=r.type,n=r.token;e[t][p]={token:n}},_="Expo";(0,c.regValue)({name:p,label:_,skips:[{type:c.meta.plugin.type.lib,option:c.meta.plugin.option.type.deployment},{type:c.meta.plugin.type.cli,option:c.meta.plugin.option.type.deployment}],keeps:[],requires:[{option:c.meta.plugin.option.git}],plugin:{name:"".concat(c.meta.plugin.type.mobile,"_").concat(c.meta.plugin.option.type.deployment,"_").concat(p),label:_,pos:{mode:c.PosMode.after,refs:[c.meta.plugin.option.git]},run:(e=c.meta.plugin.type.mobile,function(r){return A(function(){var t,n,o;return G(this,function(i){switch(i.label){case 0:if((t=(0,s.spinner)()).start(),s.log.info((0,l.format)(W.pluginStart,"".concat(this.label," for the ").concat(e))),!(n=I(r,e)))return[2];return[4,M(n,t)];case 1:return o=i.sent(),[4,F(R({},n,o),t)];case 2:return i.sent(),L(r,R({},n,o)),s.log.info((0,l.format)(W.pluginFinish,"".concat(this.label," for the ").concat(e))),t.stop(),[2]}})}).call(this)})}},c.meta.plugin.option.type.deployment,c.meta.plugin.type.mobile);var K={npmLink:"npx eas-cli build:configure",pnpmLink:"pnpm dlx eas-cli build:configure",npmAdrPreview:"npx eas-cli build --platform android --profile preview",pnpmAdrPreview:"pnpm dlx eas-cli build --platform android --profile preview"},U="expo.token",V="https://expo.dev/settings/access-tokens",W=(r=R({},g),t=t={noGit:"Cannot work as expected because the plugin for the Git option has not run successfully.",token:"Token needed for automated integration. Press [ENTER] to open your browser and create a read-write token for CI/CD...",build:"Now you can use eas-cli to build the project on Expo. Note that you should first use eas-cli locally in interactive mode before using it non-interactively in CI/CD. The build process will take a few minutes. You can run it now or at anytime. Do you want to run it now? (Y/n)"},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)})();
|
|
1
|
+
(()=>{"use strict";var e,r,t,n={},o={};function i(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,i),t.exports}i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),i.rv=()=>"1.7.3",i.ruid="bundler=rspack@1.7.3";let a=require("node:child_process"),u=require("node:fs/promises"),s=require("node:path"),l=require("comment-json");var c=i.n(l);let p=require("node:readline/promises"),f=require("@clack/prompts"),d=require("node:util"),y=require("../registry.js");var b="expo",m=function(e){return!!(e&&("string"==typeof e&&e!==y.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 v=require("node:os");require("axios");let h=require("open");var k=i.n(h);require("yaml");var g={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 w(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function O(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){w(i,n,o,a,u,"next",e)}function u(e){w(i,n,o,a,u,"throw",e)}a(void 0)})}}function x(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function j(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 l=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=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 i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=r.call(e,i)}catch(e){l=[6,e],n=0}finally{t=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(0,d.promisify)(a.exec);var P=".bradhezh-create-prj",T="config.json",q=function(e){return O(function(){var r,t,n,o,i,a,l,p,f;return j(this,function(d){switch(d.label){case 0:return t=c().parse,[4,(0,u.readFile)((0,s.join)((0,v.homedir)(),P,T),"utf-8").catch(function(){return"{}"})];case 1:if(r=t.apply(c(),[d.sent()]),!e)return[2,r];n=r,o=!0,i=!1,a=void 0;try{for(l=e.split(".")[Symbol.iterator]();!(o=(p=l.next()).done);o=!0){if(f=p.value,(void 0===n?"undefined":x(n))!=="object"||null===n||Array.isArray(n))return[2];n=n[f]}}catch(e){i=!0,a=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw a}}return[2,n]}})})()},E=function(e,r){return O(function(){var t,n,o,i,a,l,p,f,d,y,b,m,h;return j(this,function(k){switch(k.label){case 0:return[4,(0,u.mkdir)((0,s.join)((0,v.homedir)(),P),{recursive:!0})];case 1:return k.sent(),t=(0,s.join)((0,v.homedir)(),P,T),o=c().parse,[4,(0,u.readFile)(t,"utf8").catch(function(){return"{}"})];case 2:if(n=o.apply(c(),[k.sent()]),r){((void 0===n?"undefined":x(n))!=="object"||null===n||Array.isArray(n))&&(n={}),i=n,l=(a=r.split(".")).pop(),p=!0,f=!1,d=void 0;try{for(y=a[Symbol.iterator]();!(p=(b=y.next()).done);p=!0)m=b.value,("object"!==x(i[m])||null===i[m]||Array.isArray(i[m]))&&(i[m]={}),i=i[m]}catch(e){f=!0,d=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw d}}i[l]=e}else n=e;return h=c().stringify(n,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,u.writeFile)(t,h)];case 3:return k.sent(),[2]}})})()},S=function(){(0,f.cancel)(g.opCanceled),process.exit(0)};function A(e,r,t,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){t(e);return}u.done?r(s):Promise.resolve(s).then(n,o)}function C(e){return function(){var r=this,t=arguments;return new Promise(function(n,o){var i=e.apply(r,t);function a(e){A(i,n,o,a,u,"next",e)}function u(e){A(i,n,o,a,u,"throw",e)}a(void 0)})}}function R(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){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function I(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 l=[u,s];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=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 i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=r.call(e,i)}catch(e){l=[6,e],n=0}finally{t=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var N=function(e,r){var t,n=e.npm;if(n!==y.NPM.npm&&n!==y.NPM.pnpm)throw Error();var o=null==(t=e[e.type])?void 0:t.name;if(!o)throw Error();var i=D(e,r);if(i)return R({type:r,npm:n,name:o},i,F(e))},D=function(e,r){if(r!==y.meta.plugin.type.mobile||!m(e.git))throw Error();if(!e[e.git])return void f.log.warn($.noGit);var t,n=e.type!==y.meta.plugin.type.monorepo?".":null==(t=e[r])?void 0:t.name;if(!n)throw Error();return{cwd:n}},F=function(e){return{forToken:m(e.cicd)}},M=function(e,r){var t=e.forToken;return C(function(){var e;return I(this,function(n){switch(n.label){case 0:var o,i,a;return[4,(o=R({},t&&{token:V}),i={},a=$.token,O(function(){var e,t,n;return j(this,function(u){var s,l,c,d,y,b,m,v;switch(u.label){case 0:return[4,(s=o,l=i,O(function(){var e,r,t,n,o,i,a,u,c;return j(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=l.user)return[3,2];return[4,q(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(i=l.readToken)return[3,5];return[4,q(s.readToken)];case 4:i=p.sent(),p.label=5;case 5:o=i,p.label=6;case 6:if(n=o,!(u=s.token))return[3,9];if(c=l.token)return[3,8];return[4,q(s.token)];case 7:c=p.sent(),p.label=8;case 8:u=c,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(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,p.createInterface)({input:process.stdin,output:process.stdout})).question(a)];case 2:if(u.sent(),t.close(),!(o.readToken&&!e.readToken||o.token&&!e.token))return[3,4];return[4,k()(W)];case 3:u.sent(),u.label=4;case 4:return[4,(c=!!(o.user&&!e.user),d=!!(o.readToken&&!e.readToken),y=!!(o.token&&!e.token),(0,f.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}({},c&&{user:function(){return(0,f.text)({message:g.userGot,validate:function(e){return e?void 0:g.userRequired}})}},d&&{readToken:function(){return(0,f.password)({message:g.readTokenGot,mask:"*",validate:function(e){return e?void 0:g.readTokenRequired}})}},y&&{token:function(){return(0,f.password)({message:g.tokenGot,mask:"*",validate:function(e){return e?void 0:g.tokenRequired}})}}),{onCancel:S}))];case 5:return n=u.sent(),null==r||r.start(),[4,(b=e,m=o,v=n,O(function(){return j(this,function(e){switch(e.label){case 0:if(!(m.user&&!b.user))return[3,2];if(!v.user)throw Error();return b.user=v.user,[4,E(b.user,m.user)];case 1:e.sent(),e.label=2;case 2:if(!(m.readToken&&!b.readToken))return[3,4];if(!v.readToken)throw Error();return b.readToken=v.readToken,[4,E(b.readToken,m.readToken)];case 3:e.sent(),e.label=4;case 4:if(!(m.token&&!b.token))return[3,6];if(!v.token)throw Error();return b.token=v.token,[4,E(b.token,m.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}]}})})()},L=function(e,r){var t=e.npm,n=e.name,o=e.cwd;return C(function(){var e,i,l,d,b,m,v,h;return I(this,function(k){switch(k.label){case 0:return e=(0,s.join)(o,Y),l=c().parse,[4,(0,u.readFile)(e,"utf-8").catch(function(){return"{}"})];case 1:if((void 0===(i=l.apply(c(),[k.sent()]))?"undefined":G(i))!=="object"||null===i||Array.isArray(i)||"object"!==G(i.expo)||null===i.expo||Array.isArray(i.expo)||"string"!=typeof i.expo.name||"string"!=typeof i.expo.slug)throw Error();return i.expo.name=n,i.expo.slug=n,d=c().stringify(i,null,2).replace(/\[\s+"([^"]+)"\s+\]/g,'["$1"]')+"\n",[4,(0,u.writeFile)(e,d)];case 2:return k.sent(),b=t===y.NPM.npm?U.npmLink:U.pnpmLink,f.log.info(b),r.stop(),(0,a.execSync)(b,{stdio:"inherit",cwd:o}),[4,(m=(0,p.createInterface)({input:process.stdin,output:process.stdout})).question($.build)];case 3:return v=k.sent().trim().toLowerCase(),m.close(),v&&"y"!==v&&"yes"!==v||(h=t===y.NPM.npm?U.npmAdrPreview:U.pnpmAdrPreview,f.log.info(h),(0,a.execSync)(h,{stdio:"inherit",cwd:o})),r.start(),[2]}})})()},_=function(e,r){var t=r.type,n=r.token;e[t][b]={token:n}},K="Expo";(0,y.regValue)({name:b,label:K,skips:[{type:y.meta.plugin.type.lib,option:y.meta.plugin.option.type.deployment},{type:y.meta.plugin.type.cli,option:y.meta.plugin.option.type.deployment}],keeps:[],requires:[{option:y.meta.plugin.option.git}],plugin:{name:"".concat(y.meta.plugin.type.mobile,"_").concat(y.meta.plugin.option.type.deployment,"_").concat(b),label:K,pos:{mode:y.PosMode.after,refs:[y.meta.plugin.option.git]},run:(e=y.meta.plugin.type.mobile,function(r){return C(function(){var t,n,o;return I(this,function(i){switch(i.label){case 0:if((t=(0,f.spinner)()).start(),f.log.info((0,d.format)($.pluginStart,"".concat(this.label," for the ").concat(e))),!(n=N(r,e)))return[2];return[4,M(n,t)];case 1:return o=i.sent(),[4,L(R({},n,o),t)];case 2:return i.sent(),_(r,R({},n,o)),f.log.info((0,d.format)($.pluginFinish,"".concat(this.label," for the ").concat(e))),t.stop(),[2]}})}).call(this)})}},y.meta.plugin.option.type.deployment,y.meta.plugin.type.mobile);var U={npmLink:"npx eas-cli build:configure",pnpmLink:"pnpm dlx eas-cli build:configure",npmAdrPreview:"npx eas-cli build --platform android --profile preview",pnpmAdrPreview:"pnpm dlx eas-cli build --platform android --profile preview"},V="expo.token",W="https://expo.dev/settings/access-tokens",Y="app.json",$=(r=R({},g),t=t={noGit:"Cannot work as expected because the plugin for the Git option has not run successfully.",token:"Token needed for automated integration. Press [ENTER] to open your browser and create a read-write token for CI/CD...",build:"Now you can use eas-cli to build the project on Expo. Note that you should first use eas-cli locally in interactive mode before using it non-interactively in CI/CD. The build process will take a few minutes. You can run it now or at anytime. Do you want to run it now? (Y/n)"},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
2
|
//# sourceMappingURL=011-m-expo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/011-m-expo.js","sources":["webpack://@bradhezh/create-prj/./src/plugins/011-m-expo.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/command.ts"],"sourcesContent":["import { execSync } from \"node:child_process\";\nimport { createInterface } from \"node:readline/promises\";\nimport { log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport { valid, value, ExpoValue } from \"./const\";\nimport {\n regValue,\n meta,\n PosMode,\n NPM,\n Conf,\n Plugin,\n PrimeType,\n} from \"@/registry\";\nimport { auth } 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 authExpo(conf0, s);\n await createExpo({ ...conf0, ...auth0 }, s);\n setValue(conf, { ...conf0, ...auth0 });\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 deploy = parseDeploy(conf, type);\n if (!deploy) {\n return;\n }\n const cicd = parseCicd(conf);\n return { type, npm, ...deploy, ...cicd };\n};\n\nconst parseDeploy = (conf: Conf, type: PrimeType) => {\n if (type !== meta.plugin.type.mobile || !valid(conf.git)) {\n throw new Error();\n }\n if (!conf[conf.git!]) {\n log.warn(message.noGit);\n return;\n }\n const cwd = conf.type !== meta.plugin.type.monorepo ? \".\" : conf[type]?.name;\n if (!cwd) {\n throw new Error();\n }\n return { cwd };\n};\n\nconst parseCicd = (conf: Conf) => {\n const forToken = valid(conf.cicd);\n return { forToken };\n};\n\ntype AuthData = { forToken: boolean };\n\nconst authExpo = async ({ forToken }: AuthData, s: Spinner) => {\n const { token } = await auth(\n { ...(forToken && { token: tokenPath }) },\n {},\n message.token,\n tokenUrl,\n s,\n );\n if (forToken && !token) {\n throw new Error();\n }\n return { token };\n};\n\ntype ExpoData = { npm: NPM; cwd: string };\n\nconst createExpo = async ({ npm, cwd }: ExpoData, s: Spinner) => {\n const link = npm === NPM.npm ? command.npmLink : command.pnpmLink;\n log.info(link);\n s.stop();\n execSync(link, { stdio: \"inherit\", cwd });\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const answer = (await rl.question(message.build)).trim().toLowerCase();\n rl.close();\n if (!answer || answer === \"y\" || answer === \"yes\") {\n const preview =\n npm === NPM.npm ? command.npmAdrPreview : command.pnpmAdrPreview;\n log.info(preview);\n execSync(preview, { stdio: \"inherit\", cwd });\n }\n s.start();\n};\n\ntype Value = { type: PrimeType } & NonNullable<ExpoValue>;\n\nconst setValue = (conf: Conf, { type, token }: Value) => {\n (conf[type]![value.deployment.expo] as ExpoValue) = { token };\n};\n\nconst label = \"Expo\" as const;\n\nregValue(\n {\n name: value.deployment.expo,\n label,\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 keeps: [],\n requires: [{ option: meta.plugin.option.git }],\n plugin: {\n name: `${meta.plugin.type.mobile}_${meta.plugin.option.type.deployment}_${value.deployment.expo}`,\n label,\n pos: { mode: PosMode.after, refs: [meta.plugin.option.git] },\n run: run(meta.plugin.type.mobile),\n },\n },\n meta.plugin.option.type.deployment,\n meta.plugin.type.mobile,\n);\n\ntype Spinner = ReturnType<typeof spinner>;\n\nconst command = {\n npmLink: \"npx eas-cli build:configure\",\n pnpmLink: \"pnpm dlx eas-cli build:configure\",\n npmAdrPreview: \"npx eas-cli build --platform android --profile preview\",\n pnpmAdrPreview: \"pnpm dlx eas-cli build --platform android --profile preview\",\n} as const;\n\nconst tokenPath = \"expo.token\" as const;\nconst tokenUrl = \"https://expo.dev/settings/access-tokens\" as const;\n\nconst message = {\n ...msg,\n noGit:\n \"Cannot work as expected because the plugin for the Git option has not run successfully.\",\n token:\n \"Token needed for automated integration. Press [ENTER] to open your browser and create a read-write token for CI/CD...\",\n build:\n \"Now you can use eas-cli to build the project on Expo. Note that you should first use eas-cli locally in interactive mode before using it non-interactively in CI/CD. The build process will take a few minutes. You can run it now or at anytime. Do you want to run it now? (Y/n)\",\n} as const;\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 { 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"],"names":["type","e","Object","valid","conf","meta","Array","_type_of","message","promisify","execAsync","cfgDir","config","getCfg","path","doc","value","_iteratorError","key","Json","readFile","join","homedir","setCfg","file","obj","keys","last","text","mkdir","writeFile","onCancel","cancel","process","parseConf","npm","NPM","Error","deploy","parseDeploy","parseCicd","log","_conf_type","cwd","forToken","authExpo","s","token","ini","hint","tokenPath","rl","answer","forUser","forReadToken","auth","user","readToken","createInterface","open","tokenUrl","group","undefined","password","createExpo","link","preview","command","execSync","setValue","label","regValue","PosMode","conf0","auth0","spinner","format","msg"],"mappings":"uBAkBaA,E,mICjBb,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,CAACC,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,uJCIpB,MAYG,OAkCGC,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,6LCzDO,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,+4DR/gBA,IAAMC,EAAY,SAAC9B,CAAI,CAAQJ,CAAI,EACjC,IAAMmC,EAAM/B,EAAK,GAAG,CACpB,GAAI+B,IAAQC,EAAAA,GAAAA,CAAAA,GAAO,EAAID,IAAQC,EAAAA,GAAAA,CAAAA,IAAQ,CACrC,MAAM,AAAIC,QAEZ,IAAMC,EAASC,EAAYnC,EAAMJ,GACjC,GAAKsC,EAIL,OAAO,GAAEtC,KAAAA,EAAMmC,IAAAA,C,EAAQG,EADVE,EAAUpC,GAEzB,EAEMmC,EAAc,SAACnC,CAAI,CAAQJ,CAAI,EACnC,GAAIA,IAASK,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,MAAuB,EAAI,CAACF,EAAMC,EAAK,GAAG,EACrD,MAAM,AAAIiC,QAEZ,GAAI,CAACjC,CAAI,CAACA,EAAK,GAAG,CAAE,CAAE,YACpBqC,EAAAA,GAAAA,CAAAA,IAAQ,CAACjC,EAAQ,KAAK,EAGxB,IAA4DkC,EAAtDC,EAAMvC,EAAK,IAAI,GAAKC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,QAAyB,CAAG,IAAM,MAAAqC,CAAAA,EAAAA,CAAI,CAAC1C,EAAK,AAAD,EAAT0C,KAAAA,EAAAA,EAAY,IAAI,CAC5E,GAAI,CAACC,EACH,MAAM,AAAIN,QAEZ,MAAO,CAAEM,IAAAA,CAAI,CACf,EAEMH,EAAY,SAACpC,CAAI,EAErB,MAAO,CAAEwC,SADQzC,EAAMC,EAAK,IAAI,CACd,CACpB,EAIMyC,EAAW,WAA+BC,CAAC,E,IAAvBF,EAAAA,EAAAA,QAAQ,C,wBACxBG,E,qDQyXRjC,EACAkC,EACAC,ER3XkB,O,GQyXlBnC,ERxXE,KAAM8B,GAAY,CAAE,MAAOM,CAAU,GQyXvCF,ERxXE,CAAC,EQyXHC,ERxXEzC,EAAQ,KAAK,C,iBQ4XTQ,EASAmC,EAMAC,E,8BAUetC,EAAmBkC,EAmBxCK,EACAC,EACAV,EAmCqBW,EAAYzC,EAAmBsC,E,uBAjFtC,O,GAyBOtC,EAzBOA,EAyBYkC,EAzBNA,E,iBA6B5BQ,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EAEAV,EAAAA,EAAAA,E,iDANN,GAAI,CAACjC,EAAK,IAAI,EAAI,CAACA,EAAK,SAAS,EAAI,CAACA,EAAK,KAAK,CAC9C,MAAO,C,EAAA,CAAC,E,QAEGA,EAAK,IAAI,AAAD,EAARA,MAAAA,C,UAAckC,EAAI,IAAI,CAARA,MAAAA,C,KAAa,O,EAAMnC,EAAOC,EAAK,IAAI,E,UAAtB,S,yCAAlC0C,EAAO,E,IAEX1C,EAAK,SAAS,AAAD,EAAbA,MAAAA,C,UAAmBkC,EAAI,SAAS,CAAbA,MAAAA,C,KAAkB,O,EAAMnC,EAAOC,EAAK,SAAS,E,UAA3B,S,yCADjC2C,EAAAA,E,IAEQ3C,EAAK,KAAK,AAAD,EAATA,MAAAA,C,UAAekC,EAAI,KAAK,CAATA,MAAAA,C,KAAc,O,EAAMnC,EAAOC,EAAK,KAAK,E,UAAvB,S,sCAC3C,GADMiC,EAAQ,EAEX,AAAgB,UAAhB,OAAOS,GAAqB,AAAgB,SAATA,GACnC,AAAqB,UAArB,OAAOC,GAA0B,AAAqB,SAAdA,GACxC,AAAiB,UAAjB,OAAOV,GAAsB,AAAiB,SAAVA,EAErC,MAAM,AAAIV,QAEZ,MAAO,C,EAAA,CAAEmB,KAAAA,EAAMC,UAAAA,EAAWV,MAAAA,CAAM,E,GAClC,M,QAxCE,GADM/B,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,OAFA8B,MRlYEA,GQkYFA,ARlYEA,EQkYC,IAAI,GAEP,C,EAAMK,AADAA,CAAAA,EAAKO,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,EAAgB,CAAE,MAAOzB,QAAQ,KAAK,CAAE,OAAQA,QAAQ,MAAM,AAAC,EAAC,EAClE,QAAQ,CAACgB,G,WAAlB,SACAE,EAAG,KAAK,G,CACHrC,CAAAA,EAAK,SAAS,EAAI,CAACE,EAAM,SAAS,EAAMF,EAAK,KAAK,EAAI,CAACE,EAAM,KAAK,AAAD,EAAlE,O,KACF,O,EAAM2C,IRxYNC,G,QQwYA,S,iBAEa,O,GA6BfP,EA5BE,CAAC,CAAEvC,CAAAA,EAAK,IAAI,EAAI,CAACE,EAAM,IAAG,EA6B5BsC,EA5BE,CAAC,CAAExC,CAAAA,EAAK,SAAS,EAAI,CAACE,EAAM,SAAQ,EA6BtC4B,EA5BE,CAAC,CAAE9B,CAAAA,EAAK,KAAK,EAAI,CAACE,EAAM,KAAI,EA8BvB6C,AAAAA,GAAAA,EAAAA,KAAAA,AAAAA,EACL,A,iaAAA,GACMR,GAAW,CACb,KAAM,W,MACJzB,AAAAA,GAAAA,EAAAA,IAAAA,AAAAA,EAAK,CACH,QAASpB,EAAAA,OAAe,CACxB,SAAU,SAACQ,CAAK,E,OACdA,EAAQ8C,OAAYtD,EAAAA,YAAoB,A,CAC5C,E,CACJ,EACI8C,GAAgB,CAClB,UAAW,W,MACTS,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CACP,QAASvD,EAAAA,YAAoB,CAC7B,KAAM,IACN,SAAU,SAACQ,CAAK,E,OACdA,EAAQ8C,OAAYtD,EAAAA,iBAAyB,A,CACjD,E,CACJ,EACIoC,GAAY,CACd,MAAO,W,MACLmB,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CACP,QAASvD,EAAAA,QAAgB,CACzB,KAAM,IACN,SAAU,SAACQ,CAAK,E,OACdA,EAAQ8C,OAAYtD,EAAAA,aAAqB,A,CAC7C,E,CACJ,GAEF,CAAEuB,SAAAA,CAAS,I,QAxDb,OANMqB,EAAS,SAKfN,MR9YEA,GQ8YFA,AR9YEA,EQ8YC,KAAK,GACR,C,GA4DqBS,EA5DPvC,EA4DmBF,EA5DZA,EA4D+BsC,EA5DzBA,E,kEA6DvBtC,CAAAA,EAAK,IAAI,EAAI,CAACyC,EAAK,IAAG,EAAtBzC,MAAAA,C,KACF,GAAI,CAACsC,EAAO,IAAI,CACd,MAAM,AAAIf,QAGZ,OADAkB,EAAK,IAAI,CAAGH,EAAO,IAAI,CACvB,C,EAAM7B,EAAOgC,EAAK,IAAI,CAAEzC,EAAK,IAAI,E,QAAjC,S,qBAEEA,CAAAA,EAAK,SAAS,EAAI,CAACyC,EAAK,SAAQ,EAAhCzC,MAAAA,C,KACF,GAAI,CAACsC,EAAO,SAAS,CACnB,MAAM,AAAIf,QAGZ,OADAkB,EAAK,SAAS,CAAGH,EAAO,SAAS,CACjC,C,EAAM7B,EAAOgC,EAAK,SAAS,CAAEzC,EAAK,SAAS,E,QAA3C,S,qBAEEA,CAAAA,EAAK,KAAK,EAAI,CAACyC,EAAK,KAAI,EAAxBzC,MAAAA,C,KACF,GAAI,CAACsC,EAAO,KAAK,CACf,MAAM,AAAIf,QAGZ,OADAkB,EAAK,KAAK,CAAGH,EAAO,KAAK,CACzB,C,EAAM7B,EAAOgC,EAAK,KAAK,CAAEzC,EAAK,KAAK,E,QAAnC,S,6BAEJ,M,QAjFE,OADA,SACO,C,EAAAE,E,GACT,M,QR/YE,GAPQ+B,EAAU,SAAVA,KAAK,CAOTH,GAAY,CAACG,EACf,MAAM,AAAIV,QAEZ,MAAO,C,EAAA,CAAEU,MAAAA,CAAM,E,GACjB,I,EAIMiB,EAAa,WAA+BlB,CAAC,E,IAAvBX,EAAAA,EAAAA,GAAG,CAAEQ,EAAAA,EAAAA,GAAG,C,wBAC5BsB,EAIAd,EACAC,EAGEc,E,iDAHQ,OALVD,EAAO9B,IAAQC,EAAAA,GAAAA,CAAAA,GAAO,CAAG+B,EAAQ,OAAO,CAAGA,EAAQ,QAAQ,CACjE1B,EAAAA,GAAAA,CAAAA,IAAQ,CAACwB,GACTnB,EAAE,IAAI,GACNsB,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASH,EAAM,CAAE,MAAO,UAAWtB,IAAAA,CAAI,GAEvB,C,EAAMQ,AADhBA,CAAAA,EAAKO,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,EAAgB,CAAE,MAAOzB,QAAQ,KAAK,CAAE,OAAQA,QAAQ,MAAM,AAAC,EAAC,EAClD,QAAQ,CAACzB,EAAQ,KAAK,E,eAAzC4C,EAAU,SAAkC,IAAI,GAAG,WAAW,GACpED,EAAG,KAAK,GACHC,GAAUA,AAAW,MAAXA,GAAkBA,AAAW,QAAXA,IACzBc,EACJ/B,IAAQC,EAAAA,GAAAA,CAAAA,GAAO,CAAG+B,EAAQ,aAAa,CAAGA,EAAQ,cAAc,CAClE1B,EAAAA,GAAAA,CAAAA,IAAQ,CAACyB,GACTE,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASF,EAAS,CAAE,MAAO,UAAWvB,IAAAA,CAAI,IAE5CG,EAAE,KAAK,G,MACT,I,EAIMuB,EAAW,SAACjE,CAAI,CAAJA,CAAAA,E,IAAcJ,EAAAA,EAAAA,IAAI,CAAE+C,EAAAA,EAAAA,KAAK,AACxC3C,CAAAA,CAAI,CAACJ,EAAM,GAAuB,CAAiB,CAAE+C,MAAAA,CAAM,CAC9D,EAEMuB,EAAQ,OAEdC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EACE,CACE,IAAI,GACJD,MAAAA,EACA,MAAO,CACL,CACE,KAAMjE,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,CACD,MAAO,EAAE,CACT,SAAU,CAAC,CAAE,OAAQA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,AAAC,EAAE,CAC9C,OAAQ,CACN,KAAO,GAA6BA,MAAAA,CAA3BA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,MAAuB,CAAC,KAAyCW,MAAAA,CAAtCX,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,CAAC,KAAyB,UAChGiE,MAAAA,EACA,IAAK,CAAE,KAAME,EAAAA,OAAAA,CAAAA,KAAa,CAAE,KAAM,CAACnE,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,GAAsB,CAAC,AAAC,EAC3D,GAAG,EApHIL,EAoHEK,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,MAAuB,CAnH7B,SAA8BD,CAAU,E,wBACvC0C,EAIA2B,EAKAC,E,iDAJN,GAJA5B,AADMA,CAAAA,EAAI6B,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,GAAQ,EAChB,KAAK,GACPlC,EAAAA,GAAAA,CAAAA,IAAQ,CAACmC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOpE,EAAQ,WAAW,CAAG,GAAwBR,MAAAA,CAAtB,IAAI,CAAC,KAAK,CAAC,aAAgB,OAALA,KAG1D,CADEyE,CAAAA,EAAQvC,EAAU9B,EAAMJ,EAAI,EAEhC,O,GAGY,O,EAAM6C,EAAS4B,EAAO3B,G,QACpC,OADM4B,EAAQ,SACd,C,EAAMV,EAAW,KAAKS,EAAUC,GAAS5B,G,eAAzC,SACAuB,EAASjE,EAAM,KAAKqE,EAAUC,IAE9BjC,EAAAA,GAAAA,CAAAA,IAAQ,CAACmC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAOpE,EAAQ,YAAY,CAAG,GAAwBR,MAAAA,CAAtB,IAAI,CAAC,KAAK,CAAC,aAAgB,OAALA,KAC/D8C,EAAE,IAAI,G,MACR,a,EAoGE,CACF,EACAzC,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,UAAkC,CAClCA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,MAAuB,EAKzB,IAAM8D,EAAU,CACd,QAAS,8BACT,SAAU,mCACV,cAAe,yDACf,eAAgB,6DAClB,EAEMjB,EAAY,aACZU,EAAW,0CAEXpD,G,EAAU,KACXqE,G,IAAGA,CACN,MACE,0FACF,MACE,wHACF,MACE,oR"}
|
|
1
|
+
{"version":3,"file":"plugins/011-m-expo.js","sources":["webpack://@bradhezh/create-prj/./src/plugins/011-m-expo.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/command.ts"],"sourcesContent":["import { execSync } from \"node:child_process\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport Json from \"comment-json\";\nimport { createInterface } from \"node:readline/promises\";\nimport { log, spinner } from \"@clack/prompts\";\nimport { format } from \"node:util\";\n\nimport { valid, value, ExpoValue } from \"./const\";\nimport {\n regValue,\n meta,\n PosMode,\n NPM,\n Conf,\n Plugin,\n PrimeType,\n} from \"@/registry\";\nimport { auth } 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 authExpo(conf0, s);\n await createExpo({ ...conf0, ...auth0 }, s);\n setValue(conf, { ...conf0, ...auth0 });\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 const cicd = parseCicd(conf);\n return { type, npm, name, ...deploy, ...cicd };\n};\n\nconst parseDeploy = (conf: Conf, type: PrimeType) => {\n if (type !== meta.plugin.type.mobile || !valid(conf.git)) {\n throw new Error();\n }\n if (!conf[conf.git!]) {\n log.warn(message.noGit);\n return;\n }\n const cwd = conf.type !== meta.plugin.type.monorepo ? \".\" : conf[type]?.name;\n if (!cwd) {\n throw new Error();\n }\n return { cwd };\n};\n\nconst parseCicd = (conf: Conf) => {\n const forToken = valid(conf.cicd);\n return { forToken };\n};\n\ntype AuthData = { forToken: boolean };\n\nconst authExpo = async ({ forToken }: AuthData, s: Spinner) => {\n const { token } = await auth(\n { ...(forToken && { token: tokenPath }) },\n {},\n message.token,\n tokenUrl,\n s,\n );\n if (forToken && !token) {\n throw new Error();\n }\n return { token };\n};\n\ntype ExpoData = { npm: NPM; name: string; cwd: string };\n\nconst createExpo = async ({ npm, name, cwd }: ExpoData, s: Spinner) => {\n const file = join(cwd, config);\n const doc = Json.parse(await readFile(file, \"utf-8\").catch(() => \"{}\"));\n if (\n typeof doc !== \"object\" ||\n doc === null ||\n Array.isArray(doc) ||\n typeof doc.expo !== \"object\" ||\n doc.expo === null ||\n Array.isArray(doc.expo) ||\n typeof doc.expo.name !== \"string\" ||\n typeof doc.expo.slug !== \"string\"\n ) {\n throw new Error();\n }\n doc.expo.name = name;\n doc.expo.slug = name;\n const text =\n Json.stringify(doc, null, 2).replace(/\\[\\s+\"([^\"]+)\"\\s+\\]/g, '[\"$1\"]') +\n \"\\n\";\n await writeFile(file, text);\n\n const link = npm === NPM.npm ? command.npmLink : command.pnpmLink;\n log.info(link);\n s.stop();\n execSync(link, { stdio: \"inherit\", cwd });\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const answer = (await rl.question(message.build)).trim().toLowerCase();\n rl.close();\n if (!answer || answer === \"y\" || answer === \"yes\") {\n const preview =\n npm === NPM.npm ? command.npmAdrPreview : command.pnpmAdrPreview;\n log.info(preview);\n execSync(preview, { stdio: \"inherit\", cwd });\n }\n s.start();\n};\n\ntype Value = { type: PrimeType } & NonNullable<ExpoValue>;\n\nconst setValue = (conf: Conf, { type, token }: Value) => {\n (conf[type]![value.deployment.expo] as ExpoValue) = { token };\n};\n\nconst label = \"Expo\" as const;\n\nregValue(\n {\n name: value.deployment.expo,\n label,\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 keeps: [],\n requires: [{ option: meta.plugin.option.git }],\n plugin: {\n name: `${meta.plugin.type.mobile}_${meta.plugin.option.type.deployment}_${value.deployment.expo}`,\n label,\n pos: { mode: PosMode.after, refs: [meta.plugin.option.git] },\n run: run(meta.plugin.type.mobile),\n },\n },\n meta.plugin.option.type.deployment,\n meta.plugin.type.mobile,\n);\n\ntype Spinner = ReturnType<typeof spinner>;\n\nconst command = {\n npmLink: \"npx eas-cli build:configure\",\n pnpmLink: \"pnpm dlx eas-cli build:configure\",\n npmAdrPreview: \"npx eas-cli build --platform android --profile preview\",\n pnpmAdrPreview: \"pnpm dlx eas-cli build --platform android --profile preview\",\n} as const;\n\nconst tokenPath = \"expo.token\" as const;\nconst tokenUrl = \"https://expo.dev/settings/access-tokens\" as const;\nconst config = \"app.json\" as const;\n\nconst message = {\n ...msg,\n noGit:\n \"Cannot work as expected because the plugin for the Git option has not run successfully.\",\n token:\n \"Token needed for automated integration. Press [ENTER] to open your browser and create a read-write token for CI/CD...\",\n build:\n \"Now you can use eas-cli to build the project on Expo. Note that you should first use eas-cli locally in interactive mode before using it non-interactively in CI/CD. The build process will take a few minutes. You can run it now or at anytime. Do you want to run it now? (Y/n)\",\n} as const;\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 { 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"],"names":["type","e","Object","valid","conf","meta","Array","_type_of","message","promisify","execAsync","cfgDir","config","getCfg","path","doc","value","_iteratorError","key","Json","readFile","join","homedir","setCfg","file","obj","keys","last","text","mkdir","writeFile","onCancel","cancel","process","parseConf","_conf_conf_type","npm","NPM","Error","name","deploy","parseDeploy","parseCicd","log","_conf_type","cwd","forToken","authExpo","s","token","ini","hint","tokenPath","rl","answer","forUser","forReadToken","auth","user","readToken","createInterface","open","tokenUrl","group","undefined","password","createExpo","link","preview","command","execSync","setValue","label","regValue","PosMode","conf0","auth0","spinner","format","msg"],"mappings":"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"}
|