@todesktop/cli 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -126,14 +126,16 @@ This builds your Electron app with native installers, code signing, and so on ba
126
126
  We also support:
127
127
 
128
128
  - `todesktop build --code-sign=false`. Run a build with code-signing and notarization disabled. This is handy for testing builds quickly.
129
- - `todesktop build --config=<path.to.another.config.json>`. Run a build with a different configuration file.
129
+ - `todesktop build --config=<path.to.another.todesktop.json>`. Run a build with a different configuration file.
130
130
  - `todesktop release`. Release a build. This will publish a new download and an auto-update for existing users. By default it shows a list of builds for you to choose from.
131
131
  - Use `todesktop release <id>` to release a specific build by ID.
132
132
  - `todesktop release --latest` will release the latest build.
133
133
  - Append `--force` to skip the interactive confirmation step.
134
+ - Append `--config=<path.to.another.todesktop.json>` to use a different configuration file.
134
135
  - `todesktop builds`. View your recent builds.
135
136
  - Use `todesktop builds <id>` to view a specific build and its progress.
136
137
  - `todesktop builds --latest` will show the latest build and it's progress.
138
+ - Append `--config=<path.to.another.todesktop.json>` to use a different configuration file.
137
139
  - `todesktop logout`. Logs you out.
138
140
  - `todesktop whoami`. Prints the email of the account you're signed into.
139
141
  - `todesktop --help`. Shows the help documentation.
@@ -544,6 +546,17 @@ Example:
544
546
 
545
547
  If you want to override the default `package.json` configuration, use the `packageJson` property. For example, you can use this to override the `productName` or `version` properties.
546
548
 
549
+ You can also set the version of a `dependency` (or `devDependency`), such as Electron Builder, to `null`. This will remove Electron Builder from the effective `package.json` that ToDesktop will use.
550
+
551
+ ```js
552
+ "packageJson": {
553
+ "extends": "package.json",
554
+ "devDependencies": {
555
+ "electron-builder": null
556
+ }
557
+ }
558
+ ```
559
+
547
560
  ### `schemaVersion` - number
548
561
 
549
562
  Example: `1`.
@@ -845,6 +858,14 @@ Now you can run `npm run todesktop-build` to build the production app. Or you ca
845
858
 
846
859
  ## Changelog
847
860
 
861
+ ### v1.4.2
862
+
863
+ - Allow setting dependencies in `packageJson` to null.
864
+
865
+ ### v1.4.1
866
+
867
+ - Add stage support to `release` and `builds` commands.
868
+
848
869
  ### v1.4.0
849
870
 
850
871
  - Adds `extends` and `packageJson` field to `todesktop.json` file.
