@appium/support 2.61.1 → 3.0.1

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.
Files changed (61) hide show
  1. package/build/lib/console.d.ts +1 -1
  2. package/build/lib/console.js +169 -105
  3. package/build/lib/console.js.map +1 -1
  4. package/build/lib/env.d.ts.map +1 -1
  5. package/build/lib/env.js +144 -117
  6. package/build/lib/env.js.map +1 -1
  7. package/build/lib/fs.d.ts +9 -2
  8. package/build/lib/fs.d.ts.map +1 -1
  9. package/build/lib/fs.js +358 -246
  10. package/build/lib/fs.js.map +1 -1
  11. package/build/lib/image-util.js +139 -124
  12. package/build/lib/image-util.js.map +1 -1
  13. package/build/lib/index.js +64 -103
  14. package/build/lib/index.js.map +1 -1
  15. package/build/lib/log-internal.d.ts +4 -27
  16. package/build/lib/log-internal.d.ts.map +1 -1
  17. package/build/lib/log-internal.js +141 -123
  18. package/build/lib/log-internal.js.map +1 -1
  19. package/build/lib/logger.d.ts +1 -1
  20. package/build/lib/logger.d.ts.map +1 -1
  21. package/build/lib/logger.js +5 -14
  22. package/build/lib/logger.js.map +1 -1
  23. package/build/lib/logging.d.ts +3 -4
  24. package/build/lib/logging.d.ts.map +1 -1
  25. package/build/lib/logging.js +139 -110
  26. package/build/lib/logging.js.map +1 -1
  27. package/build/lib/mjpeg.js +169 -141
  28. package/build/lib/mjpeg.js.map +1 -1
  29. package/build/lib/mkdirp.js +7 -13
  30. package/build/lib/mkdirp.js.map +1 -1
  31. package/build/lib/net.d.ts.map +1 -1
  32. package/build/lib/net.js +278 -254
  33. package/build/lib/net.js.map +1 -1
  34. package/build/lib/node.js +203 -192
  35. package/build/lib/node.js.map +1 -1
  36. package/build/lib/npm.d.ts +19 -4
  37. package/build/lib/npm.d.ts.map +1 -1
  38. package/build/lib/npm.js +277 -228
  39. package/build/lib/npm.js.map +1 -1
  40. package/build/lib/plist.js +145 -136
  41. package/build/lib/plist.js.map +1 -1
  42. package/build/lib/process.js +41 -42
  43. package/build/lib/process.js.map +1 -1
  44. package/build/lib/system.js +39 -56
  45. package/build/lib/system.js.map +1 -1
  46. package/build/lib/tempdir.js +112 -73
  47. package/build/lib/tempdir.js.map +1 -1
  48. package/build/lib/timing.js +99 -84
  49. package/build/lib/timing.js.map +1 -1
  50. package/build/lib/util.js +454 -356
  51. package/build/lib/util.js.map +1 -1
  52. package/build/lib/zip.js +469 -423
  53. package/build/lib/zip.js.map +1 -1
  54. package/build/tsconfig.tsbuildinfo +1 -1
  55. package/lib/env.js +6 -4
  56. package/lib/fs.js +15 -1
  57. package/lib/log-internal.js +12 -16
  58. package/lib/logging.js +2 -3
  59. package/lib/net.js +15 -6
  60. package/lib/npm.js +28 -18
  61. package/package.json +20 -19
@@ -1,160 +1,169 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createBinaryPlist = createBinaryPlist;
7
- exports.createPlist = createPlist;
8
- exports.parseBinaryPlist = parseBinaryPlist;
9
- exports.parsePlist = parsePlist;
10
- exports.parsePlistFile = parsePlistFile;
11
- exports.updatePlistFile = updatePlistFile;
12
-
13
- require("source-map-support/register");
14
-
15
- var _plist = _interopRequireDefault(require("plist"));
16
-
17
- var _bplistCreator = _interopRequireDefault(require("bplist-creator"));
18
-
19
- var _bplistParser = _interopRequireDefault(require("bplist-parser"));
20
-
21
- var _fs = _interopRequireDefault(require("./fs"));
22
-
23
- var _logger = _interopRequireDefault(require("./logger"));
24
-
25
- var _lodash = _interopRequireDefault(require("lodash"));
26
-
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseBinaryPlist = exports.createBinaryPlist = exports.updatePlistFile = exports.createPlist = exports.parsePlist = exports.parsePlistFile = void 0;
7
+ const plist_1 = __importDefault(require("plist"));
8
+ const bplist_creator_1 = __importDefault(require("bplist-creator"));
9
+ const bplist_parser_1 = __importDefault(require("bplist-parser"));
10
+ const fs_1 = __importDefault(require("./fs"));
11
+ const logger_1 = __importDefault(require("./logger"));
12
+ const lodash_1 = __importDefault(require("lodash"));
29
13
  const BPLIST_IDENTIFIER = {
30
- BUFFER: Buffer.from('bplist00'),
31
- TEXT: 'bplist00'
14
+ BUFFER: Buffer.from('bplist00'),
15
+ TEXT: 'bplist00',
32
16
  };
33
17
  const PLIST_IDENTIFIER = {
34
- BUFFER: Buffer.from('<'),
35
- TEXT: '<'
18
+ BUFFER: Buffer.from('<'),
19
+ TEXT: '<',
36
20
  };
37
-
21
+ // XML Plist library helper
38
22
  async function parseXmlPlistFile(plistFilename) {
39
- let xmlContent = await _fs.default.readFile(plistFilename, 'utf8');
40
- return _plist.default.parse(xmlContent);
23
+ let xmlContent = await fs_1.default.readFile(plistFilename, 'utf8');
24
+ return plist_1.default.parse(xmlContent);
41
25
  }
42
-
26
+ /**
27
+ * Parses a file in xml or binary format of plist
28
+ * @param {string} plist The plist file path
29
+ * @param {boolean} mustExist If set to false, this method will return an empty object when the file doesn't exist
30
+ * @param {boolean} quiet If set to false, the plist path will be logged in debug level
31
+ * @returns {Promise<any>} parsed plist JS Object
32
+ */
43
33
  async function parsePlistFile(plist, mustExist = true, quiet = true) {
44
- if (!(await _fs.default.exists(plist))) {
45
- if (mustExist) {
46
- _logger.default.errorAndThrow(`Plist file doesn't exist: '${plist}'`);
47
- } else {
48
- _logger.default.debug(`Plist file '${plist}' does not exist. Returning an empty plist.`);
49
-
50
- return {};
51
- }
52
- }
53
-
54
- let obj = {};
55
- let type = 'binary';
56
-
57
- try {
58
- obj = await _bplistParser.default.parseFile(plist);
59
-
60
- if (obj.length) {
61
- obj = obj[0];
62
- } else {
63
- throw new Error(`Binary file '${plist}'' appears to be empty`);
64
- }
65
- } catch (ign) {
34
+ // handle nonexistant file
35
+ if (!(await fs_1.default.exists(plist))) {
36
+ if (mustExist) {
37
+ logger_1.default.errorAndThrow(`Plist file doesn't exist: '${plist}'`);
38
+ }
39
+ else {
40
+ logger_1.default.debug(`Plist file '${plist}' does not exist. Returning an empty plist.`);
41
+ return {};
42
+ }
43
+ }
44
+ let obj = {};
45
+ let type = 'binary';
66
46
  try {
67
- obj = await parseXmlPlistFile(plist);
68
- type = 'xml';
69
- } catch (err) {
70
- _logger.default.errorAndThrow(`Could not parse plist file '${plist}' as XML: ${err.message}`);
71
- }
72
- }
73
-
74
- if (!quiet) {
75
- _logger.default.debug(`Parsed plist file '${plist}' as ${type}`);
76
- }
77
-
78
- return obj;
47
+ obj = await bplist_parser_1.default.parseFile(plist);
48
+ if (obj.length) {
49
+ obj = obj[0];
50
+ }
51
+ else {
52
+ throw new Error(`Binary file '${plist}'' appears to be empty`);
53
+ }
54
+ }
55
+ catch (ign) {
56
+ try {
57
+ obj = await parseXmlPlistFile(plist);
58
+ type = 'xml';
59
+ }
60
+ catch (err) {
61
+ logger_1.default.errorAndThrow(`Could not parse plist file '${plist}' as XML: ${err.message}`);
62
+ }
63
+ }
64
+ if (!quiet) {
65
+ logger_1.default.debug(`Parsed plist file '${plist}' as ${type}`);
66
+ }
67
+ return obj;
79
68
  }
