@todesktop/cli 0.28.0 → 1.1.0

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
@@ -11,7 +11,9 @@ For more information, visit the project [landing page](https://www.todesktop.com
11
11
  - [CLI commands](#cli-commands)
12
12
  - [Automating your builds (CI)](#automating-your-builds-ci)
13
13
  - [Project configuration (todesktop.json)](#project-configuration-todesktopjson)
14
+ - [Build lifecycle hooks (package.json scripts)](#build-lifecycle-hooks-packagejson-scripts)
14
15
  - [App package.json requirements](#packagejson-requirements)
16
+ - [Changelog](#changelog)
15
17
 
16
18
  ## Installation
17
19
 
@@ -176,6 +178,8 @@ The following are always included if they exist:
176
178
  - `/package.json`
177
179
  - `/package-lock.json`
178
180
  - `/yarn.lock`
181
+ - `/pnpm-lock.yaml`
182
+ - `/shrinkwrap.yaml`
179
183
 
180
184
  #### Pattern syntax
181
185
 
@@ -645,6 +649,86 @@ Default: The root [`icon`](#icon---string) is used.
645
649
 
646
650
  The path to your application's Windows desktop icon. It must be an ICO, ICNS, or PNG.
647
651
 
652
+ ## Build lifecycle hooks (package.json scripts)
653
+
654
+ Sometimes you want to do something before or during the build process. For example, you might want to run a script before the build starts, or you might want to run a script after the files have been packaged. Our lifecycle hooks provide a way to do this.
655
+
656
+ To specify a script, add a `scripts` property to your `package.json` file. The key is the name of the script (prefixed by `todesktop:`), and the value is the path to the script.
657
+
658
+ ```json
659
+ {
660
+ "scripts": {
661
+ "todesktop:beforeInstall": "./scripts/beforeInstall.js",
662
+ "todesktop:afterPack": "./scripts/afterPack.js"
663
+ }
664
+ }
665
+ ```
666
+
667
+ When writing your script, you can follow this template:
668
+
669
+ ```js
670
+ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
671
+ /**
672
+ * pkgJsonPath - string - path to the package.json file
673
+ * pkgJson - object - the parsed package.json file
674
+ * appDir - string - the path to the app directory
675
+ * hookName - string - the name of the hook ("todesktop:beforeInstall" or "todesktop:afterPack")
676
+ */
677
+ };
678
+ ```
679
+
680
+ ### `todesktop:beforeInstall` - (optional) path to script
681
+
682
+ Example: `./scripts/beforeInstall.js`.
683
+
684
+ The path to a script that will be run before the build starts.
685
+
686
+ Example script:
687
+
688
+ ```js
689
+ const { writeFile } = require("fs/promises");
690
+
691
+ // Delete `internal` dependency from package.json
692
+ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
693
+ delete pkgJson.dependencies["internal"];
694
+ await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
695
+ };
696
+ ```
697
+
698
+ ### `todesktop:afterPack` - (optional) path to script
699
+
700
+ Example: `./scripts/afterPack.js`.
701
+
702
+ The path to a script that will be run after the app has been packed (but _before_ it has been transformed into a distributable installer format and signed).
703
+
704
+ The `afterPack` function also has the following arguments added to it's signature:
705
+
706
+ - appPkgName - string - the name of the app package
707
+ - appId - string - the app id
708
+ - shouldCodeSign - boolean - whether the app will be code signed or not
709
+ - outDir - string - the path to the output directory
710
+ - appOutDir - string - the path to the app output directory
711
+ - arch - string - the architecture of the app
712
+ - packager - object - the packager object
713
+
714
+ Example script:
715
+
716
+ ```js
717
+ const { writeFile } = require("fs/promises");
718
+
719
+ // Add a copyright file inside of the app directory on Mac only
720
+ module.exports = async ({ appOutDir, packager }) => {
721
+ if (os.platform() === "darwin") {
722
+ const appName = packager.appInfo.productFilename;
723
+ const appPath = path.join(`${appOutDir}`, `${APP_NAME}.app`);
724
+ await writeFile(
725
+ path.join(appPath, "copyright.txt"),
726
+ `Copyright © ${new Date().getFullYear()} ${APP_NAME}`
727
+ );
728
+ }
729
+ };
730
+ ```
731
+
648
732
  ## App package.json requirements
649
733
 
650
734
  - Electron must be in your `devDependencies` and it must be a fixed version. I.e. it doesn't start with `^` or `~`.
@@ -672,3 +756,16 @@ To summarize:
672
756
  ```
673
757
 
674
758
  Note: **Do not put a token in this file**. You are specifying a literal value of `${NPM_TOKEN}`. NPM will replace the value for you. 5. Add `.npmrc` to your `appFiles` array `[".npmrc"]` in `todesktop.json`.
759
+
760
+ ## Changelog
761
+
762
+ ### v1.1.0
763
+
764
+ - Add support for `beforeInstall` and `afterPack` hooks.
765
+
766
+ ### v1.0.0
767
+
768
+ - Feature: Support multiple concurrent builds
769
+ - Enhancement: Switched to presigned uploads (removes AWS dependency)
770
+ - Fix: Fixed package resolution for Ink
771
+ - Add PNPM support
@@ -11,7 +11,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
11
11
  },{}],"QfeP":[function(require,module,exports) {
12
12
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("pkg-up"));function r(e){return e&&e.__esModule?e:{default:e}}const t=require(e.default.sync({cwd:__dirname})).version;var u=()=>t;exports.default=u;
13
13
  },{}],"ALju":[function(require,module,exports) {
14
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.track=exports.identify=exports.flush=exports.ANALYTICS_EVENT=void 0;var e=u(require("@babel/runtime/helpers/defineProperty")),r=u(require("os")),t=require("uuid"),n=u(require("analytics-node")),o=u(require("./getEnvironmentVariables")),i=require("./firestore"),s=require("./configStore"),c=u(require("./getCliVersion"));function u(e){return e&&e.__esModule?e:{default:e}}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function l(r){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach(function(t){(0,e.default)(r,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))})}return r}const f=(0,o.default)(),p=new n.default(f.SEGMENT_WRITE_KEY,{flushAt:1,flushInterval:1}),d={CLI_COMMAND:"CLI Command"};function y(){let e={client:"cli"};try{e.os={name:r.default.platform(),version:r.default.release()}}catch(t){}try{e.user={email:(0,s.getAuthConfig)().email}}catch(t){}try{e.app={cliVersion:(0,c.default)()}}catch(t){}try{e.runtime={name:"Node.js",version:process.version}}catch(t){}return e}exports.ANALYTICS_EVENT=d;const O=(0,t.v4)(),b=(e,r={},t=(()=>{}))=>{try{const o=(0,i.currentUser)();p.track({event:e,userId:o?o.uid:void 0,anonymousId:O,properties:l(l({},r),y())},t)}catch(n){}};exports.track=b;const h=(e,r={},t=(()=>{}))=>{try{p.identify({userId:e,anonymousId:O,traits:r},t)}catch(n){}};exports.identify=h;const m=(e=(()=>{}))=>p.flush(e);exports.flush=m;
14
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.track=exports.identify=exports.flush=exports.ANALYTICS_EVENT=void 0;var e=u(require("os")),t=require("uuid"),r=u(require("analytics-node")),s=u(require("./getEnvironmentVariables")),o=require("./firestore"),i=require("./configStore"),n=u(require("./getCliVersion"));function u(e){return e&&e.__esModule?e:{default:e}}const a=(0,s.default)(),c=new r.default(a.SEGMENT_WRITE_KEY,{flushAt:1,flushInterval:1}),l={CLI_COMMAND:"CLI Command"};function d(){let t={client:"cli"};try{t.os={name:e.default.platform(),version:e.default.release()}}catch(r){}try{t.user={email:(0,i.getAuthConfig)().email}}catch(r){}try{t.app={cliVersion:(0,n.default)()}}catch(r){}try{t.runtime={name:"Node.js",version:process.version}}catch(r){}return t}exports.ANALYTICS_EVENT=l;const f=(0,t.v4)(),p=(e,t={},r=(()=>{}))=>{try{const i=(0,o.currentUser)();c.track({event:e,userId:i?i.uid:void 0,anonymousId:f,properties:{...t,...d()}},r)}catch(s){}};exports.track=p;const y=(e,t={},r=(()=>{}))=>{try{c.identify({userId:e,anonymousId:f,traits:t},r)}catch(s){}};exports.identify=y;const h=(e=(()=>{}))=>c.flush(e);exports.flush=h;
15
15
  },{"./getEnvironmentVariables":"gwcX","./firestore":"gzUX","./configStore":"ffKF","./getCliVersion":"QfeP"}],"QLfx":[function(require,module,exports) {
16
16
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),r=require("./analytics"),t=i(require("./firestore")),u=i(require("./logger"));function i(e){return e&&e.__esModule?e:{default:e}}var o=()=>{const{exit:i}=(0,e.useApp)();return e=>{let o;u.default.debug({error:e},"Exit called"),t.default.terminate().catch(e=>u.default.error(e)),Promise.race([new Promise(e=>(0,r.flush)(()=>e())),new Promise(e=>o=setTimeout(()=>e(),1e3))]).catch(()=>{}).finally(()=>{clearTimeout(o);try{i()}catch(r){u.default.error(r)}setTimeout(()=>process.exit(e?1:0),10)})}};exports.default=o;
17
17
  },{"./analytics":"ALju","./firestore":"gzUX","./logger":"XvyO"}],"nKi2":[function(require,module,exports) {
@@ -21,7 +21,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
21
21
  },{}],"in6t":[function(require,module,exports) {
22
22
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPlatformBuildRunning=exports.isBuildRunning=exports.isBuildCancellable=exports.hasBuildKickedOff=void 0;const s=s=>!!s&&(s.status&&"preparation"!==s.status);exports.hasBuildKickedOff=s;const e=e=>s(e)&&t(e);exports.isBuildCancellable=e;const t=s=>!!s&&(!["cancelled","succeeded"].includes(s.status)&&["linux","mac","windows"].some(e=>i(s[e])));exports.isBuildRunning=t;const i=s=>!!s&&(!s.shouldSkip&&!["cancelled","succeeded"].includes(s.status)&&("failed"!==s.status||s.numberOfAttemptedBuilds<2));exports.isPlatformBuildRunning=i;
23
23
  },{}],"odFL":[function(require,module,exports) {
24
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=p(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=p(require("prop-types")),i=d(require("react")),u=p(require("lodash.throttle")),l=p(require("./BuildCompleteMessage")),a=p(require("./PlatformProgress")),n=require("../utilities/buildStatus"),o=p(require("../utilities/logger")),s=p(require("../utilities/logForCI")),c=p(require("../utilities/useExit"));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}function d(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var i={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=u?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(i,l,a):i[l]=e[l]}return i.default=e,r&&r.set(e,i),i}function p(e){return e&&e.__esModule?e:{default:e}}function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function g(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?y(Object(i),!0).forEach(function(r){(0,e.default)(t,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):y(Object(i)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))})}return t}const O=(0,u.default)(s.default,6e4,{trailing:!0}),b=({build:e,onBuildFailure:r})=>{o.default.debug("BuildProgress component: render");const u=(0,c.default)(),[{hasKickedOff:s},f]=(0,i.useState)({hasKickedOff:!1}),d=["windows","mac","linux"].filter(t=>!e[t].shouldSkip);return(0,i.useEffect)(()=>{f(t=>g(g({},t),{},{hasKickedOff:(0,n.hasBuildKickedOff)(e)}))},[e]),(0,i.useEffect)(()=>{if("failed"===e.status)r(e.errorMessage);else if("cancelled"===e.status)setTimeout(u,10);else{const t=d.map(t=>`${t.charAt(0).toUpperCase()+t.slice(1)}: ${e[t].progressActivityName} (${e[t].progressPercentage}%)`);O(t.join(", "))}},[e,u,r,d]),"succeeded"===e.status?i.default.createElement(l.default,{build:e}):"cancelled"===e.status?i.default.createElement(t.Box,{flexDirection:"column",marginBottom:1},i.default.createElement(t.Text,null,"Build cancelled")):s?i.default.createElement(i.Fragment,null,i.default.createElement(t.Box,{flexDirection:"column"},d.map(r=>i.default.createElement(t.Box,{flexDirection:"column",key:r},i.default.createElement(a.default,{activityName:"failed"===e[r].status?e[r].errorMessage:e[r].progressActivityName,activityType:"failed"===e[r].status?"error":e[r].progressActivityType,downloadUrl:e[r].standardDownloadUrl,percent:e[r].progressPercentage,platform:r,shouldShowReadyPrefix:!(e&&["failed","succeeded"].includes(e.status))}))))):null};b.propTypes={build:r.default.object.isRequired,onBuildFailure:r.default.func.isRequired};var m=b;exports.default=m;
24
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=f(require("prop-types")),r=c(require("react")),u=f(require("lodash.throttle")),l=f(require("./BuildCompleteMessage")),i=f(require("./PlatformProgress")),a=require("../utilities/buildStatus"),s=f(require("../utilities/logger")),o=f(require("../utilities/logForCI")),n=f(require("../utilities/useExit"));function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=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=d(t);if(r&&r.has(e))return r.get(e);var u={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var a=l?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(u,i,a):u[i]=e[i]}return u.default=e,r&&r.set(e,u),u}function f(e){return e&&e.__esModule?e:{default:e}}const p=(0,u.default)(o.default,6e4,{trailing:!0}),m=({build:t,onBuildFailure:u})=>{s.default.debug("BuildProgress component: render");const o=(0,n.default)(),[{hasKickedOff:d},c]=(0,r.useState)({hasKickedOff:!1}),f=["windows","mac","linux"].filter(e=>!t[e].shouldSkip);return(0,r.useEffect)(()=>{c(e=>({...e,hasKickedOff:(0,a.hasBuildKickedOff)(t)}))},[t]),(0,r.useEffect)(()=>{if("failed"===t.status)u(t.errorMessage);else if("cancelled"===t.status)setTimeout(o,10);else{const e=f.map(e=>`${e.charAt(0).toUpperCase()+e.slice(1)}: ${t[e].progressActivityName} (${t[e].progressPercentage}%)`);p(e.join(", "))}},[t,o,u,f]),"succeeded"===t.status?r.default.createElement(l.default,{build:t}):"cancelled"===t.status?r.default.createElement(e.Box,{flexDirection:"column",marginBottom:1},r.default.createElement(e.Text,null,"Build cancelled")):d?r.default.createElement(r.Fragment,null,r.default.createElement(e.Box,{flexDirection:"column"},f.map(u=>r.default.createElement(e.Box,{flexDirection:"column",key:u},r.default.createElement(i.default,{activityName:"failed"===t[u].status?t[u].errorMessage:t[u].progressActivityName,activityType:"failed"===t[u].status?"error":t[u].progressActivityType,downloadUrl:t[u].standardDownloadUrl,percent:t[u].progressPercentage,platform:u,shouldShowReadyPrefix:!(t&&["failed","succeeded"].includes(t.status))}))))):null};m.propTypes={build:t.default.object.isRequired,onBuildFailure:t.default.func.isRequired};var g=m;exports.default=g;
25
25
  },{"./BuildCompleteMessage":"nKi2","./PlatformProgress":"WIKr","../utilities/buildStatus":"in6t","../utilities/logger":"XvyO","../utilities/logForCI":"Sre8","../utilities/useExit":"QLfx"}],"f0Jz":[function(require,module,exports) {
26
26
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=i(require("prop-types")),r=a(require("react")),o=i(require("../utilities/getCliVersion")),l=i(require("../utilities/logger")),u=i(require("../utilities/useExit"));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function a(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=l?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(o,u,a):o[u]=e[u]}return o.default=e,r&&r.set(e,o),o}function i(e){return e&&e.__esModule?e:{default:e}}const c=({commandUsed:t,error:n})=>{const a=(0,u.default)();return l.default.error({error:n}),(0,r.useEffect)(()=>{n&&setTimeout(()=>a(n),10)},[a,n]),r.default.createElement(r.Fragment,null,r.default.createElement(e.Text,{backgroundColor:"red",color:"white"}," ","ERROR"," "),r.default.createElement(e.Text,null,n.message||n.stack||n.toString()),r.default.createElement(e.Box,{flexDirection:"column",marginTop:1},t?r.default.createElement(e.Text,{dimColor:!0,color:"gray"},"Command: ",t):null,r.default.createElement(e.Text,{dimColor:!0,color:"gray"},"@todesktop/cli: ",(0,o.default)()),r.default.createElement(e.Text,{dimColor:!0,color:"gray"},"Node: ",process.version),r.default.createElement(e.Text,{dimColor:!0,color:"gray"},"cwd: ",process.cwd())))};c.propTypes={commandUsed:t.default.string,error:t.default.object.isRequired};var d=c;exports.default=d;
27
27
  },{"../utilities/getCliVersion":"QfeP","../utilities/logger":"XvyO","../utilities/useExit":"QLfx"}],"Vv6P":[function(require,module,exports) {
@@ -33,7 +33,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
33
33
  },{}],"koRC":[function(require,module,exports) {
34
34
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("firebase/app"));require("firebase/functions");var t=r(require("./getEnvironmentVariables"));function r(e){return e&&e.__esModule?e:{default:e}}function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function u(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,r&&r.set(e,u),u}"development"===(0,t.default)().TODESKTOP_CLI_ENV&&e.functions().useFunctionsEmulator("http://localhost:5000");var o=t=>e.functions().httpsCallable(t);exports.default=o;
35
35
  },{"./getEnvironmentVariables":"gwcX"}],"J4or":[function(require,module,exports) {
36
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=s(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=s(require("prop-types")),n=c(require("react")),l=s(require("./ErrorDisplay")),a=s(require("../utilities/getCallableFirebaseFunction")),u=s(require("../utilities/logForCI")),i=s(require("../utilities/logger")),o=s(require("../utilities/useExit"));function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=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=d(t);if(r&&r.has(e))return r.get(e);var n={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=l?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(n,a,u):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}function s(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function f(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?p(Object(n),!0).forEach(function(r){(0,e.default)(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}const b=(0,a.default)("cancelBuild"),g=({appId:e,children:r,commandUsed:a,id:d})=>{i.default.debug({appId:e,buildId:d},"CancelBuild component: render");const c=(0,o.default)(),[{arbitraryMessageComponent:s,error:p,hasCompleted:g,hasStarted:m},y]=(0,n.useState)({arbitraryMessageComponent:null,error:null,hasCompleted:!1,hasStarted:!1});return(0,n.useEffect)(()=>{g||m||(y(e=>f(f({},e),{},{hasStarted:!0})),(0,u.default)("Cancelling build..."),b({appId:e,buildId:d}).then(t=>{i.default.debug({appId:e,buildId:d,result:t},"CancelBuild component: cancellation request complete"),y(e=>f(f({},e),{},{hasCompleted:!0}))}).catch(r=>{i.default.debug({appId:e,buildId:d,code:r.code},"CancelBuild component: cancellation request failed"),i.default.error(r);let l={hasCompleted:!0};"internal"===r.code?l.error=r:l.arbitraryMessageComponent=n.default.createElement(t.Text,null,n.default.createElement(t.Text,{color:"red"},"Cannot cancel build (",d,").")," ",r.message),y(e=>f(f({},e),l))}))},[e,d,m,g]),(0,n.useEffect)(()=>{g&&!r&&(i.default.debug("CancelBuild component: exiting now that build is cancelled"),c())},[r,c,g]),p?(p.message=`Failed to cancel build (${d}). ${p.message}`,n.default.createElement(l.default,{commandUsed:a,error:p})):s||(g?r?n.default.createElement(n.Fragment,null,r):n.default.createElement(t.Text,null,"Build cancelled"):n.default.createElement(t.Text,null,"Cancelling build (",d,")..."))};g.propTypes={appId:r.default.string.isRequired,children:r.default.object,commandUsed:r.default.string.isRequired,id:r.default.string.isRequired};var m=g;exports.default=m;
36
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=c(require("prop-types")),r=o(require("react")),l=c(require("./ErrorDisplay")),a=c(require("../utilities/getCallableFirebaseFunction")),n=c(require("../utilities/logForCI")),u=c(require("../utilities/logger")),d=c(require("../utilities/useExit"));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var l={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var u=a?Object.getOwnPropertyDescriptor(e,n):null;u&&(u.get||u.set)?Object.defineProperty(l,n,u):l[n]=e[n]}return l.default=e,r&&r.set(e,l),l}function c(e){return e&&e.__esModule?e:{default:e}}const s=(0,a.default)("cancelBuild"),p=({appId:t,children:a,commandUsed:i,id:o})=>{u.default.debug({appId:t,buildId:o},"CancelBuild component: render");const c=(0,d.default)(),[{arbitraryMessageComponent:p,error:f,hasCompleted:m,hasStarted:b},g]=(0,r.useState)({arbitraryMessageComponent:null,error:null,hasCompleted:!1,hasStarted:!1});return(0,r.useEffect)(()=>{m||b||(g(e=>({...e,hasStarted:!0})),(0,n.default)("Cancelling build..."),s({appId:t,buildId:o}).then(e=>{u.default.debug({appId:t,buildId:o,result:e},"CancelBuild component: cancellation request complete"),g(e=>({...e,hasCompleted:!0}))}).catch(l=>{u.default.debug({appId:t,buildId:o,code:l.code},"CancelBuild component: cancellation request failed"),u.default.error(l);let a={hasCompleted:!0};"internal"===l.code?a.error=l:a.arbitraryMessageComponent=r.default.createElement(e.Text,null,r.default.createElement(e.Text,{color:"red"},"Cannot cancel build (",o,").")," ",l.message),g(e=>({...e,...a}))}))},[t,o,b,m]),(0,r.useEffect)(()=>{m&&!a&&(u.default.debug("CancelBuild component: exiting now that build is cancelled"),c())},[a,c,m]),f?(f.message=`Failed to cancel build (${o}). ${f.message}`,r.default.createElement(l.default,{commandUsed:i,error:f})):p||(m?a?r.default.createElement(r.Fragment,null,a):r.default.createElement(e.Text,null,"Build cancelled"):r.default.createElement(e.Text,null,"Cancelling build (",o,")..."))};p.propTypes={appId:t.default.string.isRequired,children:t.default.object,commandUsed:t.default.string.isRequired,id:t.default.string.isRequired};var f=p;exports.default=f;
37
37
  },{"./ErrorDisplay":"f0Jz","../utilities/getCallableFirebaseFunction":"koRC","../utilities/logForCI":"Sre8","../utilities/logger":"XvyO","../utilities/useExit":"QLfx"}],"lWRR":[function(require,module,exports) {
38
38
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),l=u(require("ink-link")),t=u(require("prop-types")),r=u(require("react"));function u(e){return e&&e.__esModule?e:{default:e}}const a=({hasBuildFailed:t,shouldShowCancelBuildInstructions:u,uiUrl:a})=>{if(!a)return null;let o;return t&&(o=r.default.createElement(e.Text,{color:"red"},"An error has occurred. ")),r.default.createElement(e.Box,{flexDirection:"column"},r.default.createElement(e.Box,{flexDirection:"column"},r.default.createElement(e.Text,{bold:!0},o,"See web UI for more information: "),r.default.createElement(e.Text,null,r.default.createElement(l.default,{fallback:!1,url:a},a))),u?r.default.createElement(e.Text,{color:"gray"},r.default.createElement(e.Text,{bold:!0},"[esc]:")," cancel build"):null)};a.propTypes={hasBuildFailed:t.default.bool,shouldShowCancelBuildInstructions:t.default.bool,uiUrl:t.default.string};var o=a;exports.default=o;
39
39
  },{}],"XT2G":[function(require,module,exports) {
@@ -41,19 +41,19 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
41
41
  },{}],"CLRu":[function(require,module,exports) {
42
42
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("is-ci")),t=require("ink"),r=u(require("./useExit"));function u(e){return e&&e.__esModule?e:{default:e}}let o=!1,s=[];const n=(e,t)=>{let r=String(e),u=!1;r<=""&&"\r"!==r&&(r=String.fromCharCode(r.charCodeAt(0)+"a".charCodeAt(0)-1),u=!0),u&&"c"===r&&(s.forEach(e=>e()),setTimeout(t,10))};var d=()=>{if(e.default)return()=>()=>{};const u=(0,r.default)(),{stdin:d}=(0,t.useStdin)();return(e,r,a={})=>{const i=e=>n(e,u);a.onCtrlCPressed&&s.push(a.onCtrlCPressed),o||(o=!0,d.on("data",i));let l=(0,t.useInput)(e,r);return()=>{o&&d.off("data",i),l&&l()}}};exports.default=d;
43
43
  },{"./useExit":"QLfx"}],"T5Az":[function(require,module,exports) {
44
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=p(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=p(require("is-ci")),l=p(require("prop-types")),n=f(require("react")),u=p(require("./CancelBuild")),a=p(require("./Footer")),i=p(require("./Header")),d=require("../utilities/buildStatus"),o=p(require("../utilities/logger")),c=p(require("../utilities/useInput"));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 f(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 l={},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(l,u,a):l[u]=e[u]}return l.default=e,r&&r.set(e,l),l}function p(e){return e&&e.__esModule?e:{default:e}}function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,l)}return r}function m(t){for(var r=1;r<arguments.length;r++){var l=null!=arguments[r]?arguments[r]:{};r%2?b(Object(l),!0).forEach(function(r){(0,e.default)(t,r,l[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(l)):b(Object(l)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(l,e))})}return t}const y=({appId:e,appName:l,appVersion:s,build:f,children:p,commandUsed:b,hasBuildFailed:y})=>{o.default.debug("MainLayout component: render");const O=(0,c.default)(),[{canCancelBuild:g,hasKickedOff:h,isCancellingBuild:j,wasCtrlCPressed:P},w]=(0,n.useState)({canCancelBuild:null,hasKickedOff:!1,isCancellingBuild:!1,wasCtrlCPressed:!1});return(0,n.useEffect)(()=>{w(e=>m(m({},e),{},{hasKickedOff:(0,d.hasBuildKickedOff)(f)}))},[f]),(0,n.useEffect)(()=>{w(e=>m(m({},e),{},{canCancelBuild:!r.default&&!j&&(0,d.isBuildCancellable)(f)}))},[f,j]),O(async(e,t)=>{t.escape&&g&&(o.default.debug("MainLayout component: esc pressed, cancelling build"),w(e=>m(m({},e),{},{isCancellingBuild:!0})))},{},{onCtrlCPressed:()=>{w(e=>m(m({},e),{},{wasCtrlCPressed:!0}))}}),n.default.createElement(n.Fragment,null,n.default.createElement(i.default,{build:f,name:l,version:s}),j?n.default.createElement(t.Box,{flexDirection:"column",marginBottom:1},n.default.createElement(u.default,{appId:e,commandUsed:b,id:f.id})):p,n.default.createElement(a.default,{hasBuildFailed:y,shouldShowCancelBuildInstructions:g&&!P,uiUrl:f?f.url:null}),P&&h?n.default.createElement(n.Fragment,null,n.default.createElement(t.Box,{flexDirection:"column",marginTop:1},n.default.createElement(t.Text,{color:"gray"},"The build will continue in the background. To view it, run:")),n.default.createElement(t.Box,null,n.default.createElement(t.Text,{bold:!0,color:"gray"},"todesktop builds ",f.id))):null)};y.propTypes={appId:l.default.string,appName:l.default.string.isRequired,appVersion:l.default.string,build:l.default.object,children:l.default.oneOfType([l.default.array,l.default.object]),commandUsed:l.default.string.isRequired,hasBuildFailed:l.default.bool};var O=y;exports.default=O;
44
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=f(require("is-ci")),l=f(require("prop-types")),r=s(require("react")),a=f(require("./CancelBuild")),u=f(require("./Footer")),n=f(require("./Header")),i=require("../utilities/buildStatus"),d=f(require("../utilities/logger")),o=f(require("../utilities/useInput"));function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(c=function(e){return e?l:t})(e)}function s(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=c(t);if(l&&l.has(e))return l.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var n=a?Object.getOwnPropertyDescriptor(e,u):null;n&&(n.get||n.set)?Object.defineProperty(r,u,n):r[u]=e[u]}return r.default=e,l&&l.set(e,r),r}function f(e){return e&&e.__esModule?e:{default:e}}const p=({appId:l,appName:c,appVersion:s,build:f,children:p,commandUsed:m,hasBuildFailed:g})=>{d.default.debug("MainLayout component: render");const b=(0,o.default)(),[{canCancelBuild:y,hasKickedOff:B,isCancellingBuild:C,wasCtrlCPressed:h},O]=(0,r.useState)({canCancelBuild:null,hasKickedOff:!1,isCancellingBuild:!1,wasCtrlCPressed:!1});return(0,r.useEffect)(()=>{O(e=>({...e,hasKickedOff:(0,i.hasBuildKickedOff)(f)}))},[f]),(0,r.useEffect)(()=>{O(e=>({...e,canCancelBuild:!t.default&&!C&&(0,i.isBuildCancellable)(f)}))},[f,C]),b(async(e,t)=>{t.escape&&y&&(d.default.debug("MainLayout component: esc pressed, cancelling build"),O(e=>({...e,isCancellingBuild:!0})))},{},{onCtrlCPressed:()=>{O(e=>({...e,wasCtrlCPressed:!0}))}}),r.default.createElement(r.Fragment,null,r.default.createElement(n.default,{build:f,name:c,version:s}),C?r.default.createElement(e.Box,{flexDirection:"column",marginBottom:1},r.default.createElement(a.default,{appId:l,commandUsed:m,id:f.id})):p,r.default.createElement(u.default,{hasBuildFailed:g,shouldShowCancelBuildInstructions:y&&!h,uiUrl:f?f.url:null}),h&&B?r.default.createElement(r.Fragment,null,r.default.createElement(e.Box,{flexDirection:"column",marginTop:1},r.default.createElement(e.Text,{color:"gray"},"The build will continue in the background. To view it, run:")),r.default.createElement(e.Box,null,r.default.createElement(e.Text,{bold:!0,color:"gray"},"todesktop builds ",f.id))):null)};p.propTypes={appId:l.default.string,appName:l.default.string.isRequired,appVersion:l.default.string,build:l.default.object,children:l.default.oneOfType([l.default.array,l.default.object]),commandUsed:l.default.string.isRequired,hasBuildFailed:l.default.bool};var m=p;exports.default=m;
45
45
  },{"./CancelBuild":"J4or","./Footer":"lWRR","./Header":"XT2G","../utilities/buildStatus":"in6t","../utilities/logger":"XvyO","../utilities/useInput":"CLRu"}],"PvCN":[function(require,module,exports) {
46
46
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("git-rev-sync"));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n: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 n=t(r);if(n&&n.has(e))return n.get(e);var o={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=a?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o}var n=async t=>{let r={};try{const o=e.long(t);o&&(r={branchName:e.branch(t),commitDate:e.date().toISOString(),commitId:o,commitMessage:e.message(),hasUncommittedChanges:e.isDirty(),repositoryRemoteUrl:e.remoteUrl(),versionControlSystemName:"git"})}catch(n){}return r};exports.default=n;
47
47
  },{}],"GCJw":[function(require,module,exports) {
48
48
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>require(e);exports.default=e;
49
49
  },{}],"waRp":[function(require,module,exports) {
50
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("@babel/runtime/helpers/defineProperty")),t=n(require("path"));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}function n(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var a=i?Object.getOwnPropertyDescriptor(e,c):null;a&&(a.get||a.set)?Object.defineProperty(o,c,a):o[c]=e[c]}return o.default=e,n&&n.set(e,o),o}function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function c(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?i(Object(n),!0).forEach(function(r){(0,e.default)(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var a=({config:e,projectRoot:r})=>{const n=e.appPath?t.isAbsolute(e.appPath)?e.appPath:t.join(r,e.appPath):r,o=(e,t)=>e?t(e):void 0,i=e=>t.isAbsolute(e)?e:t.join(r,e),a=c(c({},e),{},{appPath:n,icon:i(e.icon)});return e.extraContentFiles&&(a.extraContentFiles=o(e.extraContentFiles,e=>e.map(e=>c(c({},e),{},{from:i(e.from)})))),e.extraResources&&(a.extraResources=o(e.extraResources,e=>e.map(e=>c(c({},e),{},{from:i(e.from)})))),e.linux&&(a.linux=c({},e.linux),e.linux.icon&&(a.linux.icon=i(e.linux.icon))),e.mac&&(a.mac=c({},e.mac),e.mac.entitlements&&(a.mac.entitlements=i(e.mac.entitlements)),e.mac.icon&&(a.mac.icon=i(e.mac.icon))),e.dmg&&e.dmg.background&&(a.dmg.background=i(e.dmg.background)),e.windows&&(a.windows=c({},e.windows),e.windows.icon&&(a.windows.icon=i(e.windows.icon))),a};exports.default=a;
50
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("path"));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,o=new WeakMap;return(t=function(e){return e?o:n})(e)}function n(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=t(n);if(o&&o.has(e))return o.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var c=i?Object.getOwnPropertyDescriptor(e,a):null;c&&(c.get||c.set)?Object.defineProperty(r,a,c):r[a]=e[a]}return r.default=e,o&&o.set(e,r),r}var o=({config:t,projectRoot:n})=>{const o=t.appPath?e.isAbsolute(t.appPath)?t.appPath:e.join(n,t.appPath):n,r=(e,t)=>e?t(e):void 0,i=t=>e.isAbsolute(t)?t:e.join(n,t),a={...t,appPath:o,icon:i(t.icon)};return t.extraContentFiles&&(a.extraContentFiles=r(t.extraContentFiles,e=>e.map(e=>({...e,from:i(e.from)})))),t.extraResources&&(a.extraResources=r(t.extraResources,e=>e.map(e=>({...e,from:i(e.from)})))),t.linux&&(a.linux={...t.linux},t.linux.icon&&(a.linux.icon=i(t.linux.icon))),t.mac&&(a.mac={...t.mac},t.mac.entitlements&&(a.mac.entitlements=i(t.mac.entitlements)),t.mac.icon&&(a.mac.icon=i(t.mac.icon))),t.dmg&&t.dmg.background&&(a.dmg.background=i(t.dmg.background)),t.windows&&(a.windows={...t.windows},t.windows.icon&&(a.windows.icon=i(t.windows.icon))),a};exports.default=o;
51
51
  },{}],"zW94":[function(require,module,exports) {
52
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>({type:"object",required:["author","dependencies","devDependencies","homepage","name","version"],properties:{author:{npmAuthor:{}},dependencies:{type:"object",required:["@todesktop/runtime"],excludedDependencies:{dependencyKey:"dependencies",blacklist:["@todesktop/cli"]},properties:{"@todesktop/runtime":{type:"string"}}},devDependencies:{type:"object",required:["electron"],properties:{electron:{type:"string",semanticVersion:{packageName:"electron",mustBeExact:!0}}}},name:{type:"string",minLength:1},version:{type:"string",semanticVersion:{}}}});exports.default=e;
52
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>({type:"object",required:["author","dependencies","devDependencies","homepage","name","version"],properties:{author:{npmAuthor:{}},dependencies:{type:"object",required:["@todesktop/runtime"],excludedDependencies:{dependencyKey:"dependencies",blacklist:["@todesktop/cli"]},properties:{"@todesktop/runtime":{type:"string"}}},devDependencies:{type:"object",required:["electron"],properties:{electron:{type:"string",semanticVersion:{packageName:"electron",mustBeExact:!0}}}},name:{type:"string",minLength:1},scripts:{type:"object",properties:{"todesktop:beforeInstall":{type:"string",file:{from:e.projectRoot,mustBeFile:!0}},"todesktop:afterPack":{type:"string",file:{from:e.projectRoot,mustBeFile:!0}}}},version:{type:"string",semanticVersion:{}}}});exports.default=e;
53
53
  },{}],"fl4s":[function(require,module,exports) {
54
54
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=a(require("ajv")),r=a(require("better-ajv-errors")),t=a(require("./addCustomKeywords")),o=a(require("./schema/packageJSON"));function a(e){return e&&e.__esModule?e:{default:e}}var s=(a,s,u)=>{const d=new e.default({allErrors:!0,jsonPointers:!0});(0,t.default)(d,u);const i=(0,o.default)(u),n=d.compile(i);if(!n(a)){const e=(0,r.default)(i,a,n.errors,{indent:2}),t=new Error(`package.json invalid (${s}); \n${e}`);throw t.isValidationError=!0,t}};exports.default=s;
55
55
  },{"./addCustomKeywords":"g5Ig","./schema/packageJSON":"zW94"}],"g5Ig":[function(require,module,exports) {
56
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("email-regex")),r=a(require("fs")),t=a(require("path")),i=u(require("parse-author")),s=a(require("semver")),n=u(require("./validatePackageJSON"));function o(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(o=function(e){return e?t:r})(e)}function a(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o(r);if(t&&t.has(e))return t.get(e);var i={},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var a=s?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(i,n,a):i[n]=e[n]}return i.default=e,t&&t.set(e,i),i}function u(e){return e&&e.__esModule?e:{default:e}}var d=(o,a)=>{o.addKeyword("excludedDependencies",{validate:function e(r,t){let i=r.blacklist.filter(e=>t[e]);return!i.length||(e.errors=[{keyword:"Dependency",message:`${i.join(", ")} should not be in ${r.dependencyKey}`,dataPath:`/${r.dependencyKey}`}],!1)}}),o.addKeyword("email",{type:"string",minLength:5,validate:function r(t,i){return!!(0,e.default)({exact:!0}).test(i)||(r.errors=[{keyword:"email",message:"invalid"}],!1)}}),o.addKeyword("file",{type:"string",validate:function e(i,s){const o=i.mustBeDirectory||i.mustBeElectronApp;if(!s.trim().length)return!!i.isOptional||(e.errors=[{keyword:i.mustBeDirectory?"Directory":"File",message:"is empty"}],!1);const u=t.isAbsolute(s)?s:t.join(i.from,s);if(t.relative(i.from,u).startsWith(".."))return e.errors=[{keyword:o?"Directory":"File",message:`is not in project (${u})`}],!1;if(i.extensions&&!i.extensions.includes(t.extname(u).substr(1)))return e.errors=[{keyword:"File extension",message:`invalid. ${t.extname(s)} Must be${i.extensions>1?"one of the following:":""} "${i.extensions.join('", "')}"`}],!1;if(!r.existsSync(u))return e.errors=[{keyword:o?"Directory":"File",message:`does not exist (${u})`}],!1;const d=r.statSync(u);if(o&&d.isFile())return e.errors=[{keyword:"Directory",message:`must be a directory, not a file (${u})`}],!1;if(i.mustBeFile&&d.isDirectory())return e.errors=[{keyword:"File",message:`must be a file, not a directory (${u})`}],!1;if(i.mustBeElectronApp){const i=t.resolve(u),s=t.join(i,"package.json");if(!r.existsSync(s))return e.errors=[{keyword:"App",message:`invalid. There is no package.json at ${s}`}],!1;let o;try{o=require(s)}catch(l){return e.errors=[{keyword:"App",message:`invalid. Invalid JSON in package.json (${s})`}],!1}(0,n.default)(o,s,a);const d=o.main;if(d){const s=t.join(i,d);if(!r.existsSync(s))return e.errors=[{keyword:"App",message:`invalid. The "main" file specified in your package.json (${d}) does not exist (${s})`}],!1}else if(!r.existsSync(t.join(i,"index.js")))return e.errors=[{keyword:"App",message:'invalid. There is neither a "main" property in your package.json nor an index.js at the root of your app'}],!1}return!0},errors:!0}),o.addKeyword("npmAuthor",{validate:function r(t,s){const n=typeof s;if("undefined"===n)return!0;if("string"===n){const e=(0,i.default)(s);if(!e||!e.email)return r.errors=[{keyword:"author",message:'invalid. If you\'re using a string, it must look something like "Barney Rubble <b@rubble.com>", see https://docs.npmjs.com/files/package.json#people-fields-author-contributors'}],!1}else{if("object"!==n)return r.errors=[{keyword:"author",message:"invalid. It must either be an object or string. See https://docs.npmjs.com/files/package.json#people-fields-author-contributors"}],!1;if(void 0===s.name)return r.errors=[{keyword:"author",message:'invalid. "name" property is missing.'}],!1;if("string"!=typeof s.name)return r.errors=[{keyword:"author",message:".name invalid. It must be a string"}],!1;if(void 0===s.email)return r.errors=[{keyword:"author",message:'invalid. "email" property is missing.'}],!1;if("string"!=typeof s.email)return r.errors=[{keyword:"author",message:".email invalid. It must be a string."}],!1;if(!(0,e.default)({exact:!0}).test(s.email))return r.errors=[{keyword:"author",message:".email invalid. It does not look like an email."}],!1}return!0},errors:!0}),o.addKeyword("semanticVersion",{type:"string",minLength:5,validate:function e(r,t){const i=(r.packageName?`${r.packageName} `:"")+"version";return s.valid(t)||s.validRange(t)?!r.mustBeExact||!t.startsWith("~")&&!t.startsWith("^")||(e.errors=[{keyword:i,message:"invalid. It must be an exact version. Good: 9.0.0. Bad: ^9.0.0"}],!1):(e.errors=[{keyword:i,message:"invalid. It must be a semantic version (see https://semver.org/)"}],!1)}})};exports.default=d;
56
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("email-regex")),r=a(require("fs")),t=a(require("path")),i=u(require("parse-author")),s=a(require("semver")),o=u(require("./validatePackageJSON"));function n(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:r})(e)}function a(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(r);if(t&&t.has(e))return t.get(e);var i={},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=s?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(i,o,a):i[o]=e[o]}return i.default=e,t&&t.set(e,i),i}function u(e){return e&&e.__esModule?e:{default:e}}var d=(n,a)=>{n.addKeyword("excludedDependencies",{validate:function e(r,t){let i=r.blacklist.filter(e=>t[e]);return!i.length||(e.errors=[{keyword:"Dependency",message:`${i.join(", ")} should not be in ${r.dependencyKey}`,dataPath:`/${r.dependencyKey}`}],!1)}}),n.addKeyword("email",{type:"string",minLength:5,validate:function r(t,i){return!!(0,e.default)({exact:!0}).test(i)||(r.errors=[{keyword:"email",message:"invalid"}],!1)}}),n.addKeyword("file",{type:"string",validate:function e(i,s){const n=i.mustBeDirectory||i.mustBeElectronApp;if(!s.trim().length)return!!i.isOptional||(e.errors=[{keyword:i.mustBeDirectory?"Directory":"File",message:"is empty"}],!1);const u=t.isAbsolute(s)?s:t.join(i.from,s);if(t.relative(i.from,u).startsWith(".."))return e.errors=[{keyword:n?"Directory":"File",message:`is not in project (${u})`}],!1;if(i.extensions&&!i.extensions.includes(t.extname(u).substr(1)))return e.errors=[{keyword:"File extension",message:`invalid. ${t.extname(s)} Must be${i.extensions>1?"one of the following:":""} "${i.extensions.join('", "')}"`}],!1;if(!r.existsSync(u))return e.errors=[{keyword:n?"Directory":"File",message:`does not exist (${u})`}],!1;const d=r.statSync(u);if(n&&d.isFile())return e.errors=[{keyword:"Directory",message:`must be a directory, not a file (${u})`}],!1;if(i.mustBeFile&&d.isDirectory())return e.errors=[{keyword:"File",message:`must be a file, not a directory (${u})`}],!1;if(i.mustBeElectronApp){const i=t.resolve(u),s=t.join(i,"package.json");if(!r.existsSync(s))return e.errors=[{keyword:"App",message:`invalid. There is no package.json at ${s}`}],!1;let n;try{n=require(s)}catch(l){return e.errors=[{keyword:"App",message:`invalid. Invalid JSON in package.json (${s})`}],!1}a.projectRoot=i,(0,o.default)(n,s,a);const d=n.main;if(d){const s=t.join(i,d);if(!r.existsSync(s))return e.errors=[{keyword:"App",message:`invalid. The "main" file specified in your package.json (${d}) does not exist (${s})`}],!1}else if(!r.existsSync(t.join(i,"index.js")))return e.errors=[{keyword:"App",message:'invalid. There is neither a "main" property in your package.json nor an index.js at the root of your app'}],!1}return!0},errors:!0}),n.addKeyword("npmAuthor",{validate:function r(t,s){const o=typeof s;if("undefined"===o)return!0;if("string"===o){const e=(0,i.default)(s);if(!e||!e.email)return r.errors=[{keyword:"author",message:'invalid. If you\'re using a string, it must look something like "Barney Rubble <b@rubble.com>", see https://docs.npmjs.com/files/package.json#people-fields-author-contributors'}],!1}else{if("object"!==o)return r.errors=[{keyword:"author",message:"invalid. It must either be an object or string. See https://docs.npmjs.com/files/package.json#people-fields-author-contributors"}],!1;if(void 0===s.name)return r.errors=[{keyword:"author",message:'invalid. "name" property is missing.'}],!1;if("string"!=typeof s.name)return r.errors=[{keyword:"author",message:".name invalid. It must be a string"}],!1;if(void 0===s.email)return r.errors=[{keyword:"author",message:'invalid. "email" property is missing.'}],!1;if("string"!=typeof s.email)return r.errors=[{keyword:"author",message:".email invalid. It must be a string."}],!1;if(!(0,e.default)({exact:!0}).test(s.email))return r.errors=[{keyword:"author",message:".email invalid. It does not look like an email."}],!1}return!0},errors:!0}),n.addKeyword("semanticVersion",{type:"string",minLength:5,validate:function e(r,t){const i=(r.packageName?`${r.packageName} `:"")+"version";return s.valid(t)||s.validRange(t)?!r.mustBeExact||!t.startsWith("~")&&!t.startsWith("^")||(e.errors=[{keyword:i,message:"invalid. It must be an exact version. Good: 9.0.0. Bad: ^9.0.0"}],!1):(e.errors=[{keyword:i,message:"invalid. It must be a semantic version (see https://semver.org/)"}],!1)}})};exports.default=d;
57
57
  },{"./validatePackageJSON":"fl4s"}],"CN2N":[function(require,module,exports) {
58
58
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e=e=>({oneOf:[e,{type:"array",items:e}]});var t=t=>{const i=(e=[])=>({type:"string",file:{from:t.projectRoot,extensions:["icns","png",...e],mustBeFile:!0},minLength:3});return{type:"object",required:["id","icon","schemaVersion"],properties:{appId:{type:"string",minLength:1},appFiles:{type:"array",items:{type:"string",minLength:1},minItems:1},appProtocolScheme:{type:"string",minLength:1},appPath:{type:"string",file:{from:t.projectRoot,isOptional:!0,mustBeElectronApp:!0}},copyright:{type:"string",minLength:1},electronMirror:{type:"string",format:"uri"},electronVersion:{type:"string",minLength:1},extraContentFiles:{type:"array",items:{type:"object",required:["from"],properties:{from:{type:"string",file:{from:t.projectRoot}},to:{type:"string"}}}},extraResources:{type:"array",items:{type:"object",required:["from"],properties:{from:{type:"string",file:{from:t.projectRoot}},to:{type:"string"}}}},fileAssociations:{type:"array",items:{type:"object",required:["ext"],properties:{ext:e({type:"string",minLength:1}),description:{type:"string",minLength:1},name:{type:"string",minLength:1},mimeType:{type:"string",minLength:1},icon:{type:"string",minLength:1},role:{type:"string",minLength:1},isPackage:{type:"boolean"},rank:{type:"string",minLength:1}}},minItems:1},filesForDistribution:{type:"array",items:{type:"string",minLength:1},minItems:1},icon:i(),linux:{properties:{category:{type:"string",minLength:1},icon:i()}},id:{type:"string",minLength:1},mac:{properties:{category:{type:"string",minLength:1},additionalBinariesToSign:{type:"array",items:{type:"string",minLength:1}},entitlements:{type:"string",file:{from:t.projectRoot,extensions:["plist"],mustBeFile:!0},minLength:1},extendInfo:{type:"object"},icon:i()}},dmg:{properties:{background:{type:"string",file:{from:t.projectRoot,extensions:["tiff"],mustBeFile:!0},minLength:1},artifactName:{type:"string",minLength:1},backgroundColor:{type:"string",minLength:1},iconSize:{type:"number"},iconTextSize:{type:"number"},title:{type:"string",minLength:1},contents:{type:"array",items:{type:"object",properties:{x:{type:"number"},y:{type:"number"}}}},window:{type:"object",properties:{x:{type:"number"},y:{type:"number"},width:{type:"number"},height:{type:"number"}}}}},schemaVersion:{type:"number",minimum:1,maximum:1},snap:{properties:{after:{type:"array",items:{type:"string",minLength:1}},appPartStage:{type:"array",items:{type:"string",minLength:1}},assumes:e({type:"string",minLength:1}),autoStart:{type:"boolean"},buildPackages:{type:"array",items:{type:"string",minLength:1}},confinement:{type:"string",enum:["classic","devmode","strict"]},environment:{type:"object"},grade:{type:"string",enum:["devel","stable"]},layout:{type:"object"},plugs:{type:"array",items:{anyOf:[{type:"string",minLength:1},{type:"object"}]}},stagePackages:{type:"array",items:{type:"string",minLength:1}},summary:{type:"string",maxLength:78},useTemplateApp:{type:"boolean"}}},uploadSizeLimit:{type:"number"},windows:{properties:{icon:i(["ico"])}}}}};exports.default=t;
59
59
  },{}],"aYcI":[function(require,module,exports) {
@@ -69,47 +69,47 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
69
69
  },{"./subscribeToFirebaseDoc":"rSIG"}],"uJzg":[function(require,module,exports) {
70
70
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=({appId:e,buildId:r,filenameSuffix:t})=>`${e}/sourceArchives/${r}--${t}`;exports.default=e;
71
71
  },{}],"yJCU":[function(require,module,exports) {
72
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("aws-sdk")),r=u(require("s3-upload-stream")),t=u(require("./getEnvironmentVariables")),a=u(require("./logger"));function u(e){return e&&e.__esModule?e:{default:e}}const{TODESKTOP_CLI_AWS_ACCESS_ID:o,TODESKTOP_CLI_AWS_ACCESS_SECRET:s,TODESKTOP_CLI_S3_BUCKET:d}=(0,t.default)();e.default.config.update({accessKeyId:o,secretAccessKey:s});var n=({bucket:t=d,inputStream:u,key:o,maxPartSize:s=5,onProgress:n=(()=>{})})=>(a.default.debug({bucket:t,key:o,maxPartSize:s},"uploadToS3"),new Promise((a,d)=>{const c=(0,r.default)(new e.default.S3).upload({Bucket:t,Key:o});c.on("error",e=>{d(e)}),c.on("part",n),c.on("uploaded",({Location:e})=>{a({bucket:t,key:o,url:e})}),c.maxPartSize(1048576*s),c.concurrentParts(25/s),u.pipe(c)}));exports.default=n;
73
- },{"./getEnvironmentVariables":"gwcX","./logger":"XvyO"}],"AV41":[function(require,module,exports) {
74
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=a(require("@babel/runtime/helpers/defineProperty")),r=a(require("archiver")),t=a(require("du")),n=a(require("fs")),i=a(require("chalk")),o=a(require("./logger"));function a(e){return e&&e.__esModule?e:{default:e}}function s(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function c(r){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach(function(t){(0,e.default)(r,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))})}return r}async function u({files:e,fileSizeLimit:a=20,onError:s,onProgress:u}){o.default.debug({files:e},"zip");const l=(0,r.default)("zip");l.on("warning",function(e){"ENOENT"===e.code?(console.warn(e),o.default.warn({err:e},"zip: stream warning ENOENT")):s(e)}),l.on("error",function(e){s(e)});const p=await Promise.all(e.map(async e=>{const r=n.default.lstatSync(e.from),i=r.isDirectory();return c(c({},e),{},{isDirectory:i,stats:r,size:i?await(0,t.default)(e.from):r.size})})),f=p.reduce((e,r)=>e+r.size,0);return f>1e6*a?(s(new Error([`\n\nYour app is larger than ${a}MB. Your app is ${i.default.bold.red.underline((f/1e6).toFixed(1)+"MB")}.\n`,"You may be including unnecessary files in your app(see the `appPath` and `appFiles` options).","If not, this limit can be raised by setting the `uploadSizeLimit` option.","Learn more at https://www.npmjs.com/package/@todesktop/cli#uploadsizelimit---optional-number"].join("\n"))),l):(p.forEach(({from:e,isDirectory:r,stats:t,to:n})=>{r?l.directory(e,n):l.file(e,{name:n,mode:t.mode})}),l.finalize(),l.on("progress",e=>u(c(c({},e),{},{percentage:e.entries.processed/e.entries.total*100}))),l)}
72
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("superagent")),t=o(require("util")),r=o(require("stream-to-array")),u=o(require("./getEnvironmentVariables")),a=o(require("./logger")),n=o(require("../utilities/getCallableFirebaseFunction"));function o(e){return e&&e.__esModule?e:{default:e}}const{TODESKTOP_CLI_S3_BUCKET:i}=(0,u.default)();var l=async({bucket:u=i,inputStream:o,key:l,onProgress:s=(()=>{})})=>{const{data:d}=await(0,n.default)("getSignedURL")({key:l}),f=await new Promise(e=>{(0,r.default)(o).then(function(r){const u=r.map(e=>t.default.isBuffer(e)?e:Buffer.from(e));return e(Buffer.concat(u))})});return new Promise(t=>(e.default.put(d.signedURL).send(f).set("content-type","application/zip").on("progress",e=>s(e)).end(()=>{a.default.debug({bucket:u,key:l,url:d.uploadURL},"uploadToS3"),t({bucket:u,key:l,url:d.uploadURL})}),{bucket:u,key:l,url:d.uploadURL}))};exports.default=l;
73
+ },{"./getEnvironmentVariables":"gwcX","./logger":"XvyO","../utilities/getCallableFirebaseFunction":"koRC"}],"AV41":[function(require,module,exports) {
74
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=a;var e=n(require("archiver")),r=n(require("du")),i=n(require("fs")),t=n(require("chalk")),o=n(require("./logger"));function n(e){return e&&e.__esModule?e:{default:e}}async function a({files:n,fileSizeLimit:a=20,onError:s,onProgress:u}){o.default.debug({files:n},"zip");const l=(0,e.default)("zip");l.on("warning",function(e){"ENOENT"===e.code?(console.warn(e),o.default.warn({err:e},"zip: stream warning ENOENT")):s(e)}),l.on("error",function(e){s(e)});const c=await Promise.all(n.map(async e=>{const t=i.default.lstatSync(e.from),o=t.isDirectory();return{...e,isDirectory:o,stats:t,size:o?await(0,r.default)(e.from):t.size}})),d=c.reduce((e,r)=>e+r.size,0);return d>1e6*a?(s(new Error([`\n\nYour app is larger than ${a}MB. Your app is ${t.default.bold.red.underline((d/1e6).toFixed(1)+"MB")}.\n`,"You may be including unnecessary files in your app(see the `appPath` and `appFiles` options).","If not, this limit can be raised by setting the `uploadSizeLimit` option.","Learn more at https://www.npmjs.com/package/@todesktop/cli#uploadsizelimit---optional-number"].join("\n"))),l):(c.forEach(({from:e,isDirectory:r,stats:i,to:t})=>{r?l.directory(e,t):l.file(e,{name:t,mode:i.mode})}),l.finalize(),l.on("progress",e=>u({...e,percentage:e.entries.processed/e.entries.total*100})),l)}
75
75
  },{"./logger":"XvyO"}],"Y1TB":[function(require,module,exports) {
76
- "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 u=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")):a.push("**");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 c=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 c=0;const f=[...await u(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}){c=e.totalBytes}}),key:(0,n.default)({appId:e,buildId:s,filenameSuffix:`${o.name}.zip`}),onProgress({uploadedSize:e}){l(e/c*100,e)}})};exports.default=c;
76
+ "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;
77
77
  },{"./generateS3Key":"uJzg","./logger":"XvyO","./uploadToS3":"yJCU","./zip":"AV41"}],"XP8q":[function(require,module,exports) {
78
78
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("fs")),r=l(require("path")),a=l(require("pretty-bytes")),i=require("./firestore"),o=l(require("./getVersionControlInfo")),t=l(require("./projectConfig/getProjectConfig")),s=l(require("./logForCI")),p=l(require("./postToFirebaseFunction")),d=l(require("./readJson")),u=l(require("./subscribeToBuild")),n=l(require("./uploadApplicationSource"));function l(e){return e&&e.__esModule?e:{default:e}}var g=async({onEvent:e,shouldCodeSign:l=!0})=>{(0,s.default)("Getting application information...");const g=(0,i.currentUser)().uid,{config:c,unprocessedConfig:f}=(0,t.default)(),b=c.id,P=(0,d.default)(r.default.join(c.appPath,"package.json"));let h,m;e("progress",{appId:b,appPkg:P,preparationProgress:.02}),(0,s.default)("Preparing...");try{h=(await(0,p.default)("prepareNewBuild",{appPkgName:P.name,appPkgProductName:P.productName,appVersion:P.version,id:c.id,projectConfig:f,shouldCodeSign:!1!==l,shouldRelease:!1,userId:g,versionControlInfo:await(0,o.default)(c.appPath)})).appData.meta.currentBuildProgress.id;const r=await(0,u.default)({appId:b,buildId:h,onDataReceived:r=>e("progress",{build:r}),userId:g});e("firebase-subscribed",{firebaseUnsubscribe:r})}catch(w){throw w.message=`Failed while preparing new build; ${w.message}`,w}e("progress",{preparationProgress:.05,preparationStageLabel:"Uploading"}),(0,s.default)("Uploading...");try{m=await(0,n.default)({appId:b,appPkgJson:P,buildId:h,config:c,onProgress(r,i){const o={preparationProgress:.05+r/100*.95};i&&(o.preparationUploadedSize=(0,a.default)(i)),e("progress",o)}})}catch(w){throw w.message=`Failed while uploading application source; ${w.message}`,w}e("progress",{isPreparationComplete:!0}),(0,s.default)("Kicking off build...");try{await(0,p.default)("kickOffBuild",{appId:b,appPkgName:P.name,appVersion:P.version,buildId:h,userId:g,sourceArchiveDetails:m})}catch(w){throw w.message=`Failed while kicking off build; ${w.message}`,w}};exports.default=g;
79
79
  },{"./firestore":"gzUX","./getVersionControlInfo":"PvCN","./projectConfig/getProjectConfig":"Sx1d","./logForCI":"Sre8","./postToFirebaseFunction":"I8pf","./readJson":"GCJw","./subscribeToBuild":"ohCc","./uploadApplicationSource":"Y1TB"}],"ONhe":[function(require,module,exports) {
80
80
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>["linux","mac","windows"].every(t=>e[t].shouldSkip||"succeeded"===e[t].status||"failed"===e[t].status&&2===e[t].numberOfAttemptedBuilds);exports.default=e;
81
81
  },{}],"PaIV":[function(require,module,exports) {
82
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=g(require("@babel/runtime/helpers/defineProperty")),r=b(require("react")),t=g(require("prop-types")),a=g(require("./BuildProgress")),i=g(require("./ErrorDisplay")),u=g(require("./Preparation")),n=g(require("./InitialLoadingState")),o=g(require("./MainLayout")),l=g(require("../utilities/logForCI")),p=g(require("../utilities/logger")),d=g(require("../utilities/runBuild")),s=g(require("../utilities/shouldExitOnBuildFailure")),f=g(require("../utilities/useExit"));function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(c=function(e){return e?t:r})(e)}function b(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=c(r);if(t&&t.has(e))return t.get(e);var a={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var n=i?Object.getOwnPropertyDescriptor(e,u):null;n&&(n.get||n.set)?Object.defineProperty(a,u,n):a[u]=e[u]}return a.default=e,t&&t.set(e,a),a}function g(e){return e&&e.__esModule?e:{default:e}}function m(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,a)}return t}function O(r){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?m(Object(a),!0).forEach(function(t){(0,e.default)(r,t,a[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):m(Object(a)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})}return r}const y={appId:null,appPkg:null,build:null,error:null,hasBuildFailed:!1,isPreparationComplete:!1,preparationStageLabel:"Preparing",preparationProgress:0,preparationUploadedSize:null},P=({commandUsed:e,shouldCodeSign:t=!0})=>{const c=(0,f.default)(),[{appId:b,appPkg:g,build:m,error:P,hasBuildFailed:j,isPreparationComplete:h,preparationStageLabel:v,preparationProgress:E,preparationUploadedSize:q},w]=(0,r.useState)(y),S=e=>{const r=e.response?e.response.data:e;(0,l.default)(r),w(e=>O(O({},e),{},{error:r}))};if((0,r.useEffect)(()=>{let r;return(0,d.default)({commandUsed:e,onEvent:(e,t)=>{p.default.debug({eventName:e,data:t},"Build component: runBuild.onEvent"),"firebase-subscribed"===e?r=t.firebaseUnsubscribe:"progress"===e&&w(e=>O(O({},e),t))},shouldCodeSign:t}).catch(S),()=>{r&&r()}},[e,t]),(0,r.useEffect)(()=>{j&&(0,s.default)(m)&&setTimeout(()=>c(new Error("Build has failed"),10))},[m,c,j]),P)return r.default.createElement(i.default,{commandUsed:e,error:P});if(!g)return r.default.createElement(n.default,null);return r.default.createElement(o.default,{appId:b,appName:m&&m.appName||g.name,appVersion:m&&m.appVersion||g.version,build:m,commandUsed:e,hasBuildFailed:j},h?r.default.createElement(a.default,{build:m,onBuildFailure:()=>{j||w(e=>O(O({},e),{},{hasBuildFailed:!0}))}}):r.default.createElement(u.default,{progressPercentage:E,stageLabel:v,uploadedSize:q}))};P.propTypes={commandUsed:t.default.string.isRequired,shouldCodeSign:t.default.bool};var j=P;exports.default=j;
82
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=g(require("react")),r=f(require("prop-types")),t=f(require("./BuildProgress")),a=f(require("./ErrorDisplay")),i=f(require("./Preparation")),u=f(require("./InitialLoadingState")),l=f(require("./MainLayout")),n=f(require("../utilities/logForCI")),o=f(require("../utilities/logger")),d=f(require("../utilities/runBuild")),s=f(require("../utilities/shouldExitOnBuildFailure")),p=f(require("../utilities/useExit"));function f(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(c=function(e){return e?t:r})(e)}function g(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=c(r);if(t&&t.has(e))return t.get(e);var a={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var l=i?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(a,u,l):a[u]=e[u]}return a.default=e,t&&t.set(e,a),a}const m={appId:null,appPkg:null,build:null,error:null,hasBuildFailed:!1,isPreparationComplete:!1,preparationStageLabel:"Preparing",preparationProgress:0,preparationUploadedSize:null},b=({commandUsed:r,shouldCodeSign:f=!0})=>{const c=(0,p.default)(),[{appId:g,appPkg:b,build:P,error:y,hasBuildFailed:q,isPreparationComplete:v,preparationStageLabel:E,preparationProgress:h,preparationUploadedSize:B},O]=(0,e.useState)(m),S=e=>{const r=e.response?e.response.data:e;(0,n.default)(r),O(e=>({...e,error:r}))};if((0,e.useEffect)(()=>{let e;return(0,d.default)({commandUsed:r,onEvent:(r,t)=>{o.default.debug({eventName:r,data:t},"Build component: runBuild.onEvent"),"firebase-subscribed"===r?e=t.firebaseUnsubscribe:"progress"===r&&O(e=>({...e,...t}))},shouldCodeSign:f}).catch(S),()=>{e&&e()}},[r,f]),(0,e.useEffect)(()=>{q&&(0,s.default)(P)&&setTimeout(()=>c(new Error("Build has failed"),10))},[P,c,q]),y)return e.default.createElement(a.default,{commandUsed:r,error:y});if(!b)return e.default.createElement(u.default,null);return e.default.createElement(l.default,{appId:g,appName:P&&P.appName||b.name,appVersion:P&&P.appVersion||b.version,build:P,commandUsed:r,hasBuildFailed:q},v?e.default.createElement(t.default,{build:P,onBuildFailure:()=>{q||O(e=>({...e,hasBuildFailed:!0}))}}):e.default.createElement(i.default,{progressPercentage:h,stageLabel:E,uploadedSize:B}))};b.propTypes={commandUsed:r.default.string.isRequired,shouldCodeSign:r.default.bool};var P=b;exports.default=P;
83
83
  },{"./BuildProgress":"odFL","./ErrorDisplay":"f0Jz","./Preparation":"DLJk","./InitialLoadingState":"OHrJ","./MainLayout":"T5Az","../utilities/logForCI":"Sre8","../utilities/logger":"XvyO","../utilities/runBuild":"XP8q","../utilities/shouldExitOnBuildFailure":"ONhe","../utilities/useExit":"QLfx"}],"cb6D":[function(require,module,exports) {
84
84
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("react"),r=({cons:r=console,proc:t=process}={})=>{try{(0,e.useState)(null)}catch(o){r.error(o),t.exit(1)}};exports.default=r;
85
85
  },{}],"iiO0":[function(require,module,exports) {
86
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("@babel/runtime/helpers/extends")),t=n(require("@babel/runtime/helpers/objectWithoutProperties")),r=n(require("ink-text-input")),u=n(require("react")),o=n(require("prop-types"));const l=["onBlur","onFocus"];function n(e){return e&&e.__esModule?e:{default:e}}const s=o=>{let{onBlur:n,onFocus:s}=o,a=(0,t.default)(o,l);return u.default.useEffect(()=>(s(),n),[s,n]),u.default.createElement(r.default,(0,e.default)({},a,{showCursor:!0}))};s.propTypes={onBlur:o.default.func,onFocus:o.default.func};var a=s;exports.default=a;
86
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("@babel/runtime/helpers/extends")),t=o(require("ink-text-input")),u=o(require("react")),r=o(require("prop-types"));function o(e){return e&&e.__esModule?e:{default:e}}const l=({onBlur:r,onFocus:o,...l})=>(u.default.useEffect(()=>(o(),r),[o,r]),u.default.createElement(t.default,(0,e.default)({},l,{showCursor:!0})));l.propTypes={onBlur:r.default.func,onFocus:r.default.func};var s=l;exports.default=s;
87
87
  },{}],"pd2Y":[function(require,module,exports) {
88
88
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=f(require("@babel/runtime/helpers/extends")),t=require("ink"),r=f(require("prop-types")),a=d(require("react")),l=require("react-final-form"),n=f(require("../components/TextInput")),u=f(require("./ErrorDisplay")),o=f(require("../utilities/postToFirebaseFunction")),i=require("../utilities/firestore"),c=require("../utilities/configStore");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 d(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 a={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var u=l?Object.getOwnPropertyDescriptor(e,n):null;u&&(u.get||u.set)?Object.defineProperty(a,n,u):a[n]=e[n]}return a.default=e,r&&r.set(e,a),a}function f(e){return e&&e.__esModule?e:{default:e}}const m=[{name:"email",label:"Your email",placeholder:"name@email.com",Input:n.default,validate:e=>{if(!e)return"Required"}},{name:"accessToken",label:"Your access token",placeholder:"********",Input:n.default,validate:e=>{if(!e)return"Required"},mask:"*"}],p=({setIsLoggedIn:r})=>{const[n,s]=(0,a.useState)(0),[d,f]=(0,a.useState)(null),[p,T]=(0,a.useState)(null),[E,x]=(0,a.useState)(!1),y=e=>{x(!1),T(e),s(0)};return d?a.default.createElement(u.default,{error:d}):a.default.createElement(a.Fragment,null,a.default.createElement(t.Text,null,"You are not currently logged in."),a.default.createElement(t.Text,null,"Log in below:"),a.default.createElement(t.Box,{marginBottom:1}),a.default.createElement(l.Form,{onSubmit:async({email:e,accessToken:t})=>{T(null),x(!0);try{const l=await(0,o.default)("loginWithAccessToken",{email:e,accessToken:t});l?(await(0,i.signInWithCustomToken)(l),(0,c.setAuthConfig)(e,t,l),r(!0)):y("Incorrrect credentials. Try again")}catch(a){500===a.code?f(a):y(`Login unsuccessful: ${a.message}`)}}},({handleSubmit:r,validating:u,form:o})=>a.default.createElement(t.Box,{flexDirection:"column"},m.map(({name:o,label:i,placeholder:c,validate:d,Input:f,mask:p},T)=>a.default.createElement(l.Field,{name:o,key:o,validate:d},({input:l,meta:d})=>a.default.createElement(t.Box,{flexDirection:"column"},n>=T?a.default.createElement(t.Box,null,a.default.createElement(t.Text,{bold:n===T},i,": "),n===T?a.default.createElement(f,(0,e.default)({},l,{mask:p,placeholder:c,onSubmit:()=>{d.valid&&!u?(s(e=>e+1),n===m.length-1&&r()):l.onBlur()}})):l.value&&a.default.createElement(t.Text,null,"accessToken"===o?l.value.replace(/./gi,"*"):l.value)||c&&a.default.createElement(t.Text,{color:"gray"},c),d.invalid&&d.touched&&a.default.createElement(t.Box,{marginLeft:2,marginRight:1},a.default.createElement(t.Text,{color:"red"},"✖")),d.error&&d.touched&&a.default.createElement(g,{errorMessage:d.error})):null))))),E&&a.default.createElement(t.Box,{marginTop:1},a.default.createElement(t.Text,null,"Logging in...")),p&&a.default.createElement(g,{errorMessage:p,marginTop:!0}))},g=({errorMessage:e,marginTop:r})=>a.default.createElement(t.Box,{marginTop:r?1:0},a.default.createElement(t.Text,{color:"red"},e));g.propTypes={errorMessage:r.default.string.isRequired,marginTop:r.default.bool},p.propTypes={setIsLoggedIn:r.default.func.isRequired};var T=p;exports.default=T;
89
89
  },{"../components/TextInput":"iiO0","./ErrorDisplay":"f0Jz","../utilities/postToFirebaseFunction":"I8pf","../utilities/firestore":"gzUX","../utilities/configStore":"ffKF"}],"nLy3":[function(require,module,exports) {
90
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=d(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=p(require("react")),n=d(require("prop-types")),i=d(require("is-ci")),o=d(require("./Login")),u=require("../utilities/firestore"),a=require("../utilities/configStore"),s=d(require("../utilities/postToFirebaseFunction")),c=d(require("../utilities/getEnvironmentVariables")),l=d(require("./ErrorDisplay"));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}function p(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var u=i?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(n,o,u):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function d(e){return e&&e.__esModule?e:{default:e}}function O(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function y(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?O(Object(n),!0).forEach(function(r){(0,e.default)(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}const b=({children:e,isInteractive:n=!0})=>{const[f,p]=(0,r.useState)(!1),[d,O]=(0,r.useState)(!1),[b,g]=(0,r.useState)(null),{isRawModeSupported:v}=(0,t.useStdin)(),T=(e,t={})=>{g(y(y({},t),{},{message:e}))};return(0,r.useEffect)(()=>{!async function(){const{accessToken:e,email:t,jwtToken:r}=(0,a.getAuthConfig)();let n=null;const{TODESKTOP_ACCESS_TOKEN:o,TODESKTOP_EMAIL:l}=(0,c.default)();try{if(o&&l){const e=await(0,s.default)("loginWithAccessToken",{email:l,accessToken:o});e&&(n=await(0,u.signInWithCustomToken)(e)).user&&p(!0)}else v&&!i.default||T("ToDesktop environment variables not found. When automating builds with your CI provider, you need to specify environment variables for TODESKTOP_EMAIL and TODESKTOP_ACCESS_TOKEN.")}catch(f){T("Log in with environment variables failed.",f)}try{!n&&r&&(n=await(0,u.signInWithCustomToken)(r)).user&&p(!0)}catch(f){}try{if(!n&&e&&t){const r=await(0,s.default)("loginWithAccessToken",{email:t,accessToken:e});r&&(n=await(0,u.signInWithCustomToken)(r),(0,a.setAuthConfig)(t,e,r),n.user&&p(!0))}}catch(f){}O(!0)}()},[]),b&&n?r.default.createElement(l.default,{error:b}):d?!f&&n?r.default.createElement(o.default,{setIsLoggedIn:p}):r.default.createElement(r.Fragment,null,e):r.default.createElement(t.Text,null,"...")};b.propTypes={children:n.default.object,isInteractive:n.default.bool};var g=b;exports.default=g;
90
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("ink"),t=d(require("react")),r=c(require("prop-types")),n=c(require("is-ci")),i=c(require("./Login")),o=require("../utilities/firestore"),a=require("../utilities/configStore"),u=c(require("../utilities/postToFirebaseFunction")),s=c(require("../utilities/getEnvironmentVariables")),l=c(require("./ErrorDisplay"));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}function d(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}const p=({children:r,isInteractive:c=!0})=>{const[f,d]=(0,t.useState)(!1),[p,T]=(0,t.useState)(!1),[g,y]=(0,t.useState)(null),{isRawModeSupported:v}=(0,e.useStdin)(),O=(e,t={})=>{y({...t,message:e})};return(0,t.useEffect)(()=>{!async function(){const{accessToken:e,email:t,jwtToken:r}=(0,a.getAuthConfig)();let i=null;const{TODESKTOP_ACCESS_TOKEN:l,TODESKTOP_EMAIL:c}=(0,s.default)();try{if(l&&c){const e=await(0,u.default)("loginWithAccessToken",{email:c,accessToken:l});e&&(i=await(0,o.signInWithCustomToken)(e)).user&&d(!0)}else v&&!n.default||O("ToDesktop environment variables not found. When automating builds with your CI provider, you need to specify environment variables for TODESKTOP_EMAIL and TODESKTOP_ACCESS_TOKEN.")}catch(f){O("Log in with environment variables failed.",f)}try{!i&&r&&(i=await(0,o.signInWithCustomToken)(r)).user&&d(!0)}catch(f){}try{if(!i&&e&&t){const r=await(0,u.default)("loginWithAccessToken",{email:t,accessToken:e});r&&(i=await(0,o.signInWithCustomToken)(r),(0,a.setAuthConfig)(t,e,r),i.user&&d(!0))}}catch(f){}T(!0)}()},[]),g&&c?t.default.createElement(l.default,{error:g}):p?!f&&c?t.default.createElement(i.default,{setIsLoggedIn:d}):t.default.createElement(t.Fragment,null,r):t.default.createElement(e.Text,null,"...")};p.propTypes={children:r.default.object,isInteractive:r.default.bool};var T=p;exports.default=T;
91
91
  },{"./Login":"pd2Y","../utilities/firestore":"gzUX","../utilities/configStore":"ffKF","../utilities/postToFirebaseFunction":"I8pf","../utilities/getEnvironmentVariables":"gwcX","./ErrorDisplay":"f0Jz"}],"XM8F":[function(require,module,exports) {
92
92
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("react")),t=o(require("@sentry/node")),r=u(require("prop-types"));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=u?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(o,a,s):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o}function u(e){return e&&e.__esModule?e:{default:e}}class a extends e.default.Component{constructor(e){super(e),this.state={eventId:null,error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){t.withScope(n=>{n.setExtras(r);const o=t.captureException(e);this.setState({eventId:o})})}render(){if(this.state.error)throw this.state.error;return this.props.children}}a.propTypes={children:r.default.object};var s=a;exports.default=s;
93
93
  },{}],"OMIR":[function(require,module,exports) {
94
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=s(require("@babel/runtime/helpers/extends")),t=s(require("@babel/runtime/helpers/objectWithoutProperties")),r=require("ink"),l=s(require("prop-types")),u=s(require("react"));const i=["isSelected"];function s(e){return e&&e.__esModule?e:{default:e}}const o=l=>{let{isSelected:s}=l,o=(0,t.default)(l,i);return u.default.createElement(r.Box,(0,e.default)({marginRight:1},o),u.default.createElement(r.Text,null,s?"win32"===process.platform?">":"❯":" "))};o.propTypes={isSelected:l.default.bool.isRequired};var a=o;exports.default=a;
94
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("@babel/runtime/helpers/extends")),t=require("ink"),r=u(require("prop-types")),l=u(require("react"));function u(e){return e&&e.__esModule?e:{default:e}}const i=({isSelected:r,...u})=>l.default.createElement(t.Box,(0,e.default)({marginRight:1},u),l.default.createElement(t.Text,null,r?"win32"===process.platform?">":"❯":" "));i.propTypes={isSelected:r.default.bool.isRequired};var s=i;exports.default=s;
95
95
  },{}],"oPeF":[function(require,module,exports) {
96
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("@babel/runtime/helpers/extends")),r=o(require("@babel/runtime/helpers/objectWithoutProperties")),t=require("ink"),l=o(require("prop-types")),u=o(require("react"));const i=["isSelected","label"];function o(e){return e&&e.__esModule?e:{default:e}}const s=l=>{let{isSelected:o,label:s}=l,d=(0,r.default)(l,i);return u.default.createElement(t.Text,(0,e.default)({bold:o,color:o?void 0:"gray"},d),s)};s.propTypes={isSelected:l.default.bool.isRequired,label:l.default.string.isRequired};var d=s;exports.default=d;
96
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("@babel/runtime/helpers/extends")),r=require("ink"),t=u(require("prop-types")),l=u(require("react"));function u(e){return e&&e.__esModule?e:{default:e}}const d=({isSelected:t,label:u,...d})=>l.default.createElement(r.Text,(0,e.default)({bold:t,color:t?void 0:"gray"},d),u);d.propTypes={isSelected:t.default.bool.isRequired,label:t.default.string.isRequired};var i=d;exports.default=i;
97
97
  },{}],"EqTV":[function(require,module,exports) {
98
98
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("./firestore")),t=r(require("./logger"));function r(e){return e&&e.__esModule?e:{default:e}}function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var a=u?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}var u=async({appId:r})=>{t.default.debug({appId:r},"getLatestBuildId");const n=e.default.doc(`users/${(0,e.currentUser)().uid}/applications/${r}`);if(!(await n.get()).exists)throw new Error(`Application with ID of ${r} doesn't exist.`);const o=await n.collection("builds").orderBy("createdAt","desc").limit(1).get();return o.empty?null:o.docs[0].id};exports.default=u;
99
99
  },{"./firestore":"gzUX","./logger":"XvyO"}],"PlpY":[function(require,module,exports) {
100
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=g(require("@babel/runtime/helpers/defineProperty")),r=require("ink"),t=g(require("prop-types")),i=y(require("react")),n=g(require("./BuildProgress")),u=g(require("./ErrorDisplay")),o=g(require("./MainLayout")),a=require("../utilities/firestore"),l=g(require("../utilities/getLatestBuildId")),s=g(require("../utilities/projectConfig/getProjectConfig")),d=g(require("../utilities/logForCI")),f=g(require("../utilities/shouldExitOnBuildFailure")),c=g(require("../utilities/subscribeToBuild")),p=g(require("../utilities/useExit"));function b(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(b=function(e){return e?t:r})(e)}function y(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=b(r);if(t&&t.has(e))return t.get(e);var i={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var o=n?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(i,u,o):i[u]=e[u]}return i.default=e,t&&t.set(e,i),i}function g(e){return e&&e.__esModule?e:{default:e}}function h(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,i)}return t}function O(r){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?h(Object(i),!0).forEach(function(t){(0,e.default)(r,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):h(Object(i)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))})}return r}const m=({commandUsed:e,id:t})=>{const b=(0,p.default)(),[{appId:y,arbitraryMessageComponent:g,build:h,error:m,hasBuildFailed:w,isLoading:E},j]=(0,i.useState)({appId:null,arbitraryMessageComponent:null,build:null,error:null,hasBuildFailed:!1,isLoading:!0}),P=e=>{const r=e.response?e.response.data:e;(0,d.default)(r),j(e=>O(O({},e),{},{error:r}))};if((0,i.useEffect)(()=>{let e,n;try{e=(0,s.default)().config}catch(o){return void j(e=>O(O({},e),{},{error:o}))}const u=r=>{(0,c.default)({appId:e.id,buildId:r,onDataReceived:t=>{t||P(new Error(`No such build exists (${r}). Please contact us if this is an error`)),j(r=>O(O({},r),{},{appId:e.id,build:t,isLoading:!1}))},userId:(0,a.currentUser)().uid}).then(e=>{n=e}).catch(P)};return t?u(t):(0,l.default)({appId:e.id}).catch(P).then(e=>{if(e)return u(e);j(e=>O(O({},e),{},{arbitraryMessageComponent:i.default.createElement(r.Text,null,"There are no builds yet")}))}),()=>{n&&n()}},[t]),(0,i.useEffect)(()=>{w&&(0,f.default)(h)&&setTimeout(()=>b(new Error("Build has failed")),10)},[h,b,w]),(0,i.useEffect)(()=>{g&&setTimeout(()=>b(new Error("Validation failed")),10)},[g,b]),m)return i.default.createElement(u.default,{commandUsed:e,error:m});if(g)return g;if(E)return i.default.createElement(r.Text,null,"Loading...");return i.default.createElement(o.default,{appId:y,appName:h.appName,appVersion:h.appVersion,build:h,commandUsed:e,hasBuildFailed:w},i.default.createElement(n.default,{build:h,onBuildFailure:()=>{w||j(e=>O(O({},e),{},{hasBuildFailed:!0}))}}))};m.propTypes={id:(e,r,t)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${t}'`);const i=typeof e.id;return["string","undefined"].includes(i)?void 0:new Error(`'id' is a '${i}', not a string, in '${t}'.`)},commandUsed:t.default.string.isRequired,shouldViewLatest:(e,r,t)=>{if(1!==[e.id,e.shouldViewLatest].filter(Boolean).length)return new Error(`Exactly one of 'id' and 'shouldViewLatest' must be specified in '${t}'`);const i=typeof e.shouldViewLatest;return["boolean","undefined"].includes(i)?void 0:new Error(`'shouldViewLatest' is a '${i}', not a boolean, in '${t}'.`)}};var w=m;exports.default=w;
100
+ "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=require("../utilities/firestore"),o=b(require("../utilities/getLatestBuildId")),d=b(require("../utilities/projectConfig/getProjectConfig")),l=b(require("../utilities/logForCI")),s=b(require("../utilities/shouldExitOnBuildFailure")),f=b(require("../utilities/subscribeToBuild")),c=b(require("../utilities/useExit"));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 g=({commandUsed:t,id:p})=>{const h=(0,c.default)(),[{appId:b,arbitraryMessageComponent:g,build:y,error:m,hasBuildFailed:E,isLoading:w},q]=(0,r.useState)({appId:null,arbitraryMessageComponent:null,build:null,error:null,hasBuildFailed:!1,isLoading:!0}),v=e=>{const t=e.response?e.response.data:e;(0,l.default)(t),q(e=>({...e,error:t}))};if((0,r.useEffect)(()=>{let t,i;try{t=(0,d.default)().config}catch(n){return void q(e=>({...e,error:n}))}const u=e=>{(0,f.default)({appId:t.id,buildId:e,onDataReceived:r=>{r||v(new Error(`No such build exists (${e}). Please contact us if this is an error`)),q(e=>({...e,appId:t.id,build:r,isLoading:!1}))},userId:(0,a.currentUser)().uid}).then(e=>{i=e}).catch(v)};return p?u(p):(0,o.default)({appId:t.id}).catch(v).then(t=>{if(t)return u(t);q(t=>({...t,arbitraryMessageComponent:r.default.createElement(e.Text,null,"There are no builds yet")}))}),()=>{i&&i()}},[p]),(0,r.useEffect)(()=>{E&&(0,s.default)(y)&&setTimeout(()=>h(new Error("Build has failed")),10)},[y,h,E]),(0,r.useEffect)(()=>{g&&setTimeout(()=>h(new Error("Validation failed")),10)},[g,h]),m)return r.default.createElement(u.default,{commandUsed:t,error:m});if(g)return g;if(w)return r.default.createElement(e.Text,null,"Loading...");return r.default.createElement(n.default,{appId:b,appName:y.appName,appVersion:y.appVersion,build:y,commandUsed:t,hasBuildFailed:E},r.default.createElement(i.default,{build:y,onBuildFailure:()=>{E||q(e=>({...e,hasBuildFailed:!0}))}}))};g.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 y=g;exports.default=y;
101
101
  },{"./BuildProgress":"odFL","./ErrorDisplay":"f0Jz","./MainLayout":"T5Az","../utilities/firestore":"gzUX","../utilities/getLatestBuildId":"EqTV","../utilities/projectConfig/getProjectConfig":"Sx1d","../utilities/logForCI":"Sre8","../utilities/shouldExitOnBuildFailure":"ONhe","../utilities/subscribeToBuild":"ohCc","../utilities/useExit":"QLfx"}],"mzsi":[function(require,module,exports) {
102
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=h(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=h(require("ink-select-input")),i=h(require("prop-types")),n=O(require("react")),u=h(require("./CancelBuild")),l=h(require("./CustomSelectInputIndicator")),a=h(require("./CustomSelectInputItem")),o=h(require("./ErrorDisplay")),d=h(require("./ViewBuild")),c=require("../utilities/buildStatus"),s=O(require("../utilities/firestore")),p=h(require("../utilities/projectConfig/getProjectConfig")),f=h(require("../utilities/logger")),m=h(require("../utilities/useInput")),b=h(require("../utilities/useExit")),g=h(require("is-ci"));function y(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(y=function(e){return e?r:t})(e)}function O(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=y(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 l=n?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(i,u,l):i[u]=e[u]}return i.default=e,r&&r.set(e,i),i}function h(e){return e&&e.__esModule?e:{default:e}}function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function v(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?j(Object(i),!0).forEach(function(r){(0,e.default)(t,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):j(Object(i)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))})}return t}const w=({children:e,commandUsed:i})=>{const{isRawModeSupported:y}=(0,t.useStdin)(),O=(0,m.default)(),h=(0,b.default)(),[{appId:j,build:w,error:q,isLoading:E,itemChosen:P},C]=(0,n.useState)({appId:null,build:null,error:null,isLoading:!0,itemChosen:null});if((0,n.useEffect)(()=>{E&&(async()=>{try{const t=(0,p.default)().config.id,r=await s.default.doc(`users/${(0,s.currentUser)().uid}/applications/${t}`).collection("builds").orderBy("createdAt","desc").limit(1).get(),i={appId:t,isLoading:!1};if(!r.empty){const e=r.docs[0].data(),t=(0,c.isBuildRunning)(e)&&"preparation"!==e.status;f.default.debug({isRunning:t},"OngoingBuildGuard component: got latest build"),t&&(i.build=e)}y&&!g.default||!i.build||(i.error=new Error("There is an ongoing build. Please cancel the build on ToDesktop's web UI: https://app.todesktop.com/")),C(e=>v(v({},e),i))}catch(e){C(t=>v(v({},t),{},{error:e}))}})()},[w,P,E,y]),y&&O(()=>{}),q)return n.default.createElement(o.default,{commandUsed:i,error:q});if(E)return n.default.createElement(t.Text,null,"...");if(P){if(f.default.debug({itemChosen:P},"OngoingBuildGuard component: item chosen"),"view"===P.value)return n.default.createElement(d.default,{commandUsed:i,id:w.id});if("cancel"===P.value)return n.default.createElement(u.default,{appId:j,commandUsed:i,id:w.id},e);setTimeout(h,10)}if(w){const e=[{label:"View it",value:"view"}];(0,c.isBuildCancellable)(w)&&e.push({label:"Cancel it and start a new build",value:"cancel"}),e.push({label:"Exit",value:"exit"});const i=e=>C(t=>v(v({},t),{},{itemChosen:e}));return n.default.createElement(n.Fragment,null,n.default.createElement(t.Box,{marginBottom:1},n.default.createElement(t.Text,{bold:!0},"There is an ongoing build "),n.default.createElement(t.Text,null,"(",w.appName,w.appVersion?` v${w.appVersion}`:"",")")),n.default.createElement(r.default,{indicatorComponent:l.default,itemComponent:a.default,items:e,onSelect:i}))}return n.default.createElement(n.Fragment,null,e)};w.propTypes={commandUsed:i.default.string.isRequired,children:i.default.oneOfType([i.default.array,i.default.object])};var q=w;exports.default=q;
102
+ "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=v(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"));function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(b=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=b(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 h=({children:r,commandUsed:b})=>{const{isRawModeSupported:v}=(0,e.useStdin)(),y=(0,p.default)(),h=(0,m.default)(),[{appId:q,builds:E,error:C,isLoading:w,itemChosen:B},O]=(0,i.useState)({appId:null,builds:[],error:null,isLoading:!0,itemChosen:null});if((0,i.useEffect)(()=>{w&&(async()=>{try{const t=(0,c.default)().config.id,r=await s.default.doc(`users/${(0,s.currentUser)().uid}/applications/${t}`).collection("builds").orderBy("createdAt","desc").limit(10).get(),i={appId:t,isLoading:!1,builds:[]};if(!r.empty){const e=r.docs[0].data(),t=(0,d.isBuildRunning)(e)&&"preparation"!==e.status;f.default.debug({isRunning:t},"OngoingBuildGuard component: got latest build"),i.builds=r.docs.map(e=>e.data()).filter(e=>!(!(0,d.isBuildRunning)(e)||"preparation"===e.status))}O(e=>({...e,...i}))}catch(e){O(t=>({...t,error:e}))}})()},[E,B,w,v]),v&&y(()=>{}),C)return i.default.createElement(l.default,{commandUsed:b,error:C});if(w)return i.default.createElement(e.Text,null,"...");if(B){f.default.debug({itemChosen:B},"OngoingBuildGuard component: item chosen");const e=E.find(Boolean);if("view"===B.value)return i.default.createElement(o.default,{commandUsed:b,id:e.id});if("cancel"===B.value)return i.default.createElement(n.default,{appId:q,commandUsed:b,id:e.id},r);if("concurrent"===B.value)return i.default.createElement(i.Fragment,null,r);setTimeout(h,10)}if(E.length&&!1===g.default&&v){const r=E.find(Boolean),n=E.length>1,l=[{label:`View ${n?"latest":"it"}`,value:"view"}];E.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=>O(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)};h.propTypes={commandUsed:r.default.string.isRequired,children:r.default.oneOfType([r.default.array,r.default.object])};var q=h;exports.default=q;
103
103
  },{"./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"}],"AYMC":[function(require,module,exports) {
104
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("chalk")),t=u(require("is-installed-globally")),r=u(require("latest-version")),o=u(require("pkg-up")),s=u(require("semver"));function u(e){return e&&e.__esModule?e:{default:e}}var i=()=>{if(process.env.AVA_PATH)return;const u=require(o.default.sync({cwd:__dirname}));(0,r.default)(u.name).then(r=>{if(s.default.gt(r,u.version)){const r=e.default.greenBright(`npm install ${t.default?"-g":"--save-dev"} @todesktop/cli`);console.log(`Your version of @todesktop/cli is out of date.\nRun ${r} to update`),process.exit(1)}})};exports.default=i;
104
+ "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 u=()=>{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?"-g":"--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=u;
105
105
  },{}],"EHrm":[function(require,module,exports) {
106
- module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"0.28.0-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:">=8"},scripts:{dev:"cp-cli dev.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",lint:"eslint .","lint--fix":"eslint . --fix",release:"npm run build && npx np --no-tests --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:{"@sentry/node":"^5.27.2",ajv:"^6.12.6","analytics-node":"^4.0.1",archiver:"^5.2.0","aws-sdk":"^2.730.0",axios:"^0.21.1","better-ajv-errors":"^0.6.7",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.23.0","git-rev-sync":"^3.0.2",ink:"^3.2.0","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-progress-bar":"^3.0.0","ink-select-input":"^4.2.1","ink-text-input":"^4.0.1","is-installed-globally":"^0.3.2","latest-version":"^5.1.0","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:"^16.13.1","react-final-form":"^6.5.1","s3-upload-stream":"^1.0.7",semver:"^7.3.2",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:"^3.12.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","is-ci":"^2.0.0","lint-staged":"^10.2.11",pastel:"^1.1.1",prettier:"^2.1.2",proxyquire:"^2.1.3",sinon:"^9.0.3"},ava:{babel:!0,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.24"}}},resolutions:{"pastel/parcel-bundler/deasync":"0.1.24"}};
106
+ module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"1.0.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:{preinstall:"npx force-resolutions",dev:"cp-cli dev.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",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:{"@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":"^0.6.7",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.23.0","force-resolutions":"^1.0.10","git-rev-sync":"^3.0.2",ink:"^3.2.0","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-progress-bar":"^3.0.0","ink-select-input":"^4.2.1","ink-text-input":"^4.0.1","is-installed-globally":"^0.3.2","latest-version":"^5.1.0","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:"^16.13.1","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:"^3.12.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","is-ci":"^2.0.0","lint-staged":"^10.2.11",pastel:"^1.1.1",prettier:"^2.1.2",proxyquire:"^2.1.3",sinon:"^9.0.3"},ava:{babel:!0,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.24"}}},resolutions:{"pastel/parcel-bundler/deasync":"0.1.24",ink:"3.2.0"}};
107
107
  },{}],"SYaU":[function(require,module,exports) {
108
108
  "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;
109
109
  },{"../../package.json":"EHrm","../utilities/configStore":"ffKF","../utilities/projectConfig/getProjectConfig":"Sx1d","./getEnvironmentVariables":"gwcX"}],"rPNZ":[function(require,module,exports) {
110
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("@babel/runtime/helpers/defineProperty")),t=n(require("./exitIfCLIOutOfDate")),r=n(require("./initSentry"));function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function u(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?o(Object(n),!0).forEach(function(r){(0,e.default)(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}const i={sentry:!0,exitIfOutOfDate:!0};var c=e=>{const{sentry:n,exitIfOutOfDate:o}=u(u({},i),e);n&&(0,r.default)(),o&&(0,t.default)()};exports.default=c;
110
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("./exitIfCLIOutOfDate")),t=r(require("./initSentry"));function r(e){return e&&e.__esModule?e:{default:e}}const u={sentry:!0,exitIfOutOfDate:!0};var f=r=>{const{sentry:f,exitIfOutOfDate:a}={...u,...r};f&&(0,t.default)(),a&&(0,e.default)()};exports.default=f;
111
111
  },{"./exitIfCLIOutOfDate":"AYMC","./initSentry":"SYaU"}],"CV1E":[function(require,module,exports) {
112
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useAnalyticsCommand=void 0;var e=c(require("@babel/runtime/helpers/defineProperty")),t=require("react"),r=require("./firestore"),i=require("./analytics"),n=c(require("../utilities/logger")),o=c(require("../utilities/projectConfig/getProjectConfig"));function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function a(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?s(Object(i),!0).forEach(function(r){(0,e.default)(t,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):s(Object(i)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))})}return t}const u=(e,c={},s={})=>{const[u,l]=(0,t.useState)(!1);n.default.info({command:e,flags:c,properties:s},"useAnalyticsCommand");try{c.projectPath&&(s=a(a({},s),(0,o.default)()))}catch(f){}return(0,t.useEffect)(()=>{const t=(0,r.onUserAuth)(async r=>{r.uid&&(0,i.identify)(r.uid,{email:r.email,displayName:r.displayName},()=>{(0,i.track)(i.ANALYTICS_EVENT.CLI_COMMAND,a(a({},s),{},{flags:c,command:e}),()=>l(!0)),t&&t()})});setTimeout(()=>l(!0),5e3)},[]),{hasAttemptedTracking:u}};exports.useAnalyticsCommand=u;
112
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useAnalyticsCommand=void 0;var e=require("react"),t=require("./firestore"),i=require("./analytics"),r=s(require("../utilities/logger")),a=s(require("../utilities/projectConfig/getProjectConfig"));function s(e){return e&&e.__esModule?e:{default:e}}const o=(s,o={},u={})=>{const[n,c]=(0,e.useState)(!1);r.default.info({command:s,flags:o,properties:u},"useAnalyticsCommand");try{o.projectPath&&(u={...u,...(0,a.default)()})}catch(l){}return(0,e.useEffect)(()=>{const e=(0,t.onUserAuth)(async t=>{t.uid&&(0,i.identify)(t.uid,{email:t.email,displayName:t.displayName},()=>{(0,i.track)(i.ANALYTICS_EVENT.CLI_COMMAND,{...u,flags:o,command:s},()=>c(!0)),e&&e()})});setTimeout(()=>c(!0),5e3)},[]),{hasAttemptedTracking:n}};exports.useAnalyticsCommand=o;
113
113
  },{"./firestore":"gzUX","./analytics":"ALju","../utilities/logger":"XvyO","../utilities/projectConfig/getProjectConfig":"Sx1d"}],"Wc0b":[function(require,module,exports) {
114
114
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=a(require("prop-types")),t=a(require("react")),l=a(require("../lib/components/Build")),u=a(require("../lib/utilities/checkIfReactIsUsable")),i=a(require("../lib/components/LoginHOC")),r=a(require("../lib/components/ErrorBoundary")),o=a(require("../lib/components/OngoingBuildGuard")),d=a(require("../lib/utilities/onCommand")),n=require("../lib/utilities/useAnalytics");function a(e){return e&&e.__esModule?e:{default:e}}(0,d.default)();const s=({codeSign:e=!0})=>{(0,u.default)(),(0,n.useAnalyticsCommand)("build",{codeSign:e});return t.default.createElement(r.default,null,t.default.createElement(i.default,null,t.default.createElement(o.default,{commandUsed:"todesktop build"},t.default.createElement(l.default,{commandUsed:"todesktop build",shouldCodeSign:e}))))};s.propTypes={codeSign:e.default.bool};var c=s;exports.default=c;
115
115
  },{"../lib/components/Build":"PaIV","../lib/utilities/checkIfReactIsUsable":"cb6D","../lib/components/LoginHOC":"nLy3","../lib/components/ErrorBoundary":"XM8F","../lib/components/OngoingBuildGuard":"mzsi","../lib/utilities/onCommand":"rPNZ","../lib/utilities/useAnalytics":"CV1E"}]},{},["Wc0b"], null)