@@ -79,7 +79,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
79
79
  },{"./logger":"XvyO"}],"Y1TB":[function(require,module,exports) {
80
80
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("fast-glob")),o=p(require("fs")),t=p(require("path")),n=l(require("./generateS3Key")),i=l(require("./logger")),r=l(require("./uploadToS3")),a=l(require("./zip"));function s(e){if("function"!=typeof WeakMap)return null;var o=new WeakMap,t=new WeakMap;return(s=function(e){return e?t:o})(e)}function p(e,o){if(!o&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=s(o);if(t&&t.has(e))return t.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&Object.prototype.hasOwnProperty.call(e,r)){var a=i?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(n,r,a):n[r]=e[r]}return n.default=e,t&&t.set(e,n),n}function l(e){return e&&e.__esModule?e:{default:e}}const c=async(n,i,r)=>{const a=["!node_modules","!**/node_modules","!.git","!**/.git"];n&&n.length?a.push(...n,t.join(i,"package.json"),t.join(i,"package-lock.json"),t.join(i,"yarn.lock"),t.join(i,"pnpm-lock.yaml"),t.join(i,"shrinkwrap.yaml")):a.push("**");for(const e of["todesktop:beforeInstall","todesktop:afterPack"])r.scripts&&r.scripts[e]&&a.push(t.join(i,r.scripts[e]));const s=a.map(e=>{return(t.isAbsolute(e)?t.relative(i,e):e).replace(/\\/g,"/").replace(/\/+$/,"")}).filter(e=>!e.startsWith("..")&&!e.startsWith("!.."));let p=await(0,e.default)(s,{absolute:!0,cwd:i,dot:!0,followSymbolicLinks:!1,onlyDirectories:!1,onlyFiles:!0,globstar:!0,unique:!0});if("win32"===process.platform&&(p=p.map(e=>e.replace(/\//g,t.sep))),!p||!p.length)throw new Error("No files found to upload");if(!p.filter(e=>e.endsWith(".js")).length)throw new Error(`No .js files found to upload (${p[0]}). There's likely an issue with the appFiles option. Learn more at https://www.npmjs.com/package/@todesktop/cli#appfiles----optional-array-of-glob-patterns. If this is not the case, please contact us.`);{let e=i;if(r.main&&(e=t.join(e,r.main)),o.statSync(e).isDirectory()&&(e=t.join(e,"index.js")),!p.includes(e))throw new Error(`The "main" file specified in your package.json (${r.main?t.relative(i,e):"defaults to index.js"}) is not set to be uploaded to our servers. This is likely due to how you have configured the \`appFiles\` option. Learn more at https://www.npmjs.com/package/@todesktop/cli#appfiles----optional-array-of-glob-patterns. If this is not the case, please contact us.`)}return p.map(e=>({from:e,to:t.join("app",t.relative(i,e))}))};var u=async({appId:e,appPkgJson:o,buildId:s,config:p,onProgress:l})=>{i.default.debug({appId:e,appPkgJson:o,buildId:s,config:p,onProgress:l},"uploadApplicationSource");let u=0;const f=[...await c(p.appFiles,p.appPath,o),...(p.extraContentFiles||[]).map(({from:e,to:o="."})=>({from:e,to:t.join("extraContentFiles",o,t.basename(e))})),...(p.extraResources||[]).map(({from:e,to:o="."})=>({from:e,to:t.join("extraResources",o,t.basename(e))})),{from:p.icon,to:t.join("icons","appIcon"+t.extname(p.icon))}];return p.linux&&p.linux.icon&&f.push({from:p.linux.icon,to:t.join("icons","appIcon-linux"+t.extname(p.linux.icon))}),p.mac&&(p.mac.entitlements&&f.push({from:p.mac.entitlements,to:t.join("other","mac","entitlements.mac.plist")}),p.mac.icon&&f.push({from:p.mac.icon,to:t.join("icons","appIcon-mac"+t.extname(p.mac.icon))})),p.dmg&&p.dmg.background&&f.push({from:p.dmg.background,to:t.join("other","mac","dmg-background.tiff")}),p.windows&&p.windows.icon&&f.push({from:p.windows.icon,to:t.join("icons","appIcon-windows"+t.extname(p.windows.icon))}),(0,r.default)({bucket:p.bucket||void 0,inputStream:await(0,a.default)({files:f,fileSizeLimit:p.uploadSizeLimit,onError:e=>{throw e},onProgress({fs:e}){u=e.totalBytes}}),key:(0,n.default)({appId:e,buildId:s,filenameSuffix:`${o.name}.zip`}),onProgress({loaded:e,total:o}){l(e/o*100,e)}})};exports.default=u;
81
81
  },{"./generateS3Key":"uJzg","./logger":"XvyO","./uploadToS3":"yJCU","./zip":"AV41"}],"QgqX":[function(require,module,exports) {
82
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=a(require("lodash.merge")),t=a(require("path")),r=a(require("./readJson"));function a(e){return e&&e.__esModule?e:{default:e}}function u({config:a}){const u=a.packageJson||{},o=u.extends||"package.json",n=(0,r.default)(t.default.join(a.appPath,o));return(0,e.default)({},n,u)}var o=u;exports.default=o;
82
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("lodash.merge")),n=r(require("path")),t=r(require("./readJson"));function r(e){return e&&e.__esModule?e:{default:e}}function d(e){return Object.keys(e).forEach(n=>{null===e[n]&&delete e[n]}),e}function u(e){const{dependencies:n,devDependencies:t}=e;return n&&(e.dependencies=d(n)),t&&(e.devDependencies=d(t)),e}function o({config:r}){const d=r.packageJson||{},o=d.extends||"package.json",a=(0,t.default)(n.default.join(r.appPath,o));return u((0,e.default)({},a,d))}var a=o;exports.default=a;
83
83
  },{"./readJson":"GCJw"}],"XP8q":[function(require,module,exports) {
84
84
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("pretty-bytes")),r=require("./firestore"),a=n(require("./getVersionControlInfo")),i=n(require("./projectConfig/getProjectConfig")),o=n(require("./logForCI")),t=n(require("./postToFirebaseFunction")),s=n(require("./subscribeToBuild")),p=n(require("./uploadApplicationSource")),d=n(require("./getPackageJson"));function n(e){return e&&e.__esModule?e:{default:e}}var u=async({onEvent:n,shouldCodeSign:u=!0,configPath:l})=>{(0,o.default)("Getting application information...");const g=(0,r.currentUser)().uid,{config:c,unprocessedConfig:f}=(0,i.default)(l),b=c.id,P=(0,d.default)({config:c});let h,m;n("progress",{appId:b,appPkg:P,preparationProgress:.02}),(0,o.default)("Preparing...");try{const e=await(0,t.default)("prepareNewBuild",{appPkgName:P.name,appPkgProductName:P.productName,appVersion:P.version,id:c.id,projectConfig:f,shouldCodeSign:!1!==u,shouldRelease:!1,userId:g,versionControlInfo:await(0,a.default)(c.appPath)});h=e.appData.meta.currentBuildProgress.id;const r=await(0,s.default)({appId:b,buildId:h,onDataReceived:e=>n("progress",{build:e}),userId:e.userId});n("firebase-subscribed",{firebaseUnsubscribe:r})}catch(I){throw I.message=`Failed while preparing new build; ${I.message}`,I}n("progress",{preparationProgress:.05,preparationStageLabel:"Uploading"}),(0,o.default)("Uploading...");try{m=await(0,p.default)({appId:b,appPkgJson:P,buildId:h,config:c,onProgress(r,a){const i={preparationProgress:.05+r/100*.95};a&&(i.preparationUploadedSize=(0,e.default)(a)),n("progress",i)}})}catch(I){throw I.message=`Failed while uploading application source; ${I.message}`,I}n("progress",{isPreparationComplete:!0}),(0,o.default)("Kicking off build...");try{await(0,t.default)("kickOffBuild",{appId:b,appPkgName:P.name,appVersion:P.version,buildId:h,userId:g,sourceArchiveDetails:m})}catch(I){throw I.message=`Failed while kicking off build; ${I.message}`,I}};exports.default=u;
85
85
  },{"./firestore":"gzUX","./getVersionControlInfo":"PvCN","./projectConfig/getProjectConfig":"Sx1d","./logForCI":"Sre8","./postToFirebaseFunction":"I8pf","./subscribeToBuild":"ohCc","./uploadApplicationSource":"Y1TB","./getPackageJson":"QgqX"}],"ONhe":[function(require,module,exports) {
@@ -105,13 +105,13 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
105
105
  },{"./firestore":"gzUX","./logger":"XvyO"}],"thz1":[function(require,module,exports) {
106
106
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("./firestore"));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(t=function(e){return e?a:r})(e)}function r(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=t(r);if(a&&a.has(e))return a.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=o?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,a&&a.set(e,n),n}const a=e=>e.get().then(e=>{const t=[];return e.forEach(e=>t.push(e.data())),t}),n=t=>e.default.collection(`users/${t}/acceptedUsers`),o=async t=>{const{uid:r,email:o}=(0,e.currentUser)(),u={id:r,label:o},i=[u,...(await a(n(r))).map(e=>({id:e.id,label:e.email}))];for(const a of i)try{if((await e.default.doc(`users/${a.id}/applications/${t}`).get()).exists)return a}catch(c){}return u};var u=o;exports.default=u;
107
107
  },{"./firestore":"gzUX"}],"PlpY":[function(require,module,exports) {
108
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=b(require("prop-types")),r=h(require("react")),i=b(require("./BuildProgress")),u=b(require("./ErrorDisplay")),n=b(require("./MainLayout")),a=b(require("../utilities/getLatestBuildId")),d=b(require("../utilities/projectConfig/getProjectConfig")),o=b(require("../utilities/logForCI")),l=b(require("../utilities/shouldExitOnBuildFailure")),s=b(require("../utilities/subscribeToBuild")),f=b(require("../utilities/useExit")),c=b(require("../utilities/findAppUserId"));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(p=function(e){return e?r:t})(e)}function h(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=p(t);if(r&&r.has(e))return r.get(e);var i={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var a=u?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(i,n,a):i[n]=e[n]}return i.default=e,r&&r.set(e,i),i}function b(e){return e&&e.__esModule?e:{default:e}}const y=({commandUsed:t,id:p})=>{const h=(0,f.default)(),[{appId:b,arbitraryMessageComponent:y,build:E,error:g,hasBuildEverFailed:m,isLoading:w},v]=(0,r.useState)({appId:null,arbitraryMessageComponent:null,build:null,error:null,hasBuildEverFailed:!1,isLoading:!0}),q=e=>{const t=e.response?e.response.data:e;(0,o.default)(t),v(e=>({...e,error:t}))};if((0,r.useEffect)(()=>{let t;return async function(){let i;try{i=(0,d.default)().config}catch(o){return void v(e=>({...e,error:o}))}const{id:u}=await(0,c.default)(i.id),n=e=>{(0,s.default)({appId:i.id,buildId:e,onDataReceived:t=>{t||q(new Error(`No such build exists (${e}). Please contact us if this is an error`)),v(e=>({...e,appId:i.id,build:t,isLoading:!1}))},userId:u}).then(e=>{t=e}).catch(q)};p?n(p):(0,a.default)({appId:i.id,userId:u}).catch(q).then(t=>{if(t)return n(t);v(t=>({...t,arbitraryMessageComponent:r.default.createElement(e.Text,null,"There are no builds yet")}))})}(),()=>{t&&t()}},[p]),(0,r.useEffect)(()=>{m&&(0,l.default)(E)&&setTimeout(()=>h(new Error("Build has failed")),10)},[E,h,m]),(0,r.useEffect)(()=>{y&&setTimeout(()=>h(new Error("Validation failed")),10)},[y,h]),g)return r.default.createElement(u.default,{commandUsed:t,error:g});if(y)return y;if(w)return r.default.createElement(e.Text,null,"Loading...");return r.default.createElement(n.default,{appId:b,appName:E.appName,appVersion:E.appVersion,build:E,commandUsed:t,hasBuildEverFailed:m},r.default.createElement(i.default,{build:E,onBuildFailure:()=>{m||v(e=>({...e,hasBuildEverFailed:!0}))}}))};y.propTypes={id:(e,t,r)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${r}'`);const i=typeof e.id;return["string","undefined"].includes(i)?void 0:new Error(`'id' is a '${i}', not a string, in '${r}'.`)},commandUsed:t.default.string.isRequired,shouldViewLatest:(e,t,r)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${r}'`);const i=typeof e.shouldViewLatest;return["boolean","undefined"].includes(i)?void 0:new Error(`'shouldViewLatest' is a '${i}', not a boolean, in '${r}'.`)}};var E=y;exports.default=E;
108
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=g(require("prop-types")),r=h(require("react")),i=g(require("./BuildProgress")),n=g(require("./ErrorDisplay")),u=g(require("./MainLayout")),a=g(require("../utilities/getLatestBuildId")),d=g(require("../utilities/projectConfig/getProjectConfig")),o=g(require("../utilities/logForCI")),l=g(require("../utilities/shouldExitOnBuildFailure")),s=g(require("../utilities/subscribeToBuild")),f=g(require("../utilities/useExit")),c=g(require("../utilities/findAppUserId"));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(p=function(e){return e?r:t})(e)}function h(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=p(t);if(r&&r.has(e))return r.get(e);var i={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=n?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(i,u,a):i[u]=e[u]}return i.default=e,r&&r.set(e,i),i}function g(e){return e&&e.__esModule?e:{default:e}}const b=({commandUsed:t,id:p,configPath:h})=>{const g=(0,f.default)(),[{appId:b,arbitraryMessageComponent:y,build:E,error:m,hasBuildEverFailed:w,isLoading:v},q]=(0,r.useState)({appId:null,arbitraryMessageComponent:null,build:null,error:null,hasBuildEverFailed:!1,isLoading:!0}),L=e=>{const t=e.response?e.response.data:e;(0,o.default)(t),q(e=>({...e,error:t}))};if((0,r.useEffect)(()=>{let t;return async function(){let i;try{i=(0,d.default)(h).config}catch(o){return void q(e=>({...e,error:o}))}const{id:n}=await(0,c.default)(i.id),u=e=>{(0,s.default)({appId:i.id,buildId:e,onDataReceived:t=>{t||L(new Error(`No such build exists (${e}). Please contact us if this is an error`)),q(e=>({...e,appId:i.id,build:t,isLoading:!1}))},userId:n}).then(e=>{t=e}).catch(L)};p?u(p):(0,a.default)({appId:i.id,userId:n}).catch(L).then(t=>{if(t)return u(t);q(t=>({...t,arbitraryMessageComponent:r.default.createElement(e.Text,null,"There are no builds yet")}))})}(),()=>{t&&t()}},[p]),(0,r.useEffect)(()=>{w&&(0,l.default)(E)&&setTimeout(()=>g(new Error("Build has failed")),10)},[E,g,w]),(0,r.useEffect)(()=>{y&&setTimeout(()=>g(new Error("Validation failed")),10)},[y,g]),m)return r.default.createElement(n.default,{commandUsed:t,error:m});if(y)return y;if(v)return r.default.createElement(e.Text,null,"Loading...");return r.default.createElement(u.default,{appId:b,appName:E.appName,appVersion:E.appVersion,build:E,commandUsed:t,hasBuildEverFailed:w},r.default.createElement(i.default,{build:E,onBuildFailure:()=>{w||q(e=>({...e,hasBuildEverFailed:!0}))}}))};b.propTypes={id:(e,t,r)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${r}'`);const i=typeof e.id;return["string","undefined"].includes(i)?void 0:new Error(`'id' is a '${i}', not a string, in '${r}'.`)},commandUsed:t.default.string.isRequired,shouldViewLatest:(e,t,r)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${r}'`);const i=typeof e.shouldViewLatest;return["boolean","undefined"].includes(i)?void 0:new Error(`'shouldViewLatest' is a '${i}', not a boolean, in '${r}'.`)},configPath:t.default.string};var y=b;exports.default=y;
109
109
  },{"./BuildProgress":"odFL","./ErrorDisplay":"f0Jz","./MainLayout":"T5Az","../utilities/getLatestBuildId":"EqTV","../utilities/projectConfig/getProjectConfig":"Sx1d","../utilities/logForCI":"Sre8","../utilities/shouldExitOnBuildFailure":"ONhe","../utilities/subscribeToBuild":"ohCc","../utilities/useExit":"QLfx","../utilities/findAppUserId":"thz1"}],"mzsi":[function(require,module,exports) {
110
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=y(require("ink-select-input")),r=y(require("prop-types")),i=v(require("react")),n=y(require("./CancelBuild")),u=y(require("./CustomSelectInputIndicator")),a=y(require("./CustomSelectInputItem")),l=y(require("./ErrorDisplay")),o=y(require("./ViewBuild")),d=require("../utilities/buildStatus"),s=y(require("../utilities/firestore")),c=y(require("../utilities/projectConfig/getProjectConfig")),f=y(require("../utilities/logger")),p=y(require("../utilities/useInput")),m=y(require("../utilities/useExit")),g=y(require("is-ci")),b=y(require("../utilities/findAppUserId"));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(h=function(e){return e?r:t})(e)}function v(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=h(t);if(r&&r.has(e))return r.get(e);var i={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=n?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(i,u,a):i[u]=e[u]}return i.default=e,r&&r.set(e,i),i}function y(e){return e&&e.__esModule?e:{default:e}}const q=({children:r,commandUsed:h,configPath:v})=>{const{isRawModeSupported:y}=(0,e.useStdin)(),q=(0,p.default)(),E=(0,m.default)(),[{appId:w,builds:C,error:B,isLoading:O,itemChosen:j},x]=(0,i.useState)({appId:null,builds:[],error:null,isLoading:!0,itemChosen:null});if((0,i.useEffect)(()=>{O&&(async()=>{try{const t=(0,c.default)().config.id,{id:r}=await(0,b.default)(t),i=await s.default.doc(`users/${r}/applications/${t}`).collection("builds").orderBy("createdAt","desc").limit(10).get(),n={appId:t,isLoading:!1,builds:[]};if(!i.empty){const e=i.docs[0].data(),t=(0,d.isBuildRunning)(e)&&"preparation"!==e.status;f.default.debug({isRunning:t},"OngoingBuildGuard component: got latest build"),n.builds=i.docs.map(e=>e.data()).filter(e=>!(!(0,d.isBuildRunning)(e)||"preparation"===e.status))}x(e=>({...e,...n}))}catch(e){x(t=>({...t,error:e}))}})()},[C,j,O,y]),y&&q(()=>{}),B)return i.default.createElement(l.default,{commandUsed:h,error:B});if(O)return i.default.createElement(e.Text,null,"...");if(j){f.default.debug({itemChosen:j},"OngoingBuildGuard component: item chosen");const e=C.find(Boolean);if("view"===j.value)return i.default.createElement(o.default,{commandUsed:h,id:e.id});if("cancel"===j.value)return i.default.createElement(n.default,{appId:w,commandUsed:h,id:e.id},r);if("concurrent"===j.value)return i.default.createElement(i.Fragment,null,r);setTimeout(E,10)}if(C.length&&!1===g.default&&y){const r=C.find(Boolean),n=C.length>1,l=[{label:`View ${n?"latest":"it"}`,value:"view"}];C.some(e=>(0,d.isBuildCancellable)(e))&&(l.push({label:`Cancel ${n?"latest":"it"} and start a new build`,value:"cancel"}),l.push({label:"Start a concurrent build",value:"concurrent"})),l.push({label:"Exit",value:"exit"});const o=e=>x(t=>({...t,itemChosen:e}));return i.default.createElement(i.Fragment,null,i.default.createElement(e.Box,{marginBottom:1},i.default.createElement(e.Text,{bold:!0},n?"There are ongoing builds ":"There is an ongoing build "),i.default.createElement(e.Text,null,"(",r.appName,r.appVersion?` v${r.appVersion}`:"",")")),i.default.createElement(t.default,{indicatorComponent:u.default,itemComponent:a.default,items:l,onSelect:o}))}return i.default.createElement(i.Fragment,null,r)};q.propTypes={commandUsed:r.default.string.isRequired,children:r.default.oneOfType([r.default.array,r.default.object]),configPath:r.default.string};var E=q;exports.default=E;
110
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=y(require("ink-select-input")),r=y(require("prop-types")),i=v(require("react")),n=y(require("./CancelBuild")),u=y(require("./CustomSelectInputIndicator")),a=y(require("./CustomSelectInputItem")),l=y(require("./ErrorDisplay")),o=y(require("./ViewBuild")),d=require("../utilities/buildStatus"),s=y(require("../utilities/firestore")),c=y(require("../utilities/projectConfig/getProjectConfig")),f=y(require("../utilities/logger")),p=y(require("../utilities/useInput")),m=y(require("../utilities/useExit")),g=y(require("is-ci")),b=y(require("../utilities/findAppUserId"));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(h=function(e){return e?r:t})(e)}function v(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=h(t);if(r&&r.has(e))return r.get(e);var i={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=n?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(i,u,a):i[u]=e[u]}return i.default=e,r&&r.set(e,i),i}function y(e){return e&&e.__esModule?e:{default:e}}const q=({children:r,commandUsed:h,configPath:v})=>{const{isRawModeSupported:y}=(0,e.useStdin)(),q=(0,p.default)(),E=(0,m.default)(),[{appId:w,builds:C,error:B,isLoading:O,itemChosen:j},x]=(0,i.useState)({appId:null,builds:[],error:null,isLoading:!0,itemChosen:null});if((0,i.useEffect)(()=>{O&&(async()=>{try{const t=(0,c.default)(v).config.id,{id:r}=await(0,b.default)(t),i=await s.default.doc(`users/${r}/applications/${t}`).collection("builds").orderBy("createdAt","desc").limit(10).get(),n={appId:t,isLoading:!1,builds:[]};if(!i.empty){const e=i.docs[0].data(),t=(0,d.isBuildRunning)(e)&&"preparation"!==e.status;f.default.debug({isRunning:t},"OngoingBuildGuard component: got latest build"),n.builds=i.docs.map(e=>e.data()).filter(e=>!(!(0,d.isBuildRunning)(e)||"preparation"===e.status))}x(e=>({...e,...n}))}catch(e){x(t=>({...t,error:e}))}})()},[C,j,O,y]),y&&q(()=>{}),B)return i.default.createElement(l.default,{commandUsed:h,error:B});if(O)return i.default.createElement(e.Text,null,"...");if(j){f.default.debug({itemChosen:j},"OngoingBuildGuard component: item chosen");const e=C.find(Boolean);if("view"===j.value)return i.default.createElement(o.default,{commandUsed:h,id:e.id});if("cancel"===j.value)return i.default.createElement(n.default,{appId:w,commandUsed:h,id:e.id},r);if("concurrent"===j.value)return i.default.createElement(i.Fragment,null,r);setTimeout(E,10)}if(C.length&&!1===g.default&&y){const r=C.find(Boolean),n=C.length>1,l=[{label:`View ${n?"latest":"it"}`,value:"view"}];C.some(e=>(0,d.isBuildCancellable)(e))&&(l.push({label:`Cancel ${n?"latest":"it"} and start a new build`,value:"cancel"}),l.push({label:"Start a concurrent build",value:"concurrent"})),l.push({label:"Exit",value:"exit"});const o=e=>x(t=>({...t,itemChosen:e}));return i.default.createElement(i.Fragment,null,i.default.createElement(e.Box,{marginBottom:1},i.default.createElement(e.Text,{bold:!0},n?"There are ongoing builds ":"There is an ongoing build "),i.default.createElement(e.Text,null,"(",r.appName,r.appVersion?` v${r.appVersion}`:"",")")),i.default.createElement(t.default,{indicatorComponent:u.default,itemComponent:a.default,items:l,onSelect:o}))}return i.default.createElement(i.Fragment,null,r)};q.propTypes={commandUsed:r.default.string.isRequired,children:r.default.oneOfType([r.default.array,r.default.object]),configPath:r.default.string};var E=q;exports.default=E;
111
111
  },{"./CancelBuild":"J4or","./CustomSelectInputIndicator":"OMIR","./CustomSelectInputItem":"oPeF","./ErrorDisplay":"f0Jz","./ViewBuild":"PlpY","../utilities/buildStatus":"in6t","../utilities/firestore":"gzUX","../utilities/projectConfig/getProjectConfig":"Sx1d","../utilities/logger":"XvyO","../utilities/useInput":"CLRu","../utilities/useExit":"QLfx","../utilities/findAppUserId":"thz1"}],"AYMC":[function(require,module,exports) {
112
112
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=i(require("chalk")),t=i(require("is-installed-globally")),o=i(require("latest-version")),r=i(require("pkg-up")),s=i(require("semver"));function i(e){return e&&e.__esModule?e:{default:e}}var l=()=>{if(process.env.AVA_PATH)return;const i=require(r.default.sync({cwd:__dirname}));(0,o.default)(i.name).then(o=>{if(s.default.gt(o,i.version)){const r=e.default.greenBright(`npm install ${t.default?"--location=global":"--save-dev"} @todesktop/cli`);console.log(`Your version of @todesktop/cli is out of date.\nRun ${r} to update to v${o}.`),s.default.satisfies(o,`^${i.version}`)||(console.log("CLI is exiting because it is out out of date."),process.exit(1))}})};exports.default=l;
113
113
  },{}],"EHrm":[function(require,module,exports) {
114
- module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"1.3.0",license:"MIT",author:"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",homepage:"https://todesktop.com/cli",bugs:{email:"dave@todesktop.com"},bin:{todesktop:"./build/cli.js"},engines:{node:">=12"},scripts:{dev:"cp-cli dev.env .env && pastel dev","dev:prod":"cp-cli prod.env .env && pastel dev",build:"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\/boot@.\\/boot@g' build/cli.js","build:dev":"cross-env NODE_ENV=development pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\/boot@.\\/boot@g' build/cli.js",lint:"eslint .","lint--fix":"eslint . --fix",release:"npm run build && npx np --tag=latest","release-beta":"npm run build && npx np --any-branch --no-tests --tag=beta",test:"npm run build && ava","test--watch":"npm test -- --watch"},files:["build","docs",".env","LICENSE","README.md"],dependencies:{"@babel/runtime":"^7.18.9","@sentry/node":"^5.27.2",ajv:"^6.12.6","analytics-node":"^4.0.1",archiver:"^5.2.0",axios:"^0.21.1","better-ajv-errors":"^1.2.0",blacklist:"^1.1.4",bunyan:"^1.8.14","camelcase-keys":"^5.2.0",chalk:"^4.1.0",conf:"^7.1.2","date-fns":"^2.28.0",decamelize:"^1.2.0",del:"^6.0.0",dotenv:"^8.2.0",du:"^1.0.0","email-regex":"^4.0.0","fast-glob":"^3.2.4","final-form":"^4.20.1","find-up":"^5.0.0",firebase:"^7.24.0","git-rev-sync":"^3.0.2",ink:"^3.2.0","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-select-input":"^4.2.1","ink-text-input":"^4.0.1","is-ci":"^3.0.1","is-installed-globally":"^0.3.2","latest-version":"^5.1.0","lodash.merge":"^4.6.2","lodash.throttle":"^4.1.1","parse-author":"^2.0.0","pkg-up":"^3.1.0","pretty-bytes":"^5.4.1","prop-types":"^15.7.2",react:"^17.0.2","react-final-form":"^6.5.1",semver:"^7.3.2","stream-to-array":"^2.3.0",superagent:"^7.1.3",uuid:"^8.3.1","xdg-basedir":"^4.0.0",yargs:"^15.4.1"},devDependencies:{"@ava/babel":"^1.0.1","@babel/core":"^7.12.3","@babel/plugin-transform-runtime":"^7.12.1","@babel/preset-env":"^7.11.5","@babel/register":"^7.12.1","@types/bunyan":"^1.8.6",ava:"^4.3.1","babel-preset-es2015":"^6.24.1","cp-cli":"^2.0.0","cross-env":"^7.0.2",eslint:"^7.6.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.21.4","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-standard":"^4.0.1",execa:"^4.0.3","extract-zip":"^2.0.1","fs-extra":"^9.0.1",husky:"^4.3.0","lint-staged":"^10.2.11",pastel:"^1.1.1",prettier:"^2.1.2",proxyquire:"^2.1.3",sinon:"^9.0.3"},ava:{files:["test/**/*.js","!test/fixtures/**/*","!test/utilities/**/*"],require:["@babel/register"],timeout:"10m"},"lint-staged":{"**/*.js":["eslint . --fix","git add"]},husky:{hooks:{"pre-commit":"lint-staged"}},overrides:{pastel:{"parcel-bundler":{deasync:"0.1.27"}}},resolutions:{"pastel/parcel-bundler/deasync":"0.1.24",ink:"3.2.0",react:"17.0.2"},packageExtensions:{"ink-progress-bar@*":{dependencies:{react:"*",ink:"*"}}}};
114
+ module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"1.4.1",license:"MIT",author:"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",homepage:"https://todesktop.com/cli",bugs:{email:"dave@todesktop.com"},bin:{todesktop:"./build/cli.js"},engines:{node:">=12"},scripts:{dev:"cp-cli dev.env .env && pastel dev","dev:prod":"cp-cli prod.env .env && pastel dev",build:"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\/boot@.\\/boot@g' build/cli.js","build:dev":"cross-env NODE_ENV=development pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\/boot@.\\/boot@g' build/cli.js",lint:"eslint .","lint--fix":"eslint . --fix",release:"npm run build && npx np --tag=latest","release-beta":"npm run build && npx np --any-branch --no-tests --tag=beta",test:"npm run build && ava","test--watch":"npm test -- --watch"},files:["build","docs",".env","LICENSE","README.md"],dependencies:{"@babel/runtime":"^7.18.9","@sentry/node":"^5.27.2",ajv:"^6.12.6","analytics-node":"^4.0.1",archiver:"^5.2.0",axios:"^0.21.1","better-ajv-errors":"^1.2.0",blacklist:"^1.1.4",bunyan:"^1.8.14","camelcase-keys":"^5.2.0",chalk:"^4.1.0",conf:"^7.1.2","date-fns":"^2.28.0",decamelize:"^1.2.0",del:"^6.0.0",dotenv:"^8.2.0",du:"^1.0.0","email-regex":"^4.0.0","fast-glob":"^3.2.4","final-form":"^4.20.1","find-up":"^5.0.0",firebase:"^7.24.0","git-rev-sync":"^3.0.2",ink:"^3.2.0","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-select-input":"^4.2.1","ink-text-input":"^4.0.1","is-ci":"^3.0.1","is-installed-globally":"^0.3.2","latest-version":"^5.1.0","lodash.merge":"^4.6.2","lodash.throttle":"^4.1.1","parse-author":"^2.0.0","pkg-up":"^3.1.0","pretty-bytes":"^5.4.1","prop-types":"^15.7.2",react:"^17.0.2","react-final-form":"^6.5.1",semver:"^7.3.2","stream-to-array":"^2.3.0",superagent:"^7.1.3",uuid:"^8.3.1","xdg-basedir":"^4.0.0",yargs:"^15.4.1"},devDependencies:{"@ava/babel":"^1.0.1","@babel/core":"^7.12.3","@babel/plugin-transform-runtime":"^7.12.1","@babel/preset-env":"^7.11.5","@babel/register":"^7.12.1","@types/bunyan":"^1.8.6",ava:"^4.3.1","babel-preset-es2015":"^6.24.1","cp-cli":"^2.0.0","cross-env":"^7.0.2",eslint:"^7.6.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.21.4","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-standard":"^4.0.1",execa:"^4.0.3","extract-zip":"^2.0.1","fs-extra":"^9.0.1",husky:"^4.3.0","lint-staged":"^10.2.11",pastel:"^1.1.1",prettier:"^2.1.2",proxyquire:"^2.1.3",sinon:"^9.0.3"},ava:{files:["test/**/*.js","!test/fixtures/**/*","!test/utilities/**/*"],require:["@babel/register"],timeout:"10m"},"lint-staged":{"**/*.js":["eslint . --fix","git add"]},husky:{hooks:{"pre-commit":"lint-staged"}},overrides:{pastel:{"parcel-bundler":{deasync:"0.1.27"}}},resolutions:{"pastel/parcel-bundler/deasync":"0.1.24",ink:"3.2.0",react:"17.0.2"},packageExtensions:{"ink-progress-bar@*":{dependencies:{react:"*",ink:"*"}}}};
115
115
  },{}],"SYaU":[function(require,module,exports) {
116
116
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=c(require("@sentry/node")),t=u(require("os")),r=u(require("../../package.json")),n=require("../utilities/configStore"),o=u(require("../utilities/projectConfig/getProjectConfig")),a=u(require("path")),i=u(require("./getEnvironmentVariables"));function u(e){return e&&e.__esModule?e:{default:e}}function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}function c(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}var f=()=>{const{TODESKTOP_CLI_SENTRY_DSN:a}=(0,i.default)();a&&(e.init({dsn:a}),e.configureScope(e=>{try{e.setUser({email:(0,n.getAuthConfig)().email})}catch(a){}try{e.setContext("os",{name:t.default.platform(),version:t.default.release()})}catch(a){}try{e.setContext("runtime",{name:"Node.js",version:process.version})}catch(a){}try{e.setContext("app",{app_name:r.default.name,app_version:r.default.version})}catch(a){}try{const t=(0,o.default)();e.setExtra("config",t)}catch(a){}}))};exports.default=f;
117
117
  },{"../../package.json":"EHrm","../utilities/configStore":"ffKF","../utilities/projectConfig/getProjectConfig":"Sx1d","./getEnvironmentVariables":"gwcX"}],"rPNZ":[function(require,module,exports) {