appium-ios-simulator 5.1.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/index.js +9 -26
  3. package/build/lib/defaults-utils.d.ts +52 -0
  4. package/build/lib/defaults-utils.d.ts.map +1 -0
  5. package/build/lib/defaults-utils.js +152 -93
  6. package/build/lib/defaults-utils.js.map +1 -1
  7. package/build/lib/extensions/applications.d.ts +76 -0
  8. package/build/lib/extensions/applications.d.ts.map +1 -0
  9. package/build/lib/extensions/applications.js +139 -92
  10. package/build/lib/extensions/applications.js.map +1 -1
  11. package/build/lib/extensions/biometric.d.ts +25 -0
  12. package/build/lib/extensions/biometric.d.ts.map +1 -0
  13. package/build/lib/extensions/biometric.js +31 -17
  14. package/build/lib/extensions/biometric.js.map +1 -1
  15. package/build/lib/extensions/geolocation.d.ts +15 -0
  16. package/build/lib/extensions/geolocation.d.ts.map +1 -0
  17. package/build/lib/extensions/geolocation.js +105 -54
  18. package/build/lib/extensions/geolocation.js.map +1 -1
  19. package/build/lib/extensions/index.d.ts +3 -0
  20. package/build/lib/extensions/index.d.ts.map +1 -0
  21. package/build/lib/extensions/index.js +26 -20
  22. package/build/lib/extensions/index.js.map +1 -1
  23. package/build/lib/extensions/keychain.d.ts +41 -0
  24. package/build/lib/extensions/keychain.d.ts.map +1 -0
  25. package/build/lib/extensions/keychain.js +114 -72
  26. package/build/lib/extensions/keychain.js.map +1 -1
  27. package/build/lib/extensions/misc.d.ts +23 -0
  28. package/build/lib/extensions/misc.d.ts.map +1 -0
  29. package/build/lib/extensions/misc.js +34 -17
  30. package/build/lib/extensions/misc.js.map +1 -1
  31. package/build/lib/extensions/permissions.d.ts +34 -0
  32. package/build/lib/extensions/permissions.d.ts.map +1 -0
  33. package/build/lib/extensions/permissions.js +145 -83
  34. package/build/lib/extensions/permissions.js.map +1 -1
  35. package/build/lib/extensions/safari.d.ts +34 -0
  36. package/build/lib/extensions/safari.d.ts.map +1 -0
  37. package/build/lib/extensions/safari.js +85 -48
  38. package/build/lib/extensions/safari.js.map +1 -1
  39. package/build/lib/extensions/settings.d.ts +41 -0
  40. package/build/lib/extensions/settings.d.ts.map +1 -0
  41. package/build/lib/extensions/settings.js +59 -29
  42. package/build/lib/extensions/settings.js.map +1 -1
  43. package/build/lib/logger.d.ts +4 -0
  44. package/build/lib/logger.d.ts.map +1 -0
  45. package/build/lib/logger.js +15 -18
  46. package/build/lib/logger.js.map +1 -1
  47. package/build/lib/simulator-xcode-10.d.ts +16 -0
  48. package/build/lib/simulator-xcode-10.d.ts.map +1 -0
  49. package/build/lib/simulator-xcode-10.js +78 -64
  50. package/build/lib/simulator-xcode-10.js.map +1 -1
  51. package/build/lib/simulator-xcode-11.4.d.ts +83 -0
  52. package/build/lib/simulator-xcode-11.4.d.ts.map +1 -0
  53. package/build/lib/simulator-xcode-11.4.js +146 -82
  54. package/build/lib/simulator-xcode-11.4.js.map +1 -1
  55. package/build/lib/simulator-xcode-11.d.ts +5 -0
  56. package/build/lib/simulator-xcode-11.d.ts.map +1 -0
  57. package/build/lib/simulator-xcode-11.js +20 -21
  58. package/build/lib/simulator-xcode-11.js.map +1 -1
  59. package/build/lib/simulator-xcode-14.d.ts +10 -0
  60. package/build/lib/simulator-xcode-14.d.ts.map +1 -0
  61. package/build/lib/simulator-xcode-14.js +15 -15
  62. package/build/lib/simulator-xcode-14.js.map +1 -1
  63. package/build/lib/simulator-xcode-15.d.ts +13 -0
  64. package/build/lib/simulator-xcode-15.d.ts.map +1 -0
  65. package/build/lib/simulator-xcode-15.js +65 -46
  66. package/build/lib/simulator-xcode-15.js.map +1 -1
  67. package/build/lib/simulator-xcode-8.d.ts +279 -0
  68. package/build/lib/simulator-xcode-8.d.ts.map +1 -0
  69. package/build/lib/simulator-xcode-8.js +466 -257
  70. package/build/lib/simulator-xcode-8.js.map +1 -1
  71. package/build/lib/simulator-xcode-9.3.d.ts +6 -0
  72. package/build/lib/simulator-xcode-9.3.d.ts.map +1 -0
  73. package/build/lib/simulator-xcode-9.3.js +41 -38
  74. package/build/lib/simulator-xcode-9.3.js.map +1 -1
  75. package/build/lib/simulator-xcode-9.d.ts +407 -0
  76. package/build/lib/simulator-xcode-9.d.ts.map +1 -0
  77. package/build/lib/simulator-xcode-9.js +514 -350
  78. package/build/lib/simulator-xcode-9.js.map +1 -1
  79. package/build/lib/simulator.d.ts +38 -0
  80. package/build/lib/simulator.d.ts.map +1 -0
  81. package/build/lib/simulator.js +86 -70
  82. package/build/lib/simulator.js.map +1 -1
  83. package/build/lib/utils.d.ts +23 -0
  84. package/build/lib/utils.d.ts.map +1 -0
  85. package/build/lib/utils.js +140 -116
  86. package/build/lib/utils.js.map +1 -1
  87. package/lib/defaults-utils.js +10 -4
  88. package/lib/extensions/applications.js +3 -7
  89. package/lib/extensions/biometric.js +1 -1
  90. package/lib/extensions/geolocation.js +2 -2
  91. package/lib/extensions/keychain.js +10 -4
  92. package/lib/extensions/misc.js +2 -2
  93. package/lib/extensions/permissions.js +2 -2
  94. package/lib/extensions/settings.js +1 -1
  95. package/lib/simulator-xcode-10.js +3 -3
  96. package/lib/simulator-xcode-11.4.js +2 -18
  97. package/lib/simulator-xcode-14.js +2 -2
  98. package/lib/simulator-xcode-15.js +4 -0
  99. package/lib/simulator-xcode-8.js +33 -29
  100. package/lib/simulator-xcode-9.js +35 -34
  101. package/lib/simulator.js +2 -2
  102. package/lib/utils.js +7 -0
  103. package/package.json +28 -17
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [5.2.0](https://github.com/appium/appium-ios-simulator/compare/v5.1.4...v5.2.0) (2023-08-21)
2
+
3
+
4
+ ### Features
5
+
6
+ * Switch babel to typescript ([#372](https://github.com/appium/appium-ios-simulator/issues/372)) ([1d934e9](https://github.com/appium/appium-ios-simulator/commit/1d934e9b098295604bd12a704d6298c9471cc714))
7
+
1
8
  ## [5.1.4](https://github.com/appium/appium-ios-simulator/compare/v5.1.3...v5.1.4) (2023-08-14)
2
9
 
3
10
 
package/build/index.js CHANGED
@@ -1,27 +1,10 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "getSimulator", {
7
- enumerable: true,
8
- get: function () {
9
- return _simulator.getSimulator;
10
- }
11
- });
12
- Object.defineProperty(exports, "killAllSimulators", {
13
- enumerable: true,
14
- get: function () {
15
- return _utils.killAllSimulators;
16
- }
17
- });
18
- Object.defineProperty(exports, "simExists", {
19
- enumerable: true,
20
- get: function () {
21
- return _utils.simExists;
22
- }
23
- });
24
- require("source-map-support/register");
25
- var _simulator = require("./lib/simulator");
26
- var _utils = require("./lib/utils");
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2ltdWxhdG9yIiwicmVxdWlyZSIsIl91dGlscyJdLCJzb3VyY2VzIjpbIi4uL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCB7IGdldFNpbXVsYXRvciB9IGZyb20gJy4vbGliL3NpbXVsYXRvcic7XG5pbXBvcnQgeyBraWxsQWxsU2ltdWxhdG9ycywgc2ltRXhpc3RzIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQge1xuICBnZXRTaW11bGF0b3IsXG4gIGtpbGxBbGxTaW11bGF0b3JzLFxuICBzaW1FeGlzdHMsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUEifQ==
2
+ // transpile:main
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.simExists = exports.killAllSimulators = exports.getSimulator = void 0;
5
+ const simulator_1 = require("./lib/simulator");
6
+ Object.defineProperty(exports, "getSimulator", { enumerable: true, get: function () { return simulator_1.getSimulator; } });
7
+ const utils_1 = require("./lib/utils");
8
+ Object.defineProperty(exports, "killAllSimulators", { enumerable: true, get: function () { return utils_1.killAllSimulators; } });
9
+ Object.defineProperty(exports, "simExists", { enumerable: true, get: function () { return utils_1.simExists; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,52 @@
1
+ export class NSUserDefaults {
2
+ constructor(plist: any);
3
+ plist: any;
4
+ /**
5
+ * Reads the content of the given plist file using plutil command line tool
6
+ * and serializes it to a JSON representation
7
+ *
8
+ * @returns {Promise<Record<string, any>>} The serialized plist content
9
+ * @throws {Error} If there was an error during serialization
10
+ */
11
+ asJson(): Promise<Record<string, any>>;
12
+ /**
13
+ * Updates the content of the given plist file.
14
+ * If the plist does not exist yet then it is going to be created.
15
+ *
16
+ * @param {Object} valuesMap Mapping of preference values to update.
17
+ * If any of item values are of dictionary type then only the first level dictionary gets
18
+ * updated. Everything below this level will be replaced. This is the known limitation
19
+ * of the `defaults` command line tool. A workaround for it would be to read the current
20
+ * preferences mapping first and merge it with this value.
21
+ * @throws {Error} If there was an error while updating the plist
22
+ */
23
+ update(valuesMap: any): Promise<void>;
24
+ }
25
+ /**
26
+ * Serializes the given value to plist-compatible
27
+ * XML representation, which is ready for further usage
28
+ * with `defaults` command line tool arguments
29
+ *
30
+ * @param {any} value The value to be serialized
31
+ * @param {boolean} serialize [true] Whether to serialize the resulting
32
+ * XML to string or to return raw HTMLElement instance
33
+ * @returns {Node|string} Either string or raw node representation of
34
+ * the given value
35
+ * @throws {TypeError} If it is not known how to serialize the given value
36
+ */
37
+ export function toXmlArg(value: any, serialize?: boolean): Node | string;
38
+ /**
39
+ * Generates command line args for the `defaults`
40
+ * command line utility based on the given preference values mapping.
41
+ * See https://shadowfile.inode.link/blog/2018/06/advanced-defaults1-usage/
42
+ * for more details.
43
+ *
44
+ * @param {Object} valuesMap Preferences mapping
45
+ * @param {Boolean} replace [false] Whether to generate arguments that replace
46
+ * complex typed values like arrays or dictionaries in the current plist or
47
+ * update them (the default settings)
48
+ * @returns {string[][]} Each item in the array
49
+ * is the `defaults write <plist>` command suffix
50
+ */
51
+ export function generateDefaultsCommandArgs(valuesMap: any, replace?: boolean): string[][];
52
+ //# sourceMappingURL=defaults-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults-utils.d.ts","sourceRoot":"","sources":["../../lib/defaults-utils.js"],"names":[],"mappings":"AA6GA;IACE,wBAEC;IADC,WAAkB;IAGpB;;;;;;OAMG;IACH,UAHa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAAC,CAUxC;IAED;;;;;;;;;;OAUG;IACH,sCAcC;CACF;AAtJD;;;;;;;;;;;GAWG;AACH,gCAPW,GAAG,cACH,OAAO,GAEL,IAAI,GAAC,MAAM,CA6CvB;AAED;;;;;;;;;;;;GAYG;AACH,gFAHa,MAAM,EAAE,EAAE,CAmCtB"}
@@ -1,109 +1,168 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.NSUserDefaults = void 0;
8
- exports.generateDefaultsCommandArgs = generateDefaultsCommandArgs;
9
- exports.toXmlArg = toXmlArg;
10
- require("source-map-support/register");
11
- var _lodash = _interopRequireDefault(require("lodash"));
12
- var _xmldom = require("@xmldom/xmldom");
13
- var _teen_process = require("teen_process");
14
- var _bluebird = _interopRequireDefault(require("bluebird"));
15
- var _logger = _interopRequireDefault(require("./logger"));
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.generateDefaultsCommandArgs = exports.toXmlArg = exports.NSUserDefaults = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const xmldom_1 = require("@xmldom/xmldom");
9
+ const teen_process_1 = require("teen_process");
10
+ const bluebird_1 = __importDefault(require("bluebird"));
11
+ const logger_1 = __importDefault(require("./logger"));
12
+ /**
13
+ * Serializes the given value to plist-compatible
14
+ * XML representation, which is ready for further usage
15
+ * with `defaults` command line tool arguments
16
+ *
17
+ * @param {any} value The value to be serialized
18
+ * @param {boolean} serialize [true] Whether to serialize the resulting
19
+ * XML to string or to return raw HTMLElement instance
20
+ * @returns {Node|string} Either string or raw node representation of
21
+ * the given value
22
+ * @throws {TypeError} If it is not known how to serialize the given value
23
+ */
16
24
  function toXmlArg(value, serialize = true) {
17
- let xmlDoc = null;
18
- if (_lodash.default.isPlainObject(value)) {
19
- xmlDoc = new _xmldom.DOMParser().parseFromString('<dict></dict>', 'text/xml');
20
- for (const [subKey, subValue] of _lodash.default.toPairs(value)) {
21
- const keyEl = xmlDoc.createElement('key');
22
- const keyTextEl = xmlDoc.createTextNode(subKey);
23
- keyEl.appendChild(keyTextEl);
24
- xmlDoc.documentElement.appendChild(keyEl);
25
- const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
26
- xmlDoc.documentElement.appendChild(subValueEl);
25
+ let xmlDoc = null;
26
+ if (lodash_1.default.isPlainObject(value)) {
27
+ xmlDoc = new xmldom_1.DOMParser().parseFromString('<dict></dict>', 'text/xml');
28
+ for (const [subKey, subValue] of lodash_1.default.toPairs(value)) {
29
+ const keyEl = xmlDoc.createElement('key');
30
+ const keyTextEl = xmlDoc.createTextNode(subKey);
31
+ keyEl.appendChild(keyTextEl);
32
+ xmlDoc.documentElement.appendChild(keyEl);
33
+ // @ts-ignore The typecast here is fine
34
+ const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
35
+ xmlDoc.documentElement.appendChild(subValueEl);
36
+ }
37
+ }
38
+ else if (lodash_1.default.isArray(value)) {
39
+ xmlDoc = new xmldom_1.DOMParser().parseFromString('<array></array>', 'text/xml');
40
+ for (const subValue of value) {
41
+ // @ts-ignore The typecast here is fine
42
+ const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
43
+ xmlDoc.documentElement.appendChild(subValueEl);
44
+ }
45
+ }
46
+ else if (lodash_1.default.isBoolean(value)) {
47
+ xmlDoc = new xmldom_1.DOMParser().parseFromString(value ? '<true/>' : '<false/>', 'text/xml');
48
+ }
49
+ else if (lodash_1.default.isInteger(value)) {
50
+ xmlDoc = new xmldom_1.DOMParser().parseFromString(`<integer>${value}</integer>`, 'text/xml');
51
+ }
52
+ else if (lodash_1.default.isNumber(value)) {
53
+ xmlDoc = new xmldom_1.DOMParser().parseFromString(`<real>${value}</real>`, 'text/xml');
54
+ }
55
+ else if (lodash_1.default.isString(value)) {
56
+ xmlDoc = new xmldom_1.DOMParser().parseFromString(`<string></string>`, 'text/xml');
57
+ const valueTextEl = xmlDoc.createTextNode(value);
58
+ xmlDoc.documentElement.appendChild(valueTextEl);
27
59
  }
28
- } else if (_lodash.default.isArray(value)) {
29
- xmlDoc = new _xmldom.DOMParser().parseFromString('<array></array>', 'text/xml');
30
- for (const subValue of value) {
31
- const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
32
- xmlDoc.documentElement.appendChild(subValueEl);
60
+ if (!xmlDoc) {
61
+ throw new TypeError(`The defaults value ${JSON.stringify(value)} cannot be written, ` +
62
+ `because it is not known how to handle its type`);
33
63
  }
34
- } else if (_lodash.default.isBoolean(value)) {
35
- xmlDoc = new _xmldom.DOMParser().parseFromString(value ? '<true/>' : '<false/>', 'text/xml');
36
- } else if (_lodash.default.isInteger(value)) {
37
- xmlDoc = new _xmldom.DOMParser().parseFromString(`<integer>${value}</integer>`, 'text/xml');
38
- } else if (_lodash.default.isNumber(value)) {
39
- xmlDoc = new _xmldom.DOMParser().parseFromString(`<real>${value}</real>`, 'text/xml');
40
- } else if (_lodash.default.isString(value)) {
41
- xmlDoc = new _xmldom.DOMParser().parseFromString(`<string></string>`, 'text/xml');
42
- const valueTextEl = xmlDoc.createTextNode(value);
43
- xmlDoc.documentElement.appendChild(valueTextEl);
44
- }
45
- if (!xmlDoc) {
46
- throw new TypeError(`The defaults value ${JSON.stringify(value)} cannot be written, ` + `because it is not known how to handle its type`);
47
- }
48
- return serialize ? new _xmldom.XMLSerializer().serializeToString(xmlDoc.documentElement) : xmlDoc.documentElement;
64
+ return serialize
65
+ ? new xmldom_1.XMLSerializer().serializeToString(xmlDoc.documentElement)
66
+ : xmlDoc.documentElement;
49
67
  }
68
+ exports.toXmlArg = toXmlArg;
69
+ /**
70
+ * Generates command line args for the `defaults`
71
+ * command line utility based on the given preference values mapping.
72
+ * See https://shadowfile.inode.link/blog/2018/06/advanced-defaults1-usage/
73
+ * for more details.
74
+ *
75
+ * @param {Object} valuesMap Preferences mapping
76
+ * @param {Boolean} replace [false] Whether to generate arguments that replace
77
+ * complex typed values like arrays or dictionaries in the current plist or
78
+ * update them (the default settings)
79
+ * @returns {string[][]} Each item in the array
80
+ * is the `defaults write <plist>` command suffix
81
+ */
50
82
  function generateDefaultsCommandArgs(valuesMap, replace = false) {
51
- const resultArgs = [];
52
- for (const [key, value] of _lodash.default.toPairs(valuesMap)) {
53
- try {
54
- if (!replace && _lodash.default.isPlainObject(value)) {
55
- const dictArgs = [key, '-dict-add'];
56
- for (const [subKey, subValue] of _lodash.default.toPairs(value)) {
57
- dictArgs.push(subKey, toXmlArg(subValue));
83
+ /** @type {string[][]} */
84
+ const resultArgs = [];
85
+ for (const [key, value] of lodash_1.default.toPairs(valuesMap)) {
86
+ try {
87
+ if (!replace && lodash_1.default.isPlainObject(value)) {
88
+ const dictArgs = [key, '-dict-add'];
89
+ for (const [subKey, subValue] of lodash_1.default.toPairs(value)) {
90
+ // @ts-ignore The typecast here is fine
91
+ dictArgs.push(subKey, toXmlArg(subValue));
92
+ }
93
+ resultArgs.push(dictArgs);
94
+ }
95
+ else if (!replace && lodash_1.default.isArray(value)) {
96
+ const arrayArgs = [key, '-array-add'];
97
+ for (const subValue of value) {
98
+ // @ts-ignore The typecast here is fine
99
+ arrayArgs.push(toXmlArg(subValue));
100
+ }
101
+ resultArgs.push(arrayArgs);
102
+ }
103
+ else {
104
+ // @ts-ignore The typecast here is fine
105
+ resultArgs.push([key, toXmlArg(value)]);
106
+ }
58
107
  }
59
- resultArgs.push(dictArgs);
60
- } else if (!replace && _lodash.default.isArray(value)) {
61
- const arrayArgs = [key, '-array-add'];
62
- for (const subValue of value) {
63
- arrayArgs.push(toXmlArg(subValue));
108
+ catch (e) {
109
+ if (e instanceof TypeError) {
110
+ logger_1.default.warn(e.message);
111
+ }
112
+ else {
113
+ throw e;
114
+ }
64
115
  }
65
- resultArgs.push(arrayArgs);
66
- } else {
67
- resultArgs.push([key, toXmlArg(value)]);
68
- }
69
- } catch (e) {
70
- if (e instanceof TypeError) {
71
- _logger.default.warn(e.message);
72
- } else {
73
- throw e;
74
- }
75
116
  }
76
- }
77
- return resultArgs;
117
+ return resultArgs;
78
118
  }
119
+ exports.generateDefaultsCommandArgs = generateDefaultsCommandArgs;
79
120
  class NSUserDefaults {
80
- constructor(plist) {
81
- this.plist = plist;
82
- }
83
- async asJson() {
84
- try {
85
- const {
86
- stdout
87
- } = await (0, _teen_process.exec)('plutil', ['-convert', 'json', '-o', '-', this.plist]);
88
- return JSON.parse(stdout);
89
- } catch (e) {
90
- throw new Error(`'${this.plist}' cannot be converted to JSON. Original error: ${e.stderr || e.message}`);
121
+ constructor(plist) {
122
+ this.plist = plist;
91
123
  }
92
- }
93
- async update(valuesMap) {
94
- if (!_lodash.default.isPlainObject(valuesMap)) {
95
- throw new TypeError(`plist values must be a map. '${valuesMap}' is given instead`);
96
- }
97
- if (_lodash.default.isEmpty(valuesMap)) {
98
- return;
124
+ /**
125
+ * Reads the content of the given plist file using plutil command line tool
126
+ * and serializes it to a JSON representation
127
+ *
128
+ * @returns {Promise<Record<string, any>>} The serialized plist content
129
+ * @throws {Error} If there was an error during serialization
130
+ */
131
+ async asJson() {
132
+ try {
133
+ const { stdout } = await (0, teen_process_1.exec)('plutil', ['-convert', 'json', '-o', '-', this.plist]);
134
+ return JSON.parse(stdout);
135
+ }
136
+ catch (e) {
137
+ throw new Error(`'${this.plist}' cannot be converted to JSON. Original error: ${e.stderr || e.message}`);
138
+ }
99
139
  }
100
- const commandArgs = generateDefaultsCommandArgs(valuesMap);
101
- try {
102
- await _bluebird.default.all(commandArgs.map(args => (0, _teen_process.exec)('defaults', ['write', this.plist, ...args])));
103
- } catch (e) {
104
- throw new Error(`Could not write defaults into '${this.plist}'. Original error: ${e.stderr || e.message}`);
140
+ /**
141
+ * Updates the content of the given plist file.
142
+ * If the plist does not exist yet then it is going to be created.
143
+ *
144
+ * @param {Object} valuesMap Mapping of preference values to update.
145
+ * If any of item values are of dictionary type then only the first level dictionary gets
146
+ * updated. Everything below this level will be replaced. This is the known limitation
147
+ * of the `defaults` command line tool. A workaround for it would be to read the current
148
+ * preferences mapping first and merge it with this value.
149
+ * @throws {Error} If there was an error while updating the plist
150
+ */
151
+ async update(valuesMap) {
152
+ if (!lodash_1.default.isPlainObject(valuesMap)) {
153
+ throw new TypeError(`plist values must be a map. '${valuesMap}' is given instead`);
154
+ }
155
+ if (lodash_1.default.isEmpty(valuesMap)) {
156
+ return;
157
+ }
158
+ const commandArgs = generateDefaultsCommandArgs(valuesMap);
159
+ try {
160
+ await bluebird_1.default.all(commandArgs.map((args) => (0, teen_process_1.exec)('defaults', ['write', this.plist, ...args])));
161
+ }
162
+ catch (e) {
163
+ throw new Error(`Could not write defaults into '${this.plist}'. Original error: ${e.stderr || e.message}`);
164
+ }
105
165
  }
106
- }
107
166
  }
108
167
  exports.NSUserDefaults = NSUserDefaults;
109
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfeG1sZG9tIiwiX3RlZW5fcHJvY2VzcyIsIl9ibHVlYmlyZCIsIl9sb2dnZXIiLCJ0b1htbEFyZyIsInZhbHVlIiwic2VyaWFsaXplIiwieG1sRG9jIiwiXyIsImlzUGxhaW5PYmplY3QiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJzdWJLZXkiLCJzdWJWYWx1ZSIsInRvUGFpcnMiLCJrZXlFbCIsImNyZWF0ZUVsZW1lbnQiLCJrZXlUZXh0RWwiLCJjcmVhdGVUZXh0Tm9kZSIsImFwcGVuZENoaWxkIiwiZG9jdW1lbnRFbGVtZW50Iiwic3ViVmFsdWVFbCIsImltcG9ydE5vZGUiLCJpc0FycmF5IiwiaXNCb29sZWFuIiwiaXNJbnRlZ2VyIiwiaXNOdW1iZXIiLCJpc1N0cmluZyIsInZhbHVlVGV4dEVsIiwiVHlwZUVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsImdlbmVyYXRlRGVmYXVsdHNDb21tYW5kQXJncyIsInZhbHVlc01hcCIsInJlcGxhY2UiLCJyZXN1bHRBcmdzIiwia2V5IiwiZGljdEFyZ3MiLCJwdXNoIiwiYXJyYXlBcmdzIiwiZSIsImxvZyIsIndhcm4iLCJtZXNzYWdlIiwiTlNVc2VyRGVmYXVsdHMiLCJjb25zdHJ1Y3RvciIsInBsaXN0IiwiYXNKc29uIiwic3Rkb3V0IiwiZXhlYyIsInBhcnNlIiwiRXJyb3IiLCJzdGRlcnIiLCJ1cGRhdGUiLCJpc0VtcHR5IiwiY29tbWFuZEFyZ3MiLCJCIiwiYWxsIiwibWFwIiwiYXJncyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvZGVmYXVsdHMtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERPTVBhcnNlciwgWE1MU2VyaWFsaXplciB9IGZyb20gJ0B4bWxkb20veG1sZG9tJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gdmFsdWUgdG8gcGxpc3QtY29tcGF0aWJsZVxuICogWE1MIHJlcHJlc2VudGF0aW9uLCB3aGljaCBpcyByZWFkeSBmb3IgZnVydGhlciB1c2FnZVxuICogd2l0aCBgZGVmYXVsdHNgIGNvbW1hbmQgbGluZSB0b29sIGFyZ3VtZW50c1xuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIHNlcmlhbGl6ZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VyaWFsaXplIFt0cnVlXSBXaGV0aGVyIHRvIHNlcmlhbGl6ZSB0aGUgcmVzdWx0aW5nXG4gKiBYTUwgdG8gc3RyaW5nIG9yIHRvIHJldHVybiByYXcgSFRNTEVsZW1lbnQgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudHxzdHJpbmd9IEVpdGhlciBzdHJpbmcgb3IgcmF3IG5vZGUgcmVwcmVzZW50YXRpb24gb2ZcbiAqIHRoZSBnaXZlbiB2YWx1ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBpdCBpcyBub3Qga25vd24gaG93IHRvIHNlcmlhbGl6ZSB0aGUgZ2l2ZW4gdmFsdWVcbiAqL1xuZnVuY3Rpb24gdG9YbWxBcmcgKHZhbHVlLCBzZXJpYWxpemUgPSB0cnVlKSB7XG4gIGxldCB4bWxEb2MgPSBudWxsO1xuXG4gIGlmIChfLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgeG1sRG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPGRpY3Q+PC9kaWN0PicsICd0ZXh0L3htbCcpO1xuICAgIGZvciAoY29uc3QgW3N1YktleSwgc3ViVmFsdWVdIG9mIF8udG9QYWlycyh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGtleUVsID0geG1sRG9jLmNyZWF0ZUVsZW1lbnQoJ2tleScpO1xuICAgICAgY29uc3Qga2V5VGV4dEVsID0geG1sRG9jLmNyZWF0ZVRleHROb2RlKHN1YktleSk7XG4gICAgICBrZXlFbC5hcHBlbmRDaGlsZChrZXlUZXh0RWwpO1xuICAgICAgeG1sRG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChrZXlFbCk7XG4gICAgICBjb25zdCBzdWJWYWx1ZUVsID0geG1sRG9jLmltcG9ydE5vZGUodG9YbWxBcmcoc3ViVmFsdWUsIGZhbHNlKSwgdHJ1ZSk7XG4gICAgICB4bWxEb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHN1YlZhbHVlRWwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkodmFsdWUpKSB7XG4gICAgeG1sRG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPGFycmF5PjwvYXJyYXk+JywgJ3RleHQveG1sJyk7XG4gICAgZm9yIChjb25zdCBzdWJWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgY29uc3Qgc3ViVmFsdWVFbCA9IHhtbERvYy5pbXBvcnROb2RlKHRvWG1sQXJnKHN1YlZhbHVlLCBmYWxzZSksIHRydWUpO1xuICAgICAgeG1sRG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChzdWJWYWx1ZUVsKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXy5pc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgeG1sRG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSA/ICc8dHJ1ZS8+JyA6ICc8ZmFsc2UvPicsICd0ZXh0L3htbCcpO1xuICB9IGVsc2UgaWYgKF8uaXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgIHhtbERvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYDxpbnRlZ2VyPiR7dmFsdWV9PC9pbnRlZ2VyPmAsICd0ZXh0L3htbCcpO1xuICB9IGVsc2UgaWYgKF8uaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgeG1sRG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHJlYWw+JHt2YWx1ZX08L3JlYWw+YCwgJ3RleHQveG1sJyk7XG4gIH0gZWxzZSBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICB4bWxEb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3RyaW5nPjwvc3RyaW5nPmAsICd0ZXh0L3htbCcpO1xuICAgIGNvbnN0IHZhbHVlVGV4dEVsID0geG1sRG9jLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICB4bWxEb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHZhbHVlVGV4dEVsKTtcbiAgfVxuXG4gIGlmICgheG1sRG9jKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIGRlZmF1bHRzIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSBjYW5ub3QgYmUgd3JpdHRlbiwgYCArXG4gICAgICBgYmVjYXVzZSBpdCBpcyBub3Qga25vd24gaG93IHRvIGhhbmRsZSBpdHMgdHlwZWApO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVxuICAgID8gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyh4bWxEb2MuZG9jdW1lbnRFbGVtZW50KVxuICAgIDogeG1sRG9jLmRvY3VtZW50RWxlbWVudDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgY29tbWFuZCBsaW5lIGFyZ3MgZm9yIHRoZSBgZGVmYXVsdHNgXG4gKiBjb21tYW5kIGxpbmUgdXRpbGl0eSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcHJlZmVyZW5jZSB2YWx1ZXMgbWFwcGluZy5cbiAqIFNlZSBodHRwczovL3NoYWRvd2ZpbGUuaW5vZGUubGluay9ibG9nLzIwMTgvMDYvYWR2YW5jZWQtZGVmYXVsdHMxLXVzYWdlL1xuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzTWFwIFByZWZlcmVuY2VzIG1hcHBpbmdcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVwbGFjZSBbZmFsc2VdIFdoZXRoZXIgdG8gZ2VuZXJhdGUgYXJndW1lbnRzIHRoYXQgcmVwbGFjZVxuICogY29tcGxleCB0eXBlZCB2YWx1ZXMgbGlrZSBhcnJheXMgb3IgZGljdGlvbmFyaWVzIGluIHRoZSBjdXJyZW50IHBsaXN0IG9yXG4gKiB1cGRhdGUgdGhlbSAodGhlIGRlZmF1bHQgc2V0dGluZ3MpXG4gKiBAcmV0dXJucyB7QXJyYXk8QXJyYXk8c3RyaW5nPj59IEVhY2ggaXRlbSBpbiB0aGUgYXJyYXlcbiAqIGlzIHRoZSBgZGVmYXVsdHMgd3JpdGUgPHBsaXN0PmAgY29tbWFuZCBzdWZmaXhcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEZWZhdWx0c0NvbW1hbmRBcmdzICh2YWx1ZXNNYXAsIHJlcGxhY2UgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyh2YWx1ZXNNYXApKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVwbGFjZSAmJiBfLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGRpY3RBcmdzID0gW2tleSwgJy1kaWN0LWFkZCddO1xuICAgICAgICBmb3IgKGNvbnN0IFtzdWJLZXksIHN1YlZhbHVlXSBvZiBfLnRvUGFpcnModmFsdWUpKSB7XG4gICAgICAgICAgZGljdEFyZ3MucHVzaChzdWJLZXksIHRvWG1sQXJnKHN1YlZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGRpY3RBcmdzKTtcbiAgICAgIH0gZWxzZSBpZiAoIXJlcGxhY2UgJiYgXy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBhcnJheUFyZ3MgPSBba2V5LCAnLWFycmF5LWFkZCddO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YlZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgYXJyYXlBcmdzLnB1c2godG9YbWxBcmcoc3ViVmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRBcmdzLnB1c2goYXJyYXlBcmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdEFyZ3MucHVzaChba2V5LCB0b1htbEFyZyh2YWx1ZSldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBsb2cud2FybihlLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdEFyZ3M7XG59XG5cblxuY2xhc3MgTlNVc2VyRGVmYXVsdHMge1xuICBjb25zdHJ1Y3RvciAocGxpc3QpIHtcbiAgICB0aGlzLnBsaXN0ID0gcGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGdpdmVuIHBsaXN0IGZpbGUgdXNpbmcgcGx1dGlsIGNvbW1hbmQgbGluZSB0b29sXG4gICAqIGFuZCBzZXJpYWxpemVzIGl0IHRvIGEgSlNPTiByZXByZXNlbnRhdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgc2VyaWFsaXplZCBwbGlzdCBjb250ZW50XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHNlcmlhbGl6YXRpb25cbiAgICovXG4gIGFzeW5jIGFzSnNvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygncGx1dGlsJywgWyctY29udmVydCcsICdqc29uJywgJy1vJywgJy0nLCB0aGlzLnBsaXN0XSk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShzdGRvdXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7dGhpcy5wbGlzdH0nIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZW50IG9mIHRoZSBnaXZlbiBwbGlzdCBmaWxlLlxuICAgKiBJZiB0aGUgcGxpc3QgZG9lcyBub3QgZXhpc3QgeWV0IHRoZW4gaXQgaXMgZ29pbmcgdG8gYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlc01hcCBNYXBwaW5nIG9mIHByZWZlcmVuY2UgdmFsdWVzIHRvIHVwZGF0ZS5cbiAgICogSWYgYW55IG9mIGl0ZW0gdmFsdWVzIGFyZSBvZiBkaWN0aW9uYXJ5IHR5cGUgdGhlbiBvbmx5IHRoZSBmaXJzdCBsZXZlbCBkaWN0aW9uYXJ5IGdldHNcbiAgICogdXBkYXRlZC4gRXZlcnl0aGluZyBiZWxvdyB0aGlzIGxldmVsIHdpbGwgYmUgcmVwbGFjZWQuIFRoaXMgaXMgdGhlIGtub3duIGxpbWl0YXRpb25cbiAgICogb2YgdGhlIGBkZWZhdWx0c2AgY29tbWFuZCBsaW5lIHRvb2wuIEEgd29ya2Fyb3VuZCBmb3IgaXQgd291bGQgYmUgdG8gcmVhZCB0aGUgY3VycmVudFxuICAgKiBwcmVmZXJlbmNlcyBtYXBwaW5nIGZpcnN0IGFuZCBtZXJnZSBpdCB3aXRoIHRoaXMgdmFsdWUuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgdXBkYXRpbmcgdGhlIHBsaXN0XG4gICAqL1xuICBhc3luYyB1cGRhdGUgKHZhbHVlc01hcCkge1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KHZhbHVlc01hcCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHBsaXN0IHZhbHVlcyBtdXN0IGJlIGEgbWFwLiAnJHt2YWx1ZXNNYXB9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkodmFsdWVzTWFwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmRBcmdzID0gZ2VuZXJhdGVEZWZhdWx0c0NvbW1hbmRBcmdzKHZhbHVlc01hcCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IEIuYWxsKGNvbW1hbmRBcmdzLm1hcCgoYXJncykgPT4gZXhlYygnZGVmYXVsdHMnLCBbJ3dyaXRlJywgdGhpcy5wbGlzdCwgLi4uYXJnc10pKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgd3JpdGUgZGVmYXVsdHMgaW50byAnJHt0aGlzLnBsaXN0fScuIE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuXG5leHBvcnQge1xuICBOU1VzZXJEZWZhdWx0cyxcbiAgdG9YbWxBcmcsIGdlbmVyYXRlRGVmYXVsdHNDb21tYW5kQXJncyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFjQSxTQUFTSyxRQUFRQSxDQUFFQyxLQUFLLEVBQUVDLFNBQVMsR0FBRyxJQUFJLEVBQUU7RUFDMUMsSUFBSUMsTUFBTSxHQUFHLElBQUk7RUFFakIsSUFBSUMsZUFBQyxDQUFDQyxhQUFhLENBQUNKLEtBQUssQ0FBQyxFQUFFO0lBQzFCRSxNQUFNLEdBQUcsSUFBSUcsaUJBQVMsQ0FBQyxDQUFDLENBQUNDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQ3JFLEtBQUssTUFBTSxDQUFDQyxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxJQUFJTCxlQUFDLENBQUNNLE9BQU8sQ0FBQ1QsS0FBSyxDQUFDLEVBQUU7TUFDakQsTUFBTVUsS0FBSyxHQUFHUixNQUFNLENBQUNTLGFB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
168
+ //# sourceMappingURL=defaults-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults-utils.js","names":["_lodash","_interopRequireDefault","require","_xmldom","_teen_process","_bluebird","_logger","toXmlArg","value","serialize","xmlDoc","_","isPlainObject","DOMParser","parseFromString","subKey","subValue","toPairs","keyEl","createElement","keyTextEl","createTextNode","appendChild","documentElement","subValueEl","importNode","isArray","isBoolean","isInteger","isNumber","isString","valueTextEl","TypeError","JSON","stringify","XMLSerializer","serializeToString","generateDefaultsCommandArgs","valuesMap","replace","resultArgs","key","dictArgs","push","arrayArgs","e","log","warn","message","NSUserDefaults","constructor","plist","asJson","stdout","exec","parse","Error","stderr","update","isEmpty","commandArgs","B","all","map","args","exports"],"sources":["../../lib/defaults-utils.js"],"sourcesContent":["import _ from 'lodash';\nimport { DOMParser, XMLSerializer } from '@xmldom/xmldom';\nimport { exec } from 'teen_process';\nimport B from 'bluebird';\nimport log from './logger';\n\n/**\n * Serializes the given value to plist-compatible\n * XML representation, which is ready for further usage\n * with `defaults` command line tool arguments\n *\n * @param {*} value The value to be serialized\n * @param {boolean} serialize [true] Whether to serialize the resulting\n * XML to string or to return raw HTMLElement instance\n * @returns {HTMLElement|string} Either string or raw node representation of\n * the given value\n * @throws {TypeError} If it is not known how to serialize the given value\n */\nfunction toXmlArg (value, serialize = true) {\n let xmlDoc = null;\n\n if (_.isPlainObject(value)) {\n xmlDoc = new DOMParser().parseFromString('<dict></dict>', 'text/xml');\n for (const [subKey, subValue] of _.toPairs(value)) {\n const keyEl = xmlDoc.createElement('key');\n const keyTextEl = xmlDoc.createTextNode(subKey);\n keyEl.appendChild(keyTextEl);\n xmlDoc.documentElement.appendChild(keyEl);\n const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);\n xmlDoc.documentElement.appendChild(subValueEl);\n }\n } else if (_.isArray(value)) {\n xmlDoc = new DOMParser().parseFromString('<array></array>', 'text/xml');\n for (const subValue of value) {\n const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);\n xmlDoc.documentElement.appendChild(subValueEl);\n }\n } else if (_.isBoolean(value)) {\n xmlDoc = new DOMParser().parseFromString(value ? '<true/>' : '<false/>', 'text/xml');\n } else if (_.isInteger(value)) {\n xmlDoc = new DOMParser().parseFromString(`<integer>${value}</integer>`, 'text/xml');\n } else if (_.isNumber(value)) {\n xmlDoc = new DOMParser().parseFromString(`<real>${value}</real>`, 'text/xml');\n } else if (_.isString(value)) {\n xmlDoc = new DOMParser().parseFromString(`<string></string>`, 'text/xml');\n const valueTextEl = xmlDoc.createTextNode(value);\n xmlDoc.documentElement.appendChild(valueTextEl);\n }\n\n if (!xmlDoc) {\n throw new TypeError(`The defaults value ${JSON.stringify(value)} cannot be written, ` +\n `because it is not known how to handle its type`);\n }\n\n return serialize\n ? new XMLSerializer().serializeToString(xmlDoc.documentElement)\n : xmlDoc.documentElement;\n}\n\n/**\n * Generates command line args for the `defaults`\n * command line utility based on the given preference values mapping.\n * See https://shadowfile.inode.link/blog/2018/06/advanced-defaults1-usage/\n * for more details.\n *\n * @param {Object} valuesMap Preferences mapping\n * @param {Boolean} replace [false] Whether to generate arguments that replace\n * complex typed values like arrays or dictionaries in the current plist or\n * update them (the default settings)\n * @returns {Array<Array<string>>} Each item in the array\n * is the `defaults write <plist>` command suffix\n */\nfunction generateDefaultsCommandArgs (valuesMap, replace = false) {\n const resultArgs = [];\n for (const [key, value] of _.toPairs(valuesMap)) {\n try {\n if (!replace && _.isPlainObject(value)) {\n const dictArgs = [key, '-dict-add'];\n for (const [subKey, subValue] of _.toPairs(value)) {\n dictArgs.push(subKey, toXmlArg(subValue));\n }\n resultArgs.push(dictArgs);\n } else if (!replace && _.isArray(value)) {\n const arrayArgs = [key, '-array-add'];\n for (const subValue of value) {\n arrayArgs.push(toXmlArg(subValue));\n }\n resultArgs.push(arrayArgs);\n } else {\n resultArgs.push([key, toXmlArg(value)]);\n }\n } catch (e) {\n if (e instanceof TypeError) {\n log.warn(e.message);\n } else {\n throw e;\n }\n }\n }\n return resultArgs;\n}\n\n\nclass NSUserDefaults {\n constructor (plist) {\n this.plist = plist;\n }\n\n /**\n * Reads the content of the given plist file using plutil command line tool\n * and serializes it to a JSON representation\n *\n * @returns {Object} The serialized plist content\n * @throws {Error} If there was an error during serialization\n */\n async asJson () {\n try {\n const {stdout} = await exec('plutil', ['-convert', 'json', '-o', '-', this.plist]);\n return JSON.parse(stdout);\n } catch (e) {\n throw new Error(`'${this.plist}' cannot be converted to JSON. Original error: ${e.stderr || e.message}`);\n }\n }\n\n /**\n * Updates the content of the given plist file.\n * If the plist does not exist yet then it is going to be created.\n *\n * @param {Object} valuesMap Mapping of preference values to update.\n * If any of item values are of dictionary type then only the first level dictionary gets\n * updated. Everything below this level will be replaced. This is the known limitation\n * of the `defaults` command line tool. A workaround for it would be to read the current\n * preferences mapping first and merge it with this value.\n * @throws {Error} If there was an error while updating the plist\n */\n async update (valuesMap) {\n if (!_.isPlainObject(valuesMap)) {\n throw new TypeError(`plist values must be a map. '${valuesMap}' is given instead`);\n }\n if (_.isEmpty(valuesMap)) {\n return;\n }\n\n const commandArgs = generateDefaultsCommandArgs(valuesMap);\n try {\n await B.all(commandArgs.map((args) => exec('defaults', ['write', this.plist, ...args])));\n } catch (e) {\n throw new Error(`Could not write defaults into '${this.plist}'. Original error: ${e.stderr || e.message}`);\n }\n }\n}\n\n\nexport {\n NSUserDefaults,\n toXmlArg, generateDefaultsCommandArgs,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"defaults-utils.js","sourceRoot":"","sources":["../../lib/defaults-utils.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export default extensions;
2
+ export type LaunchAppOpts = {
3
+ /**
4
+ * [false] Whether to wait until the app has fully started and
5
+ * is present in processes list
6
+ */
7
+ wait: boolean;
8
+ /**
9
+ * [10000] The number of milliseconds to wait until
10
+ * the app is fully started. Only applicatble if `wait` is true.
11
+ */
12
+ timeoutMs: number;
13
+ };
14
+ declare namespace extensions {
15
+ /**
16
+ * Install valid .app package on Simulator.
17
+ *
18
+ * @param {string} app - The path to the .app package.
19
+ */
20
+ function installApp(app: string): Promise<any>;
21
+ /**
22
+ * Returns user installed bundle ids which has 'bundleName' in their Info.Plist as 'CFBundleName'
23
+ *
24
+ * @param {string} bundleName - The bundle name of the application to be checked.
25
+ * @return {Promise<string[]>} - The list of bundle ids which have 'bundleName'
26
+ */
27
+ function getUserInstalledBundleIdsByBundleName(bundleName: string): Promise<string[]>;
28
+ /**
29
+ * Verify whether the particular application is installed on Simulator.
30
+ *
31
+ * @param {string} bundleId - The bundle id of the application to be checked.
32
+ * @return {Promise<boolean>} True if the given application is installed.
33
+ */
34
+ function isAppInstalled(bundleId: string): Promise<boolean>;
35
+ /**
36
+ * Uninstall the given application from the current Simulator.
37
+ *
38
+ * @param {string} bundleId - The buindle ID of the application to be removed.
39
+ */
40
+ function removeApp(bundleId: string): Promise<void>;
41
+ /**
42
+ * @typedef {Object} LaunchAppOpts
43
+ * @property {boolean} wait [false] Whether to wait until the app has fully started and
44
+ * is present in processes list
45
+ * @property {number} timeoutMs [10000] The number of milliseconds to wait until
46
+ * the app is fully started. Only applicatble if `wait` is true.
47
+ */
48
+ /**
49
+ * Starts the given application on Simulator
50
+ *
51
+ * @param {string} bundleId - The buindle ID of the application to be launched
52
+ * @param {Partial<LaunchAppOpts>} opts
53
+ */
54
+ function launchApp(bundleId: string, opts?: Partial<LaunchAppOpts>): Promise<void>;
55
+ /**
56
+ * Stops the given application on Simulator.
57
+ *
58
+ * @param {string} bundleId - The buindle ID of the application to be stopped
59
+ */
60
+ function terminateApp(bundleId: string): Promise<void>;
61
+ /**
62
+ * Check if app with the given identifier is running.
63
+ *
64
+ * @param {string} bundleId - The buindle ID of the application to be checked.
65
+ */
66
+ function isAppRunning(bundleId: string): Promise<any>;
67
+ /**
68
+ * Scrub (delete the preferences and changed files) the particular application on Simulator.
69
+ * The app will be terminated automatically if it is running.
70
+ *
71
+ * @param {string} bundleId - Bundle identifier of the application.
72
+ * @throws {Error} if the given app is not installed.
73
+ */
74
+ function scrubApp(bundleId: string): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=applications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../../lib/extensions/applications.js"],"names":[],"mappings":";;;;;;UA4Fc,OAAO;;;;;eAEP,MAAM;;;IArFpB;;;;OAIG;IACH,+CAEC;IAED;;;;;OAKG;IACH,sFAgCC;IAED;;;;;OAKG;IACH,4DAeC;IAED;;;;OAIG;IACH,oDAEC;IAED;;;;;;OAMG;IAEH;;;;;OAKG;IACH,mFAkBC;IAED;;;;OAIG;IACH,uDAEC;IAED;;;;OAIG;IACH,sDAEC;IAED;;;;;;OAMG;IACH,mDAgBC"}