@todesktop/cli 0.25.0 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -249,6 +249,62 @@ You can generate a retina tiff background from png files using the following com
249
249
  tiffutil -cathidpicheck background.png background@2x.png -out background.tiff
250
250
  ```
251
251
 
252
+ #### `dmg.backgroundColor` - (optional) string
253
+
254
+ The background color (accepts css colors). Defaults to "`#ffffff`" (white) if no background image.
255
+
256
+ #### `dmg.iconSize` - (optional) number
257
+
258
+ The size of all the icons inside the DMG. Defaults to `80`.
259
+
260
+ #### `dmg.iconTextSize` - (optional) number
261
+
262
+ The size of all the icon texts inside the DMG. Defaults to `12`.
263
+
264
+ #### `dmg.title` - (optional) string
265
+
266
+ The title of the produced DMG, which will be shown when mounted (volume name). Macro `${productName}`, `${version}` and `${name}` are supported.
267
+
268
+ Defaults to "`${productName} ${version}`".
269
+
270
+ #### `dmg.contents` - (optional) Array of objects
271
+
272
+ Customize icon locations. The x and y coordinates refer to the position of the center of the icon (at 1x scale), and do not take the label into account.
273
+
274
+ - `x` number - The device-independent pixel offset from the left of the window to the center of the icon.
275
+ - `y` number - The device-independent pixel offset from the top of the window to the center of the icon.
276
+
277
+ ```
278
+ [
279
+ {
280
+ // Your app icon
281
+ "x": 100,
282
+ "y": 100
283
+ },
284
+ {
285
+ // Applications directory icon
286
+ "x": 300,
287
+ "y": 100,
288
+ }
289
+ ]
290
+ ```
291
+
292
+ #### `dmg.window` - (optional) object
293
+
294
+ The DMG windows position and size. In most cases, you will only want to specify a `height` and `width` value but not `x` and `y`.
295
+
296
+ - `x` number - The X position relative to left of the screen.
297
+ - `y` number - The Y position relative to top of the screen.
298
+ - `width` number - The width. Defaults to background image width or 540.
299
+ - `height` number - The height. Defaults to background image height or 380.
300
+
301
+ ```
302
+ {
303
+ "width": "400",
304
+ "height": "300"
305
+ }
306
+ ```
307
+
252
308
  ### `extraContentFiles` - (optional) array of objects
253
309
 
254
310
  Default: `[]`.
@@ -277,7 +333,15 @@ Default: Electron is downloaded from the main official source.
277
333
 
278
334
  Example: `https://cdn.npm.taobao.org/dist/electron/`
279
335
 
280
- The base URL of the mirror to download Electron from. This may be a mirror geographically closer to you or even your own mirror which contains custom Electron builds. The version downloaded is the Electron version specified in `devDependencies` in your app's `package.json`.
336
+ The base URL of the mirror to download Electron from. This may be a mirror geographically closer to you or even your own mirror which contains custom Electron builds. The version downloaded is the Electron version specified in `devDependencies` in your app's `package.json`. Alternatively you can explicitly specify an `electronVersion` in `todesktop.json` as described below.
337
+
338
+ ### `electronVersion` - (optional) string
339
+
340
+ Default: Electron version specified in `devDependencies` in your app's `package.json`
341
+
342
+ Example: `12.0.7-beta.17`
343
+
344
+ The version of Electron to use. In most cases you should not specify an `electronVersion` property. Only specify this option if you wish to override the version that is specified in `package.json`.
281
345
 
282
346
  ### `extraResources` - (optional) array of objects
283
347
 
@@ -319,8 +383,6 @@ Example:
319
383
 
320
384
  ### `filesForDistribution` - (optional) array of glob patterns
321
385
 
322
- Default: `["**"]`
323
-
324
386
  Example: `["!**/node_modules/realm/android/**", "!**/design/**"]`
325
387
 
326
388
  This option allows you to explicitly exclude or include certain files in the packaged version of your app. These files are filtered _after_ the build step which happens on the ToDesktop servers.
@@ -591,3 +653,22 @@ The path to your application's Windows desktop icon. It must be an ICO, ICNS, or
591
653
  ### Recommendations for app package.json
592
654
 
593
655
  - You should set the `productName` property. Otherwise, your app name will default to the value of the `name` property.
