@todesktop/cli 1.0.0 → 1.1.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
@@ -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
 
@@ -227,6 +229,16 @@ Example: `word`.
227
229
 
228
230
  If you want to register a protocol for your application (e.g. `example://`) and or support deeplinking, you will need to use this option. If your desired protocol is `example://`, you would set `"appProtocolScheme": "example"`. NOTE: these features also require additional application logic.
229
231
 
232
+ ### `asarUnpack` - (optional) boolean or array of glob patterns
233
+
234
+ Default: [`**/*.node`]
235
+
236
+ This option allows you to decide which files get unpacked from the asar archive. By default we unpack all native `*.node` files.
237
+
238
+ If you want to unpack only files that are required to be unpacked, you can set this property to `false`.
239
+
240
+ You can also specify a list of glob patterns to unpack.
241
+
230
242
  ### `copyright` - (optional) string
231
243
 
232
244
  Default: The `package.json` [productName](#recommendations-for-app-packagejson) / `name`.
@@ -647,6 +659,86 @@ Default: The root [`icon`](#icon---string) is used.
647
659
 
648
660
  The path to your application's Windows desktop icon. It must be an ICO, ICNS, or PNG.
649
661
 
662
+ ## Build lifecycle hooks (package.json scripts)
663
+
664
+ 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.
665
+
666
+ 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.
667
+
668
+ ```json
669
+ {
670
+ "scripts": {
671
+ "todesktop:beforeInstall": "./scripts/beforeInstall.js",
672
+ "todesktop:afterPack": "./scripts/afterPack.js"
673
+ }
674
+ }
675
+ ```
676
+
677
+ When writing your script, you can follow this template:
678
+
679
+ ```js
680
+ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
681
+ /**
682
+ * pkgJsonPath - string - path to the package.json file
683
+ * pkgJson - object - the parsed package.json file
684
+ * appDir - string - the path to the app directory
685
+ * hookName - string - the name of the hook ("todesktop:beforeInstall" or "todesktop:afterPack")
686
+ */
687
+ };
688
+ ```
689
+
690
+ ### `todesktop:beforeInstall` - (optional) path to script
691
+
692
+ Example: `./scripts/beforeInstall.js`.
693
+
694
+ The path to a script that will be run before the build starts.
695
+
696
+ Example script:
697
+
698
+ ```js
699
+ const { writeFile } = require("fs/promises");
700
+
701
+ // Delete `internal` dependency from package.json
702
+ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
703
+ delete pkgJson.dependencies["internal"];
704
+ await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
705
+ };
706
+ ```
707
+
708
+ ### `todesktop:afterPack` - (optional) path to script
709
+
710
+ Example: `./scripts/afterPack.js`.
711
+
712
+ 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).
713
+
714
+ The `afterPack` function also has the following arguments added to it's signature:
715
+
716
+ - appPkgName - string - the name of the app package
717
+ - appId - string - the app id
718
+ - shouldCodeSign - boolean - whether the app will be code signed or not
719
+ - outDir - string - the path to the output directory
720
+ - appOutDir - string - the path to the app output directory
721
+ - arch - string - the architecture of the app
722
+ - packager - object - the packager object
723
+
724
+ Example script:
725
+
726
+ ```js
727
+ const { writeFile } = require("fs/promises");
728
+
729
+ // Add a copyright file inside of the app directory on Mac only
730
+ module.exports = async ({ appOutDir, packager }) => {
731
+ if (os.platform() === "darwin") {
732
+ const appName = packager.appInfo.productFilename;
733
+ const appPath = path.join(`${appOutDir}`, `${APP_NAME}.app`);
734
+ await writeFile(
735
+ path.join(appPath, "copyright.txt"),
736
+ `Copyright © ${new Date().getFullYear()} ${APP_NAME}`
737
+ );
738
+ }
739
+ };
740
+ ```
741
+
650
742
  ## App package.json requirements
651
743
 
652
744
  - Electron must be in your `devDependencies` and it must be a fixed version. I.e. it doesn't start with `^` or `~`.
@@ -674,3 +766,16 @@ To summarize:
674
766
  ```
675
767
 
676
768
  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`.
769
+
770
+ ## Changelog
771
+
772
+ ### v1.1.0
773
+
774
+ - Add support for `beforeInstall` and `afterPack` hooks.
775
+
776
+ ### v1.0.0
777
+
778
+ - Feature: Support multiple concurrent builds
779
+ - Enhancement: Switched to presigned uploads (removes AWS dependency)
780
+ - Fix: Fixed package resolution for Ink
781
+ - Add PNPM support
@@ -49,13 +49,13 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
49
49
  },{}],"waRp":[function(require,module,exports) {
50
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
- "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;
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 n=(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}},asarUnpack:{oneOf:[{type:"boolean"},{type:"array",items:{type:"string",minLength:1},minItems:1}]},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:n(),linux:{properties:{category:{type:"string",minLength:1},icon:n()}},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:n()}},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:n(["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) {
@@ -73,7 +73,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
73
73
  },{"./getEnvironmentVariables":"gwcX","./logger":"XvyO","../utilities/getCallableFirebaseFunction":"koRC"}],"AV41":[function(require,module,exports) {
74
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=p(require("fast-glob")),o=l(require("fs")),t=l(require("path")),n=p(require("./generateS3Key")),i=p(require("./logger")),r=p(require("./uploadToS3")),a=p(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 l(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 p(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("**");const s=a.map(e=>{return(t.isAbsolute(e)?t.relative(i,e):e).replace(/\\/g,"/").replace(/\/+$/,"")}).filter(e=>!e.startsWith("..")&&!e.startsWith("!.."));let l=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&&(l=l.map(e=>e.replace(/\//g,t.sep))),!l||!l.length)throw new Error("No files found to upload");if(!l.filter(e=>e.endsWith(".js")).length)throw new Error(`No .js files found to upload (${l[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")),!l.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 l.map(e=>({from:e,to:t.join("app",t.relative(i,e))}))};var u=async({appId:e,appPkgJson:o,buildId:s,config:l,onProgress:p})=>{i.default.debug({appId:e,appPkgJson:o,buildId:s,config:l,onProgress:p},"uploadApplicationSource");let u=0;const f=[...await c(l.appFiles,l.appPath,o),...(l.extraContentFiles||[]).map(({from:e,to:o="."})=>({from:e,to:t.join("extraContentFiles",o,t.basename(e))})),...(l.extraResources||[]).map(({from:e,to:o="."})=>({from:e,to:t.join("extraResources",o,t.basename(e))})),{from:l.icon,to:t.join("icons","appIcon"+t.extname(l.icon))}];return l.linux&&l.linux.icon&&f.push({from:l.linux.icon,to:t.join("icons","appIcon-linux"+t.extname(l.linux.icon))}),l.mac&&(l.mac.entitlements&&f.push({from:l.mac.entitlements,to:t.join("other","mac","entitlements.mac.plist")}),l.mac.icon&&f.push({from:l.mac.icon,to:t.join("icons","appIcon-mac"+t.extname(l.mac.icon))})),l.dmg&&l.dmg.background&&f.push({from:l.dmg.background,to:t.join("other","mac","dmg-background.tiff")}),l.windows&&l.windows.icon&&f.push({from:l.windows.icon,to:t.join("icons","appIcon-windows"+t.extname(l.windows.icon))}),(0,r.default)({bucket:l.bucket||void 0,inputStream:await(0,a.default)({files:f,fileSizeLimit:l.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}){p(e/o*100,e)}})};exports.default=u;
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) {
@@ -101,9 +101,9 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
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
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.2",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","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"}};
106
+ module.exports={private:!1,publishConfig:{access:"public"},name:"@todesktop/cli",version:"1.1.1",license:"MIT",author:"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",homepage:"https://todesktop.com/cli",bugs:{email:"dave@todesktop.com"},bin:{todesktop:"./build/cli.js"},engines:{node:">=12"},scripts:{dev:"cp-cli dev.env .env && pastel dev","dev:prod":"cp-cli prod.env .env && pastel dev",build:"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\/boot@.\\/boot@g' build/cli.js",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":"^1.2.0",bunyan:"^1.8.14","camelcase-keys":"^5.2.0",chalk:"^4.1.0",conf:"^7.1.2","date-fns":"^2.28.0",decamelize:"^1.2.0",del:"^6.0.0",dotenv:"^8.2.0",du:"^1.0.0","email-regex":"^4.0.0","fast-glob":"^3.2.4","final-form":"^4.20.1","find-up":"^5.0.0",firebase:"^7.24.0","git-rev-sync":"^3.0.2",ink:"^3.2.0","ink-gradient":"^2.0.0","ink-link":"^2.0.0","ink-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:"^17.0.2","react-final-form":"^6.5.1",semver:"^7.3.2","stream-to-array":"^2.3.0",superagent:"^7.1.3",uuid:"^8.3.1","xdg-basedir":"^4.0.0",yargs:"^15.4.1"},devDependencies:{"@ava/babel":"^1.0.1","@babel/core":"^7.12.3","@babel/plugin-transform-runtime":"^7.12.1","@babel/preset-env":"^7.11.5","@babel/register":"^7.12.1","@types/bunyan":"^1.8.6",ava:"^4.3.1","babel-preset-es2015":"^6.24.1","cp-cli":"^2.0.0","cross-env":"^7.0.2",eslint:"^7.6.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.21.4","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-standard":"^4.0.1",execa:"^4.0.3","extract-zip":"^2.0.1","fs-extra":"^9.0.1",husky:"^4.3.0","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:{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",react:"17.0.2"}};
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) {