80
-
69
+ exports.parsePlistFile = parsePlistFile;
70
+ /**
71
+ * Updates a plist file with the given fields
72
+ * @param {string} plist The plist file path
73
+ * @param {Object} updatedFields The updated fields-value pairs
74
+ * @param {boolean} binary If set to false, the file will be created as a xml plist
75
+ * @param {boolean} mustExist If set to false, this method will update an empty plist
76
+ * @param {boolean} quiet If set to false, the plist path will be logged in debug level
77
+ */
81
78
  async function updatePlistFile(plist, updatedFields, binary = true, mustExist = true, quiet = true) {
82
- let obj;
83
-
84
- try {
85
- obj = await parsePlistFile(plist, mustExist);
86
- } catch (err) {
87
- _logger.default.errorAndThrow(`Could not update plist: ${err.message}`);
88
- }
89
-
90
- _lodash.default.extend(obj, updatedFields);
91
-
92
- let newPlist = binary ? (0, _bplistCreator.default)(obj) : _plist.default.build(obj);
93
-
94
- try {
95
- await _fs.default.writeFile(plist, newPlist);
96
- } catch (err) {
97
- _logger.default.errorAndThrow(`Could not save plist: ${err.message}`);
98
- }
99
-
100
- if (!quiet) {
101
- _logger.default.debug(`Wrote plist file '${plist}'`);
102
- }
79
+ let obj;
80
+ try {
81
+ obj = await parsePlistFile(plist, mustExist);
82
+ }
83
+ catch (err) {
84
+ logger_1.default.errorAndThrow(`Could not update plist: ${err.message}`);
85
+ }
86
+ lodash_1.default.extend(obj, updatedFields);
87
+ let newPlist = binary ? (0, bplist_creator_1.default)(obj) : plist_1.default.build(obj);
88
+ try {
89
+ await fs_1.default.writeFile(plist, newPlist);
90
+ }
91
+ catch (err) {
92
+ logger_1.default.errorAndThrow(`Could not save plist: ${err.message}`);
93
+ }
94
+ if (!quiet) {
95
+ logger_1.default.debug(`Wrote plist file '${plist}'`);
96
+ }
103
97
  }
104
-
98
+ exports.updatePlistFile = updatePlistFile;
99
+ /**
100
+ * Creates a binary plist Buffer from an object
101
+ * @param {Object} data The object to be turned into a binary plist
102
+ * @returns {Buffer} plist in the form of a binary buffer
103
+ */
105
104
  function createBinaryPlist(data) {
106
- return (0, _bplistCreator.default)(data);
105
+ return (0, bplist_creator_1.default)(data);
107
106
  }
108
-
107
+ exports.createBinaryPlist = createBinaryPlist;
108
+ /**
109
+ * Parses a Buffer into an Object
110
+ * @param {Buffer} data The beffer of a binary plist
111
+ */
109
112
  function parseBinaryPlist(data) {
110
- return _bplistParser.default.parseBuffer(data);
113
+ return bplist_parser_1.default.parseBuffer(data);
111
114
  }