656
+
657
+ ## FAQs
658
+
659
+ ### One of my dependencies is a private package. How do I safely using it with ToDesktop CLI
660
+
661
+ ToDesktop CLI is similar to Continuous Integration service so you can use the guide from here: https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow/
662
+
663
+ To summarize:
664
+
665
+ 1. Create a token using npm: `npm token create --read-only`.
666
+ 2. In ToDesktop's web UI go to Settings -> Build and Deploy.
667
+ 3. Enter an environment variable key of `NPM_TOKEN` and value should be the token entered above.
668
+ 4. Create an `.npmrc` file in the root of your project with the following contents:
669
+
670
+ ```
671
+ //registry.npmjs.org/:_authToken=${NPM_TOKEN}
672
+ ```
673
+
674
+ 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`.
@@ -55,7 +55,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
55
55
  },{"./addCustomKeywords":"g5Ig","./schema/packageJSON":"zW94"}],"g5Ig":[function(require,module,exports) {
56
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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function a(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o();if(r&&r.has(e))return r.get(e);var t={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if(Object.prototype.hasOwnProperty.call(e,s)){var n=i?Object.getOwnPropertyDescriptor(e,s):null;n&&(n.get||n.set)?Object.defineProperty(t,s,n):t[s]=e[s]}return t.default=e,r&&r.set(e,t),t}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;
57
57
  },{"./validatePackageJSON":"fl4s"}],"CN2N":[function(require,module,exports) {
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"},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}}},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;
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) {
60
60
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=a(require("ajv")),o=a(require("better-ajv-errors")),t=a(require("./addCustomKeywords")),r=a(require("./schema/full"));function a(e){return e&&e.__esModule?e:{default:e}}var n=({config:a,projectRoot:n})=>{const s={projectRoot:n},d=(0,r.default)(s),p=new e.default({allErrors:!0,jsonPointers:!0});(0,t.default)(p,s);const i=p.compile(d);if(!i(a)){const e=(0,o.default)(d,a,i.errors,{indent:2});throw new Error(`todesktop.json invalid. \nLearn more here: https://www.npmjs.com/package/@todesktop/cli#project-configuration-todesktopjson \n\n${e}`)}if(a.productName)throw new Error('todesktop.json invalid.\n\nThe "productName" property is no longer supported in todesktop.json. Please remove it and add it to your app\'s package.json instead.\n\nWe made this change because Electron also uses the "productName" if it exists in your app\'s package.json. If you do not add it to your package.json, your app name will default to the value of the "name" property in your package.json.')};exports.default=n;
61
61
  },{"./addCustomKeywords":"g5Ig","./schema/full":"CN2N"}],"Sx1d":[function(require,module,exports) {
@@ -87,7 +87,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function d(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if(Object.prototype.hasOwnProperty.call(e,l)){var n=a?Object.getOwnPropertyDescriptor(e,l):null;n&&(n.get||n.set)?Object.defineProperty(r,l,n):r[l]=e[l]}return r.default=e,t&&t.set(e,r),r}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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function p(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}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),v=(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 i.default&&v("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){v("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=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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function p(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}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;
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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return n=function(){return e},e}function o(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if(Object.prototype.hasOwnProperty.call(e,u)){var s=o?Object.getOwnPropertyDescriptor(e,u):null;s&&(s.get||s.set)?Object.defineProperty(r,u,s):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r}function u(e){return e&&e.__esModule?e:{default:e}}class s 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}}s.propTypes={children:r.default.object};var i=s;exports.default=i;
93
93
  },{}],"OMIR":[function(require,module,exports) {
@@ -99,11 +99,11 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
99
99
  },{"./firestore":"gzUX","./logger":"XvyO"}],"PlpY":[function(require,module,exports) {
100
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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return b=function(){return e},e}function y(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=b();if(r&&r.has(e))return r.get(e);var t={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var u=i?Object.getOwnPropertyDescriptor(e,n):null;u&&(u.get||u.set)?Object.defineProperty(t,n,u):t[n]=e[n]}return t.default=e,r&&r.set(e,t),t}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;
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=O(require("@babel/runtime/helpers/defineProperty")),t=require("ink"),r=O(require("ink-select-input")),i=O(require("prop-types")),n=y(require("react")),u=O(require("./CancelBuild")),l=O(require("./CustomSelectInputIndicator")),a=O(require("./CustomSelectInputItem")),o=O(require("./ErrorDisplay")),d=O(require("./ViewBuild")),c=require("../utilities/buildStatus"),s=y(require("../utilities/firestore")),f=O(require("../utilities/projectConfig/getProjectConfig")),p=O(require("../utilities/logger")),m=O(require("../utilities/useInput")),b=O(require("../utilities/useExit"));function g(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return g=function(){return e},e}function y(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=g();if(t&&t.has(e))return t.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var u=i?Object.getOwnPropertyDescriptor(e,n):null;u&&(u.get||u.set)?Object.defineProperty(r,n,u):r[n]=e[n]}return r.default=e,t&&t.set(e,r),r}function O(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 h=({children:e,commandUsed:i})=>{const g=(0,m.default)(),y=(0,b.default)(),[{appId:O,build:j,error:h,isLoading:q,itemChosen:w},E]=(0,n.useState)({appId:null,build:null,error:null,isLoading:!0,itemChosen:null});if((0,n.useEffect)(()=>{q&&(async()=>{try{const t=(0,f.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;p.default.debug({isRunning:t},"OngoingBuildGuard component: got latest build"),t&&(i.build=e)}E(e=>v(v({},e),i))}catch(e){E(t=>v(v({},t),{},{error:e}))}})()},[j,w,q]),g(()=>{}),h)return n.default.createElement(o.default,{commandUsed:i,error:h});if(q)return n.default.createElement(t.Text,null,"...");if(w){if(p.default.debug({itemChosen:w},"OngoingBuildGuard component: item chosen"),"view"===w.value)return n.default.createElement(d.default,{commandUsed:i,id:j.id});if("cancel"===w.value)return n.default.createElement(u.default,{appId:O,commandUsed:i,id:j.id},e);setTimeout(y,10)}if(j){const e=[{label:"View it",value:"view"}];(0,c.isBuildCancellable)(j)&&e.push({label:"Cancel it and start a new build",value:"cancel"}),e.push({label:"Exit",value:"exit"});const i=e=>E(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,"(",j.appName,j.appVersion?` v${j.appVersion}`:"",")")),n.default.createElement(r.default,{indicatorComponent:l.default,itemComponent:a.default,items:e,onSelect:i}))}return n.default.createElement(n.Fragment,null,e)};h.propTypes={commandUsed:i.default.string.isRequired,children:i.default.oneOfType([i.default.array,i.default.object])};var q=h;exports.default=q;
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(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return y=function(){return e},e}function O(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=y();if(t&&t.has(e))return t.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var u=i?Object.getOwnPropertyDescriptor(e,n):null;u&&(u.get||u.set)?Object.defineProperty(r,n,u):r[n]=e[n]}return r.default=e,t&&t.set(e,r),r}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;
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
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;
105
105
  },{}],"EHrm":[function(require,module,exports) {
106
- module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"0.24.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",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",chalk:"^4.1.0",conf:"^7.1.2","date-fns":"^2.15.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.0",ink:"^3.0.7","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-progress-bar":"^3.0.0","ink-select-input":"^4.2.0","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",pastel:"1.1.1","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"},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",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"}}};
106
+ module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"0.27.1",license:"MIT",author:"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",homepage:"https://todesktop.com/cli",bugs:{email:"dave@todesktop.com"},bin:{todesktop:"./build/cli.js"},engines:{node:">=8"},scripts:{dev:"cp-cli dev.env .env && pastel dev",build:"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env",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",chalk:"^4.1.0",conf:"^7.1.2","date-fns":"^2.28.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",pastel:"1.1.1","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"},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",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"}}};
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")),i=u(require("path")),a=u(require("./getEnvironmentVariables"));function u(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function c(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=n?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r}var f=()=>{const{TODESKTOP_CLI_SENTRY_DSN:i}=(0,a.default)();i&&(e.init({dsn:i}),e.configureScope(e=>{try{e.setUser({email:(0,n.getAuthConfig)().email})}catch(i){}try{e.setContext("os",{name:t.default.platform(),version:t.default.release()})}catch(i){}try{e.setContext("runtime",{name:"Node.js",version:process.version})}catch(i){}try{e.setContext("app",{app_name:r.default.name,app_version:r.default.version})}catch(i){}try{const t=(0,o.default)();e.setExtra("config",t)}catch(i){}}))};exports.default=f;
109
109
  },{"../../package.json":"EHrm","../utilities/configStore":"ffKF","../utilities/projectConfig/getProjectConfig":"Sx1d","./getEnvironmentVariables":"gwcX"}],"rPNZ":[function(require,module,exports) {