112
-
115
+ exports.parseBinaryPlist = parseBinaryPlist;
113
116
  function getXmlPlist(data) {
114
- if (_lodash.default.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {
115
- return data;
116
- }
117
-
118
- if (_lodash.default.isBuffer(data) && PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0) {
119
- return data.toString();
120
- }
121
-
122
- return null;
117
+ if (lodash_1.default.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {
118
+ return data;
119
+ }
120
+ if (lodash_1.default.isBuffer(data) &&
121
+ PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0) {
122
+ return data.toString();
123
+ }
124
+ return null;
123
125
  }
124
-
125
126
  function getBinaryPlist(data) {
126
- if (_lodash.default.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {
127
- return Buffer.from(data);
128
- }
129
-
130
- if (_lodash.default.isBuffer(data) && BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0) {
131
- return data;
132
- }
133
-
134
- return null;
127
+ if (lodash_1.default.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {
128
+ return Buffer.from(data);
129
+ }
130
+ if (lodash_1.default.isBuffer(data) &&
131
+ BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0) {
132
+ return data;
133
+ }
134
+ return null;
135
135
  }
136
-
136
+ /**
137
+ * Creates a plist from an object
138
+ * @param {Object} object The JS object to be turned into a plist
139
+ * @param {boolean} binary Set it to true for a binary plist
140
+ * @returns {string|Buffer} returns a buffer or a string in respect to the binary parameter
141
+ */
137
142
  function createPlist(object, binary = false) {
138
- if (binary) {
139
- return createBinaryPlist(object);
140
- } else {
141
- return _plist.default.build(object);
142
- }
143
+ if (binary) {
144
+ return createBinaryPlist(object);
145
+ }
146
+ else {
147
+ return plist_1.default.build(object);
148
+ }
143
149
  }
144
-
150
+ exports.createPlist = createPlist;
151
+ /**
152
+ * Parses an buffer or a string to a JS object a plist from an object
153
+ * @param {string|Buffer} data The plist in the form of string or Buffer
154
+ * @returns {Object} parsed plist JS Object
155
+ * @throws Will throw an error if the plist type is unknown
156
+ */
145
157
  function parsePlist(data) {
146
- let textPlist = getXmlPlist(data);
147
-
148
- if (textPlist) {
149
- return _plist.default.parse(textPlist);
150
- }
151
-
152
- let binaryPlist = getBinaryPlist(data);
153
-
154
- if (binaryPlist) {
155
- return parseBinaryPlist(binaryPlist)[0];
156
- }
157
-
158
- throw new Error(`Unknown type of plist, data: ${data.toString()}`);
158
+ let textPlist = getXmlPlist(data);
159
+ if (textPlist) {
160
+ return plist_1.default.parse(textPlist);
161
+ }
162
+ let binaryPlist = getBinaryPlist(data);
163
+ if (binaryPlist) {
164
+ return parseBinaryPlist(binaryPlist)[0];
165
+ }
166
+ throw new Error(`Unknown type of plist, data: ${data.toString()}`);
159
167
  }
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCUExJU1RfSURFTlRJRklFUiIsIkJVRkZFUiIsIkJ1ZmZlciIsImZyb20iLCJURVhUIiwiUExJU1RfSURFTlRJRklFUiIsInBhcnNlWG1sUGxpc3RGaWxlIiwicGxpc3RGaWxlbmFtZSIsInhtbENvbnRlbnQiLCJmcyIsInJlYWRGaWxlIiwieG1scGxpc3QiLCJwYXJzZSIsInBhcnNlUGxpc3RGaWxlIiwicGxpc3QiLCJtdXN0RXhpc3QiLCJxdWlldCIsImV4aXN0cyIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJkZWJ1ZyIsIm9iaiIsInR5cGUiLCJicGxpc3RQYXJzZSIsInBhcnNlRmlsZSIsImxlbmd0aCIsIkVycm9yIiwiaWduIiwiZXJyIiwibWVzc2FnZSIsInVwZGF0ZVBsaXN0RmlsZSIsInVwZGF0ZWRGaWVsZHMiLCJiaW5hcnkiLCJfIiwiZXh0ZW5kIiwibmV3UGxpc3QiLCJicGxpc3RDcmVhdGUiLCJidWlsZCIsIndyaXRlRmlsZSIsImNyZWF0ZUJpbmFyeVBsaXN0IiwiZGF0YSIsInBhcnNlQmluYXJ5UGxpc3QiLCJwYXJzZUJ1ZmZlciIsImdldFhtbFBsaXN0IiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwiaXNCdWZmZXIiLCJjb21wYXJlIiwidG9TdHJpbmciLCJnZXRCaW5hcnlQbGlzdCIsImNyZWF0ZVBsaXN0Iiwib2JqZWN0IiwicGFyc2VQbGlzdCIsInRleHRQbGlzdCIsImJpbmFyeVBsaXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3BsaXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB4bWxwbGlzdCBmcm9tICdwbGlzdCc7XG5pbXBvcnQgYnBsaXN0Q3JlYXRlIGZyb20gJ2JwbGlzdC1jcmVhdG9yJztcbmltcG9ydCBicGxpc3RQYXJzZSBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgQlBMSVNUX0lERU5USUZJRVIgPSB7XG4gIEJVRkZFUjogQnVmZmVyLmZyb20oJ2JwbGlzdDAwJyksXG4gIFRFWFQ6ICdicGxpc3QwMCcsXG59O1xuY29uc3QgUExJU1RfSURFTlRJRklFUiA9IHtcbiAgQlVGRkVSOiBCdWZmZXIuZnJvbSgnPCcpLFxuICBURVhUOiAnPCcsXG59O1xuXG4vLyBYTUwgUGxpc3QgbGlicmFyeSBoZWxwZXJcbmFzeW5jIGZ1bmN0aW9uIHBhcnNlWG1sUGxpc3RGaWxlKHBsaXN0RmlsZW5hbWUpIHtcbiAgbGV0IHhtbENvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwbGlzdEZpbGVuYW1lLCAndXRmOCcpO1xuICByZXR1cm4geG1scGxpc3QucGFyc2UoeG1sQ29udGVudCk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgZmlsZSBpbiB4bWwgb3IgYmluYXJ5IGZvcm1hdCBvZiBwbGlzdFxuICogQHBhcmFtIHtzdHJpbmd9IHBsaXN0IFRoZSBwbGlzdCBmaWxlIHBhdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVzdEV4aXN0IElmIHNldCB0byBmYWxzZSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGZpbGUgZG9lc24ndCBleGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUGxpc3RGaWxlKHBsaXN0LCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgLy8gaGFuZGxlIG5vbmV4aXN0YW50IGZpbGVcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHBsaXN0KSkpIHtcbiAgICBpZiAobXVzdEV4aXN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgUGxpc3QgZmlsZSBkb2Vzbid0IGV4aXN0OiAnJHtwbGlzdH0nYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUGxpc3QgZmlsZSAnJHtwbGlzdH0nIGRvZXMgbm90IGV4aXN0LiBSZXR1cm5pbmcgYW4gZW1wdHkgcGxpc3QuYCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgbGV0IG9iaiA9IHt9O1xuICBsZXQgdHlwZSA9ICdiaW5hcnknO1xuICB0cnkge1xuICAgIG9iaiA9IGF3YWl0IGJwbGlzdFBhcnNlLnBhcnNlRmlsZShwbGlzdCk7XG4gICAgaWYgKG9iai5sZW5ndGgpIHtcbiAgICAgIG9iaiA9IG9ialswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCaW5hcnkgZmlsZSAnJHtwbGlzdH0nJyBhcHBlYXJzIHRvIGJlIGVtcHR5YCk7XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHtcbiAgICB0cnkge1xuICAgICAgb2JqID0gYXdhaXQgcGFyc2VYbWxQbGlzdEZpbGUocGxpc3QpO1xuICAgICAgdHlwZSA9ICd4bWwnO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgWE1MOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFBhcnNlZCBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgJHt0eXBlfWApO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhIHBsaXN0IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gZmllbGRzXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxpc3QgVGhlIHBsaXN0IGZpbGUgcGF0aFxuICogQHBhcmFtIHtPYmplY3R9IHVwZGF0ZWRGaWVsZHMgVGhlIHVwZGF0ZWQgZmllbGRzLXZhbHVlIHBhaXJzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpbmFyeSBJZiBzZXQgdG8gZmFsc2UsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhcyBhIHhtbCBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBtdXN0RXhpc3QgSWYgc2V0IHRvIGZhbHNlLCB0aGlzIG1ldGhvZCB3aWxsIHVwZGF0ZSBhbiBlbXB0eSBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBsaXN0RmlsZShcbiAgcGxpc3QsXG4gIHVwZGF0ZWRGaWVsZHMsXG4gIGJpbmFyeSA9IHRydWUsXG4gIG11c3RFeGlzdCA9IHRydWUsXG4gIHF1aWV0ID0gdHJ1ZVxuKSB7XG4gIGxldCBvYmo7XG4gIHRyeSB7XG4gICAgb2JqID0gYXdhaXQgcGFyc2VQbGlzdEZpbGUocGxpc3QsIG11c3RFeGlzdCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgdXBkYXRlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIF8uZXh0ZW5kKG9iaiwgdXBkYXRlZEZpZWxkcyk7XG4gIGxldCBuZXdQbGlzdCA9IGJpbmFyeSA/IGJwbGlzdENyZWF0ZShvYmopIDogeG1scGxpc3QuYnVpbGQob2JqKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGxpc3QsIG5ld1BsaXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBzYXZlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFdyb3RlIHBsaXN0IGZpbGUgJyR7cGxpc3R9J2ApO1xuICB9XG59XG4vKipcbiAqIENyZWF0ZXMgYSBiaW5hcnkgcGxpc3QgQnVmZmVyIGZyb20gYW4gb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YSBUaGUgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgYmluYXJ5IHBsaXN0XG4gKiBAcmV0dXJucyB7QnVmZmVyfSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBhIGJpbmFyeSBidWZmZXJcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGxpc3QoZGF0YSkge1xuICByZXR1cm4gYnBsaXN0Q3JlYXRlKGRhdGEpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIEJ1ZmZlciBpbnRvIGFuIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgVGhlIGJlZmZlciBvZiBhIGJpbmFyeSBwbGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZUJpbmFyeVBsaXN0KGRhdGEpIHtcbiAgcmV0dXJuIGJwbGlzdFBhcnNlLnBhcnNlQnVmZmVyKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBnZXRYbWxQbGlzdChkYXRhKSB7XG4gIGlmIChfLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEuc3RhcnRzV2l0aChQTElTVF9JREVOVElGSUVSLlRFWFQpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKFxuICAgIF8uaXNCdWZmZXIoZGF0YSkgJiZcbiAgICBQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIFBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmxlbmd0aCkgPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5UGxpc3QoZGF0YSkge1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLnN0YXJ0c1dpdGgoQlBMSVNUX0lERU5USUZJRVIuVEVYVCkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YSk7XG4gIH1cblxuICBpZiAoXG4gICAgXy5pc0J1ZmZlcihkYXRhKSAmJlxuICAgIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5sZW5ndGgpID09PSAwXG4gICkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgSlMgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYmluYXJ5IFNldCBpdCB0byB0cnVlIGZvciBhIGJpbmFyeSBwbGlzdFxuICogQHJldHVybnMge3N0cmluZ3xCdWZmZXJ9IHJldHVybnMgYSBidWZmZXIgb3IgYSBzdHJpbmcgaW4gcmVzcGVjdCB0byB0aGUgYmluYXJ5IHBhcmFtZXRlclxuICovXG5mdW5jdGlvbiBjcmVhdGVQbGlzdChvYmplY3QsIGJpbmFyeSA9IGZhbHNlKSB7XG4gIGlmIChiaW5hcnkpIHtcbiAgICByZXR1cm4gY3JlYXRlQmluYXJ5UGxpc3Qob2JqZWN0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geG1scGxpc3QuYnVpbGQob2JqZWN0KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBhbiBidWZmZXIgb3IgYSBzdHJpbmcgdG8gYSBKUyBvYmplY3QgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBkYXRhIFRoZSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBzdHJpbmcgb3IgQnVmZmVyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBsaXN0IHR5cGUgaXMgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYXJzZVBsaXN0KGRhdGEpIHtcbiAgbGV0IHRleHRQbGlzdCA9IGdldFhtbFBsaXN0KGRhdGEpO1xuICBpZiAodGV4dFBsaXN0KSB7XG4gICAgcmV0dXJuIHhtbHBsaXN0LnBhcnNlKHRleHRQbGlzdCk7XG4gIH1cblxuICBsZXQgYmluYXJ5UGxpc3QgPSBnZXRCaW5hcnlQbGlzdChkYXRhKTtcbiAgaWYgKGJpbmFyeVBsaXN0KSB7XG4gICAgcmV0dXJuIHBhcnNlQmluYXJ5UGxpc3QoYmluYXJ5UGxpc3QpWzBdO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgb2YgcGxpc3QsIGRhdGE6ICR7ZGF0YS50b1N0cmluZygpfWApO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVBsaXN0RmlsZSxcbiAgcGFyc2VQbGlzdCxcbiAgY3JlYXRlUGxpc3QsXG4gIHVwZGF0ZVBsaXN0RmlsZSxcbiAgY3JlYXRlQmluYXJ5UGxpc3QsXG4gIHBhcnNlQmluYXJ5UGxpc3QsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUc7RUFDeEJDLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBWixDQURnQjtFQUV4QkMsSUFBSSxFQUFFO0FBRmtCLENBQTFCO0FBSUEsTUFBTUMsZ0JBQWdCLEdBQUc7RUFDdkJKLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksR0FBWixDQURlO0VBRXZCQyxJQUFJLEVBQUU7QUFGaUIsQ0FBekI7O0FBTUEsZUFBZUUsaUJBQWYsQ0FBaUNDLGFBQWpDLEVBQWdEO0VBQzlDLElBQUlDLFVBQVUsR0FBRyxNQUFNQyxXQUFBLENBQUdDLFFBQUgsQ0FBWUgsYUFBWixFQUEyQixNQUEzQixDQUF2QjtFQUNBLE9BQU9JLGNBQUEsQ0FBU0MsS0FBVCxDQUFlSixVQUFmLENBQVA7QUFDRDs7QUFTRCxlQUFlSyxjQUFmLENBQThCQyxLQUE5QixFQUFxQ0MsU0FBUyxHQUFHLElBQWpELEVBQXVEQyxLQUFLLEdBQUcsSUFBL0QsRUFBcUU7RUFFbkUsSUFBSSxFQUFFLE1BQU1QLFdBQUEsQ0FBR1EsTUFBSCxDQUFVSCxL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
168
+ exports.parsePlist = parsePlist;
169
+ //# sourceMappingURL=plist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plist.js","names":["BPLIST_IDENTIFIER","BUFFER","Buffer","from","TEXT","PLIST_IDENTIFIER","parseXmlPlistFile","plistFilename","xmlContent","fs","readFile","xmlplist","parse","parsePlistFile","plist","mustExist","quiet","exists","log","errorAndThrow","debug","obj","type","bplistParse","parseFile","length","Error","ign","err","message","updatePlistFile","updatedFields","binary","_","extend","newPlist","bplistCreate","build","writeFile","createBinaryPlist","data","parseBinaryPlist","parseBuffer","getXmlPlist","isString","startsWith","isBuffer","compare","toString","getBinaryPlist","createPlist","object","parsePlist","textPlist","binaryPlist"],"sources":["../../lib/plist.js"],"sourcesContent":["import xmlplist from 'plist';\nimport bplistCreate from 'bplist-creator';\nimport bplistParse from 'bplist-parser';\nimport fs from './fs';\nimport log from './logger';\nimport _ from 'lodash';\n\nconst BPLIST_IDENTIFIER = {\n BUFFER: Buffer.from('bplist00'),\n TEXT: 'bplist00',\n};\nconst PLIST_IDENTIFIER = {\n BUFFER: Buffer.from('<'),\n TEXT: '<',\n};\n\n// XML Plist library helper\nasync function parseXmlPlistFile(plistFilename) {\n let xmlContent = await fs.readFile(plistFilename, 'utf8');\n return xmlplist.parse(xmlContent);\n}\n\n/**\n * Parses a file in xml or binary format of plist\n * @param {string} plist The plist file path\n * @param {boolean} mustExist If set to false, this method will return an empty object when the file doesn't exist\n * @param {boolean} quiet If set to false, the plist path will be logged in debug level\n * @returns {Promise<any>} parsed plist JS Object\n */\nasync function parsePlistFile(plist, mustExist = true, quiet = true) {\n // handle nonexistant file\n if (!(await fs.exists(plist))) {\n if (mustExist) {\n log.errorAndThrow(`Plist file doesn't exist: '${plist}'`);\n } else {\n log.debug(`Plist file '${plist}' does not exist. Returning an empty plist.`);\n return {};\n }\n }\n\n let obj = {};\n let type = 'binary';\n try {\n obj = await bplistParse.parseFile(plist);\n if (obj.length) {\n obj = obj[0];\n } else {\n throw new Error(`Binary file '${plist}'' appears to be empty`);\n }\n } catch (ign) {\n try {\n obj = await parseXmlPlistFile(plist);\n type = 'xml';\n } catch (err) {\n log.errorAndThrow(`Could not parse plist file '${plist}' as XML: ${err.message}`);\n }\n }\n\n if (!quiet) {\n log.debug(`Parsed plist file '${plist}' as ${type}`);\n }\n return obj;\n}\n\n/**\n * Updates a plist file with the given fields\n * @param {string} plist The plist file path\n * @param {Object} updatedFields The updated fields-value pairs\n * @param {boolean} binary If set to false, the file will be created as a xml plist\n * @param {boolean} mustExist If set to false, this method will update an empty plist\n * @param {boolean} quiet If set to false, the plist path will be logged in debug level\n */\nasync function updatePlistFile(\n plist,\n updatedFields,\n binary = true,\n mustExist = true,\n quiet = true\n) {\n let obj;\n try {\n obj = await parsePlistFile(plist, mustExist);\n } catch (err) {\n log.errorAndThrow(`Could not update plist: ${err.message}`);\n }\n _.extend(obj, updatedFields);\n let newPlist = binary ? bplistCreate(obj) : xmlplist.build(obj);\n try {\n await fs.writeFile(plist, newPlist);\n } catch (err) {\n log.errorAndThrow(`Could not save plist: ${err.message}`);\n }\n if (!quiet) {\n log.debug(`Wrote plist file '${plist}'`);\n }\n}\n/**\n * Creates a binary plist Buffer from an object\n * @param {Object} data The object to be turned into a binary plist\n * @returns {Buffer} plist in the form of a binary buffer\n */\nfunction createBinaryPlist(data) {\n return bplistCreate(data);\n}\n\n/**\n * Parses a Buffer into an Object\n * @param {Buffer} data The beffer of a binary plist\n */\nfunction parseBinaryPlist(data) {\n return bplistParse.parseBuffer(data);\n}\n\nfunction getXmlPlist(data) {\n if (_.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {\n return data;\n }\n if (\n _.isBuffer(data) &&\n PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0\n ) {\n return data.toString();\n }\n return null;\n}\n\nfunction getBinaryPlist(data) {\n if (_.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {\n return Buffer.from(data);\n }\n\n if (\n _.isBuffer(data) &&\n BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0\n ) {\n return data;\n }\n return null;\n}\n\n/**\n * Creates a plist from an object\n * @param {Object} object The JS object to be turned into a plist\n * @param {boolean} binary Set it to true for a binary plist\n * @returns {string|Buffer} returns a buffer or a string in respect to the binary parameter\n */\nfunction createPlist(object, binary = false) {\n if (binary) {\n return createBinaryPlist(object);\n } else {\n return xmlplist.build(object);\n }\n}\n\n/**\n * Parses an buffer or a string to a JS object a plist from an object\n * @param {string|Buffer} data The plist in the form of string or Buffer\n * @returns {Object} parsed plist JS Object\n * @throws Will throw an error if the plist type is unknown\n */\nfunction parsePlist(data) {\n let textPlist = getXmlPlist(data);\n if (textPlist) {\n return xmlplist.parse(textPlist);\n }\n\n let binaryPlist = getBinaryPlist(data);\n if (binaryPlist) {\n return parseBinaryPlist(binaryPlist)[0];\n }\n\n throw new Error(`Unknown type of plist, data: ${data.toString()}`);\n}\n\nexport {\n parsePlistFile,\n parsePlist,\n createPlist,\n updatePlistFile,\n createBinaryPlist,\n parseBinaryPlist,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"plist.js","sourceRoot":"","sources":["../../lib/plist.js"],"names":[],"mappings":"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"}
@@ -1,49 +1,48 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getProcessIds = getProcessIds;
7
- exports.killProcess = killProcess;
8
-
9
- require("source-map-support/register");
10
-
11
- var _teen_process = require("teen_process");
12
-
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.killProcess = exports.getProcessIds = void 0;
4
+ const teen_process_1 = require("teen_process");
5
+ /*
6
+ * Exit Status for pgrep and pkill (`man pkill`)
7
+ * 0. One or more processes matched the criteria.
8
+ * 1. No processes matched.
9
+ * 2. Syntax error in the command line.
10
+ * 3. Fatal error: out of memory etc.
11
+ */
13
12
  async function getProcessIds(appName) {
14
- let pids;
15
-
16
- try {
17
- let {
18
- stdout
19
- } = await (0, _teen_process.exec)('pgrep', ['-x', appName]);
20
- pids = stdout.trim().split('\n').map(pid => parseInt(pid, 10));
21
- } catch (err) {
22
- if (parseInt(err.code, 10) !== 1) {
23
- throw new Error(`Error getting process ids for app '${appName}': ${err.message}`);
13
+ let pids;
14
+ try {
15
+ let { stdout } = await (0, teen_process_1.exec)('pgrep', ['-x', appName]);
16
+ pids = stdout
17
+ .trim()
18
+ .split('\n')
19
+ .map((pid) => parseInt(pid, 10));
24
20
  }
25
-
26
- pids = [];
27
- }
28
-
29
- return pids;
21
+ catch (err) {
22
+ if (parseInt(err.code, 10) !== 1) {
23
+ throw new Error(`Error getting process ids for app '${appName}': ${err.message}`);
24
+ }
25
+ pids = [];
26
+ }
27
+ return pids;
30
28
  }
31
-
29
+ exports.getProcessIds = getProcessIds;
32
30
  async function killProcess(appName, force = false) {
33
- let pids = await getProcessIds(appName);
34
-
35
- if (pids.length === 0) {
36
- return;
37
- }
38
-
39
- try {
40
- let args = force ? ['-9'] : [];
41
- args.push('-x', appName);
42
- await (0, _teen_process.exec)('pkill', args);
43
- } catch (err) {
44
- if (parseInt(err.code, 10) !== 1) {
45
- throw new Error(`Error killing app '${appName}' with pkill: ${err.message}`);
31
+ let pids = await getProcessIds(appName);
32
+ if (pids.length === 0) {
33
+ // the process is not running
34
+ return;
35
+ }
36
+ try {
37
+ let args = force ? ['-9'] : [];
38
+ args.push('-x', appName);
39
+ await (0, teen_process_1.exec)('pkill', args);
40
+ }
41
+ catch (err) {
42
+ if (parseInt(err.code, 10) !== 1) {
43
+ throw new Error(`Error killing app '${appName}' with pkill: ${err.message}`);
44
+ }
46
45
  }
47
- }
48
46
  }
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRQcm9jZXNzSWRzIiwiYXBwTmFtZSIsInBpZHMiLCJzdGRvdXQiLCJleGVjIiwidHJpbSIsInNwbGl0IiwibWFwIiwicGlkIiwicGFyc2VJbnQiLCJlcnIiLCJjb2RlIiwiRXJyb3IiLCJtZXNzYWdlIiwia2lsbFByb2Nlc3MiLCJmb3JjZSIsImxlbmd0aCIsImFyZ3MiLCJwdXNoIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3Byb2Nlc3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtleGVjfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG4vKlxuICogRXhpdCBTdGF0dXMgZm9yIHBncmVwIGFuZCBwa2lsbCAoYG1hbiBwa2lsbGApXG4gKiAgMC4gT25lIG9yIG1vcmUgcHJvY2Vzc2VzIG1hdGNoZWQgdGhlIGNyaXRlcmlhLlxuICogIDEuIE5vIHByb2Nlc3NlcyBtYXRjaGVkLlxuICogIDIuIFN5bnRheCBlcnJvciBpbiB0aGUgY29tbWFuZCBsaW5lLlxuICogIDMuIEZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGV0Yy5cbiAqL1xuXG5hc3luYyBmdW5jdGlvbiBnZXRQcm9jZXNzSWRzKGFwcE5hbWUpIHtcbiAgbGV0IHBpZHM7XG4gIHRyeSB7XG4gICAgbGV0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygncGdyZXAnLCBbJy14JywgYXBwTmFtZV0pO1xuICAgIHBpZHMgPSBzdGRvdXRcbiAgICAgIC50cmltKClcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5tYXAoKHBpZCkgPT4gcGFyc2VJbnQocGlkLCAxMCkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocGFyc2VJbnQoZXJyLmNvZGUsIDEwKSAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBnZXR0aW5nIHByb2Nlc3MgaWRzIGZvciBhcHAgJyR7YXBwTmFtZX0nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBwaWRzID0gW107XG4gIH1cbiAgcmV0dXJuIHBpZHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGtpbGxQcm9jZXNzKGFwcE5hbWUsIGZvcmNlID0gZmFsc2UpIHtcbiAgbGV0IHBpZHMgPSBhd2FpdCBnZXRQcm9jZXNzSWRzKGFwcE5hbWUpO1xuICBpZiAocGlkcy5sZW5ndGggPT09IDApIHtcbiAgICAvLyB0aGUgcHJvY2VzcyBpcyBub3QgcnVubmluZ1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgbGV0IGFyZ3MgPSBmb3JjZSA/IFsnLTknXSA6IFtdO1xuICAgIGFyZ3MucHVzaCgnLXgnLCBhcHBOYW1lKTtcbiAgICBhd2FpdCBleGVjKCdwa2lsbCcsIGFyZ3MpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocGFyc2VJbnQoZXJyLmNvZGUsIDEwKSAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBraWxsaW5nIGFwcCAnJHthcHBOYW1lfScgd2l0aCBwa2lsbDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHtnZXRQcm9jZXNzSWRzLCBraWxsUHJvY2Vzc307XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFVQSxlQUFlQSxhQUFmLENBQTZCQyxPQUE3QixFQUFzQztFQUNwQyxJQUFJQyxJQUFKOztFQUNBLElBQUk7SUFDRixJQUFJO01BQUNDO0lBQUQsSUFBVyxNQUFNLElBQUFDLGtCQUFBLEVBQUssT0FBTCxFQUFjLENBQUMsSUFBRCxFQUFPSCxPQUFQLENBQWQsQ0FBckI7SUFDQUMsSUFBSSxHQUFHQyxNQUFNLENBQ1ZFLElBREksR0FFSkMsS0FGSSxDQUVFLElBRkYsRUFHSkMsR0FISSxDQUdDQyxHQUFELElBQVNDLFFBQVEsQ0FBQ0QsR0FBRCxFQUFNLEVBQU4sQ0FIakIsQ0FBUDtFQUlELENBTkQsQ0FNRSxPQUFPRSxHQUFQLEVBQVk7SUFDWixJQUFJRCxRQUFRLENBQUNDLEdBQUcsQ0FBQ0MsSUFBTCxFQUFXLEVBQVgsQ0FBUixLQUEyQixDQUEvQixFQUFrQztNQUNoQyxNQUFNLElBQUlDLEtBQUosQ0FBVyxzQ0FBcUNYLE9BQVEsTUFBS1MsR0FBRyxDQUFDRyxPQUFRLEVBQXpFLENBQU47SUFDRDs7SUFDRFgsSUFBSSxHQUFHLEVBQVA7RUFDRDs7RUFDRCxPQUFPQSxJQUFQO0FBQ0Q7O0FBRUQsZUFBZVksV0FBZixDQUEyQmIsT0FBM0IsRUFBb0NjLEtBQUssR0FBRyxLQUE1QyxFQUFtRDtFQUNqRCxJQUFJYixJQUFJLEdBQUcsTUFBTUYsYUFBYSxDQUFDQyxPQUFELENBQTlCOztFQUNBLElBQUlDLElBQUksQ0FBQ2MsTUFBTCxLQUFnQixDQUFwQixFQUF1QjtJQUVyQjtFQUNEOztFQUVELElBQUk7SUFDRixJQUFJQyxJQUFJLEdBQUdGLEtBQUssR0FBRyxDQUFDLElBQUQsQ0FBSCxHQUFZLEVBQTVCO0lBQ0FFLElBQUksQ0FBQ0MsSUFBTCxDQUFVLElBQVYsRUFBZ0JqQixPQUFoQjtJQUNBLE1BQU0sSUFBQUcsa0JBQUEsRUFBSyxPQUFMLEVBQWNhLElBQWQsQ0FBTjtFQUNELENBSkQsQ0FJRSxPQUFPUCxHQUFQLEVBQVk7SUFDWixJQUFJRCxRQUFRLENBQUNDLEdBQUcsQ0FBQ0MsSUFBTCxFQUFXLEVBQVgsQ0FBUixLQUEyQixDQUEvQixFQUFrQztNQUNoQyxNQUFNLElBQUlDLEtBQUosQ0FBVyxzQkFBcUJYLE9BQVEsaUJBQWdCUyxHQUFHLENBQUNHLE9BQVEsRUFBcEUsQ0FBTjtJQUNEO0VBQ0Y7QUFDRiJ9
47
+ exports.killProcess = killProcess;
48
+ //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","names":["getProcessIds","appName","pids","stdout","exec","trim","split","map","pid","parseInt","err","code","Error","message","killProcess","force","length","args","push"],"sources":["../../lib/process.js"],"sourcesContent":["import {exec} from 'teen_process';\n\n/*\n * Exit Status for pgrep and pkill (`man pkill`)\n * 0. One or more processes matched the criteria.\n * 1. No processes matched.\n * 2. Syntax error in the command line.\n * 3. Fatal error: out of memory etc.\n */\n\nasync function getProcessIds(appName) {\n let pids;\n try {\n let {stdout} = await exec('pgrep', ['-x', appName]);\n pids = stdout\n .trim()\n .split('\\n')\n .map((pid) => parseInt(pid, 10));\n } catch (err) {\n if (parseInt(err.code, 10) !== 1) {\n throw new Error(`Error getting process ids for app '${appName}': ${err.message}`);\n }\n pids = [];\n }\n return pids;\n}\n\nasync function killProcess(appName, force = false) {\n let pids = await getProcessIds(appName);\n if (pids.length === 0) {\n // the process is not running\n return;\n }\n\n try {\n let args = force ? ['-9'] : [];\n args.push('-x', appName);\n await exec('pkill', args);\n } catch (err) {\n if (parseInt(err.code, 10) !== 1) {\n throw new Error(`Error killing app '${appName}' with pkill: ${err.message}`);\n }\n }\n}\n\nexport {getProcessIds, killProcess};\n"],"mappings":";;;;;;;;;;AAAA;;AAUA,eAAeA,aAAf,CAA6BC,OAA7B,EAAsC;EACpC,IAAIC,IAAJ;;EACA,IAAI;IACF,IAAI;MAACC;IAAD,IAAW,MAAM,IAAAC,kBAAA,EAAK,OAAL,EAAc,CAAC,IAAD,EAAOH,OAAP,CAAd,CAArB;IACAC,IAAI,GAAGC,MAAM,CACVE,IADI,GAEJC,KAFI,CAEE,IAFF,EAGJC,GAHI,CAGCC,GAAD,IAASC,QAAQ,CAACD,GAAD,EAAM,EAAN,CAHjB,CAAP;EAID,CAND,CAME,OAAOE,GAAP,EAAY;IACZ,IAAID,QAAQ,CAACC,GAAG,CAACC,IAAL,EAAW,EAAX,CAAR,KAA2B,CAA/B,EAAkC;MAChC,MAAM,IAAIC,KAAJ,CAAW,sCAAqCX,OAAQ,MAAKS,GAAG,CAACG,OAAQ,EAAzE,CAAN;IACD;;IACDX,IAAI,GAAG,EAAP;EACD;;EACD,OAAOA,IAAP;AACD;;AAED,eAAeY,WAAf,CAA2Bb,OAA3B,EAAoCc,KAAK,GAAG,KAA5C,EAAmD;EACjD,IAAIb,IAAI,GAAG,MAAMF,aAAa,CAACC,OAAD,CAA9B;;EACA,IAAIC,IAAI,CAACc,MAAL,KAAgB,CAApB,EAAuB;IAErB;EACD;;EAED,IAAI;IACF,IAAIC,IAAI,GAAGF,KAAK,GAAG,CAAC,IAAD,CAAH,GAAY,EAA5B;IACAE,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgBjB,OAAhB;IACA,MAAM,IAAAG,kBAAA,EAAK,OAAL,EAAca,IAAd,CAAN;EACD,CAJD,CAIE,OAAOP,GAAP,EAAY;IACZ,IAAID,QAAQ,CAACC,GAAG,CAACC,IAAL,EAAW,EAAX,CAAR,KAA2B,CAA/B,EAAkC;MAChC,MAAM,IAAIC,KAAJ,CAAW,sBAAqBX,OAAQ,iBAAgBS,GAAG,CAACG,OAAQ,EAApE,CAAN;IACD;EACF;AACF"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../lib/process.js"],"names":[],"mappings":";;;AAAA,+CAAkC;AAElC;;;;;;GAMG;AAEH,KAAK,UAAU,aAAa,CAAC,OAAO;IAClC,IAAI,IAAI,CAAC;IACT,IAAI;QACF,IAAI,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,GAAG,MAAM;aACV,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;KACpC;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SACnF;QACD,IAAI,GAAG,EAAE,CAAC;KACX;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAoBO,sCAAa;AAlBrB,KAAK,UAAU,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK;IAC/C,IAAI,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,6BAA6B;QAC7B,OAAO;KACR;IAED,IAAI;QACF,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzB,MAAM,IAAA,mBAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9E;KACF;AACH,CAAC;AAEsB,kCAAW"}
@@ -1,70 +1,53 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.arch = arch;
7
- exports.isLinux = isLinux;
8
- exports.isMac = isMac;
9
- exports.isOSWin64 = isOSWin64;
10
- exports.isWindows = isWindows;
11
- exports.macOsxVersion = macOsxVersion;
12
-
13
- require("source-map-support/register");
14
-
15
- var _teen_process = require("teen_process");
16
-
17
- var _lodash = _interopRequireDefault(require("lodash"));
18
-
19
- var _os = _interopRequireDefault(require("os"));
20
-
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.macOsxVersion = exports.arch = exports.isOSWin64 = exports.isLinux = exports.isMac = exports.isWindows = void 0;
7
+ const teen_process_1 = require("teen_process");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const os_1 = __importDefault(require("os"));
23
10
  const VERSION_PATTERN = /^(\d+\.\d+)/m;
24
-
25
11
  function isWindows() {
26
- return _os.default.type() === 'Windows_NT';
12
+ return os_1.default.type() === 'Windows_NT';
27
13
  }
28
-
14
+ exports.isWindows = isWindows;
29
15
  function isMac() {
30
- return _os.default.type() === 'Darwin';
16
+ return os_1.default.type() === 'Darwin';
31
17
  }
32
-
18
+ exports.isMac = isMac;
33
19
  function isLinux() {
34
- return !isWindows() && !isMac();
20
+ return !isWindows() && !isMac();
35
21
  }
36
-
22
+ exports.isLinux = isLinux;
37
23
  function isOSWin64() {
38
- return process.arch === 'x64' || _lodash.default.has(process.env, 'PROCESSOR_ARCHITEW6432');
24
+ return process.arch === 'x64' || lodash_1.default.has(process.env, 'PROCESSOR_ARCHITEW6432');
39
25
  }
40
-
26
+ exports.isOSWin64 = isOSWin64;
41
27
  async function arch() {
42
- if (isLinux() || isMac()) {
43
- let {
44
- stdout
45
- } = await (0, _teen_process.exec)('uname', ['-m']);
46
- return stdout.trim() === 'i686' ? '32' : '64';
47
- } else if (isWindows()) {
48
- let is64 = this.isOSWin64();
49
- return is64 ? '64' : '32';
50
- }
28
+ if (isLinux() || isMac()) {
29
+ let { stdout } = await (0, teen_process_1.exec)('uname', ['-m']);
30
+ return stdout.trim() === 'i686' ? '32' : '64';
31
+ }
32
+ else if (isWindows()) {
33
+ let is64 = this.isOSWin64();
34
+ return is64 ? '64' : '32';
35
+ }
51
36
  }
52
-
37
+ exports.arch = arch;
53
38
  async function macOsxVersion() {
54
- let stdout;
55
-
56
- try {
57
- stdout = (await (0, _teen_process.exec)('sw_vers', ['-productVersion'])).stdout.trim();
58
- } catch (err) {
59
- throw new Error(`Could not detect Mac OS X Version: ${err}`);
60
- }
61
-
62
- const versionMatch = VERSION_PATTERN.exec(stdout);
63
-
64
- if (!versionMatch) {
65
- throw new Error(`Could not detect Mac OS X Version from sw_vers output: '${stdout}'`);
66
- }
67
-
68
- return versionMatch[1];
39
+ let stdout;
40
+ try {
41
+ stdout = (await (0, teen_process_1.exec)('sw_vers', ['-productVersion'])).stdout.trim();
42
+ }
43
+ catch (err) {
44
+ throw new Error(`Could not detect Mac OS X Version: ${err}`);
45
+ }
46
+ const versionMatch = VERSION_PATTERN.exec(stdout);
47
+ if (!versionMatch) {
48
+ throw new Error(`Could not detect Mac OS X Version from sw_vers output: '${stdout}'`);
49
+ }
50
+ return versionMatch[1];
69
51
  }
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OX1BBVFRFUk4iLCJpc1dpbmRvd3MiLCJvcyIsInR5cGUiLCJpc01hYyIsImlzTGludXgiLCJpc09TV2luNjQiLCJwcm9jZXNzIiwiYXJjaCIsIl8iLCJoYXMiLCJlbnYiLCJzdGRvdXQiLCJleGVjIiwidHJpbSIsImlzNjQiLCJtYWNPc3hWZXJzaW9uIiwiZXJyIiwiRXJyb3IiLCJ2ZXJzaW9uTWF0Y2giXSwic291cmNlcyI6WyIuLi8uLi9saWIvc3lzdGVtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuXG5jb25zdCBWRVJTSU9OX1BBVFRFUk4gPSAvXihcXGQrXFwuXFxkKykvbTtcblxuZnVuY3Rpb24gaXNXaW5kb3dzKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnV2luZG93c19OVCc7XG59XG5cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnRGFyd2luJztcbn1cblxuZnVuY3Rpb24gaXNMaW51eCgpIHtcbiAgcmV0dXJuICFpc1dpbmRvd3MoKSAmJiAhaXNNYWMoKTtcbn1cblxuZnVuY3Rpb24gaXNPU1dpbjY0KCkge1xuICByZXR1cm4gcHJvY2Vzcy5hcmNoID09PSAneDY0JyB8fCBfLmhhcyhwcm9jZXNzLmVudiwgJ1BST0NFU1NPUl9BUkNISVRFVzY0MzInKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJjaCgpIHtcbiAgaWYgKGlzTGludXgoKSB8fCBpc01hYygpKSB7XG4gICAgbGV0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygndW5hbWUnLCBbJy1tJ10pO1xuICAgIHJldHVybiBzdGRvdXQudHJpbSgpID09PSAnaTY4NicgPyAnMzInIDogJzY0JztcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3MoKSkge1xuICAgIGxldCBpczY0ID0gdGhpcy5pc09TV2luNjQoKTtcbiAgICByZXR1cm4gaXM2NCA/ICc2NCcgOiAnMzInO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1hY09zeFZlcnNpb24oKSB7XG4gIGxldCBzdGRvdXQ7XG4gIHRyeSB7XG4gICAgc3Rkb3V0ID0gKGF3YWl0IGV4ZWMoJ3N3X3ZlcnMnLCBbJy1wcm9kdWN0VmVyc2lvbiddKSkuc3Rkb3V0LnRyaW0oKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZWN0IE1hYyBPUyBYIFZlcnNpb246ICR7ZXJyfWApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbk1hdGNoID0gVkVSU0lPTl9QQVRURVJOLmV4ZWMoc3Rkb3V0KTtcbiAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlY3QgTWFjIE9TIFggVmVyc2lvbiBmcm9tIHN3X3ZlcnMgb3V0cHV0OiAnJHtzdGRvdXR9J2ApO1xuICB9XG4gIHJldHVybiB2ZXJzaW9uTWF0Y2hbMV07XG59XG5cbmV4cG9ydCB7aXNXaW5kb3dzLCBpc01hYywgaXNMaW51eCwgaXNPU1dpbjY0LCBhcmNoLCBtYWNPc3hWZXJzaW9ufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLGVBQWUsR0FBRyxjQUF4Qjs7QUFFQSxTQUFTQyxTQUFULEdBQXFCO0VBQ25CLE9BQU9DLFdBQUEsQ0FBR0MsSUFBSCxPQUFjLFlBQXJCO0FBQ0Q7O0FBRUQsU0FBU0MsS0FBVCxHQUFpQjtFQUNmLE9BQU9GLFdBQUEsQ0FBR0MsSUFBSCxPQUFjLFFBQXJCO0FBQ0Q7O0FBRUQsU0FBU0UsT0FBVCxHQUFtQjtFQUNqQixPQUFPLENBQUNKLFNBQVMsRUFBVixJQUFnQixDQUFDRyxLQUFLLEVBQTdCO0FBQ0Q7O0FBRUQsU0FBU0UsU0FBVCxHQUFxQjtFQUNuQixPQUFPQyxPQUFPLENBQUNDLElBQVIsS0FBaUIsS0FBakIsSUFBMEJDLGVBQUEsQ0FBRUMsR0FBRixDQUFNSCxPQUFPLENBQUNJLEdBQWQsRUFBbUIsd0JBQW5CLENBQWpDO0FBQ0Q7O0FBRUQsZUFBZUgsSUFBZixHQUFzQjtFQUNwQixJQUFJSCxPQUFPLE1BQU1ELEtBQUssRUFBdEIsRUFBMEI7SUFDeEIsSUFBSTtNQUFDUTtJQUFELElBQVcsTUFBTSxJQUFBQyxrQkFBQSxFQUFLLE9BQUwsRUFBYyxDQUFDLElBQUQsQ0FBZCxDQUFyQjtJQUNBLE9BQU9ELE1BQU0sQ0FBQ0UsSUFBUCxPQUFrQixNQUFsQixHQUEyQixJQUEzQixHQUFrQyxJQUF6QztFQUNELENBSEQsTUFHTyxJQUFJYixTQUFTLEVBQWIsRUFBaUI7SUFDdEIsSUFBSWMsSUFBSSxHQUFHLEtBQUtULFNBQUwsRUFBWDtJQUNBLE9BQU9TLElBQUksR0FBRyxJQUFILEdBQVUsSUFBckI7RUFDRDtBQUNGOztBQUVELGVBQWVDLGFBQWYsR0FBK0I7RUFDN0IsSUFBSUosTUFBSjs7RUFDQSxJQUFJO0lBQ0ZBLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBQUMsa0JBQUEsRUFBSyxTQUFMLEVBQWdCLENBQUMsaUJBQUQsQ0FBaEIsQ0FBUCxFQUE2Q0QsTUFBN0MsQ0FBb0RFLElBQXBELEVBQVQ7RUFDRCxDQUZELENBRUUsT0FBT0csR0FBUCxFQUFZO0lBQ1osTUFBTSxJQUFJQyxLQUFKLENBQVcsc0NBQXFDRCxHQUFJLEVBQXBELENBQU47RUFDRDs7RUFFRCxNQUFNRSxZQUFZLEdBQUduQixlQUFlLENBQUNhLElBQWhCLENBQXFCRCxNQUFyQixDQUFyQjs7RUFDQSxJQUFJLENBQUNPLFlBQUwsRUFBbUI7SUFDakIsTUFBTSxJQUFJRCxLQUFKLENBQVcsMkRBQTBETixNQUFPLEdBQTVFLENBQU47RUFDRDs7RUFDRCxPQUFPTyxZQUFZLENBQUMsQ0FBRCxDQUFuQjtBQUNEIn0=
52
+ exports.macOsxVersion = macOsxVersion;
53
+ //# sourceMappingURL=system.js.map