node-simctl 8.0.3 → 8.0.5
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/CHANGELOG.md +12 -0
- package/build/lib/helpers.d.ts +6 -0
- package/build/lib/helpers.d.ts.map +1 -1
- package/build/lib/helpers.js +10 -0
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/simctl.js +47 -41
- package/build/lib/simctl.js.map +1 -1
- package/build/lib/subcommands/io.js +2 -2
- package/build/lib/subcommands/io.js.map +1 -1
- package/build/lib/subcommands/keychain.js +2 -2
- package/build/lib/subcommands/keychain.js.map +1 -1
- package/build/lib/subcommands/push.js +2 -2
- package/build/lib/subcommands/push.js.map +1 -1
- package/lib/helpers.js +10 -0
- package/lib/subcommands/io.js +2 -2
- package/lib/subcommands/keychain.js +2 -2
- package/lib/subcommands/push.js +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [8.0.5](https://github.com/appium/node-simctl/compare/v8.0.4...v8.0.5) (2025-10-17)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* **deps-dev:** bump semantic-release from 24.2.9 to 25.0.0 ([#274](https://github.com/appium/node-simctl/issues/274)) ([c56ecaa](https://github.com/appium/node-simctl/commit/c56ecaa45471c0e42d71346bd481cecf53c44e67))
|
|
6
|
+
|
|
7
|
+
## [8.0.4](https://github.com/appium/node-simctl/compare/v8.0.3...v8.0.4) (2025-10-09)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* **deps:** bump uuid from 11.1.0 to 13.0.0 ([#272](https://github.com/appium/node-simctl/issues/272)) ([e15f90d](https://github.com/appium/node-simctl/commit/e15f90d93f7c759de27b55cd506e6b21a126e244))
|
|
12
|
+
|
|
1
13
|
## [8.0.3](https://github.com/appium/node-simctl/compare/v8.0.2...v8.0.3) (2025-08-23)
|
|
2
14
|
|
|
3
15
|
### Miscellaneous Chores
|
package/build/lib/helpers.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ export function normalizeVersion(version: string): string;
|
|
|
11
11
|
* @returns {string}
|
|
12
12
|
*/
|
|
13
13
|
export function getXcrunBinary(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a UUID v4
|
|
16
|
+
*
|
|
17
|
+
* @returns {Promise<string>}
|
|
18
|
+
*/
|
|
19
|
+
export function uuidV4(): Promise<string>;
|
|
14
20
|
export const DEFAULT_EXEC_TIMEOUT: number;
|
|
15
21
|
export const SIM_RUNTIME_NAME: "com.apple.CoreSimulator.SimRuntime.";
|
|
16
22
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../lib/helpers.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,0CAJW,MAAM,GACL,MAAM,CASjB;AAED;;GAEG;AACH,kCAFa,MAAM,CAIlB;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../lib/helpers.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,0CAJW,MAAM,GACL,MAAM,CASjB;AAED;;GAEG;AACH,kCAFa,MAAM,CAIlB;AAED;;;;GAIG;AACH,0BAFa,OAAO,CAAC,MAAM,CAAC,CAK3B;AAlCD,0CAAmD;AACnD,+BAAgC,qCAAqC,CAAC"}
|
package/build/lib/helpers.js
CHANGED
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.SIM_RUNTIME_NAME = exports.DEFAULT_EXEC_TIMEOUT = void 0;
|
|
37
37
|
exports.normalizeVersion = normalizeVersion;
|
|
38
38
|
exports.getXcrunBinary = getXcrunBinary;
|
|
39
|
+
exports.uuidV4 = uuidV4;
|
|
39
40
|
const semver = __importStar(require("semver"));
|
|
40
41
|
exports.DEFAULT_EXEC_TIMEOUT = 10 * 60 * 1000; // ms
|
|
41
42
|
exports.SIM_RUNTIME_NAME = 'com.apple.CoreSimulator.SimRuntime.';
|
|
@@ -60,4 +61,13 @@ function normalizeVersion(version) {
|
|
|
60
61
|
function getXcrunBinary() {
|
|
61
62
|
return process.env.XCRUN_BINARY || 'xcrun';
|
|
62
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate a UUID v4
|
|
66
|
+
*
|
|
67
|
+
* @returns {Promise<string>}
|
|
68
|
+
*/
|
|
69
|
+
async function uuidV4() {
|
|
70
|
+
const uuidLib = await import('uuid');
|
|
71
|
+
return uuidLib.v4();
|
|
72
|
+
}
|
|
63
73
|
//# sourceMappingURL=helpers.js.map
|
package/build/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/helpers.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,4CAMC;AAKD,wCAEC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/helpers.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,4CAMC;AAKD,wCAEC;AAOD,wBAGC;AApCD,+CAAiC;AAEpB,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK;AAC5C,QAAA,gBAAgB,GAAG,qCAAqC,CAAC;AAEtE;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAE,OAAO;IACvC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,MAAM;IAC1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC;AACtB,CAAC"}
|
package/build/lib/simctl.js
CHANGED
|
@@ -119,51 +119,16 @@ const DEFAULT_OPTS = {
|
|
|
119
119
|
* By default this path usually equals to ~/Library/Developer/CoreSimulator/Devices
|
|
120
120
|
*/
|
|
121
121
|
class Simctl {
|
|
122
|
+
/** @type {XCRun} */
|
|
123
|
+
xcrun;
|
|
124
|
+
/** @type {number} */
|
|
125
|
+
execTimeout;
|
|
126
|
+
/** @type {boolean} */
|
|
127
|
+
logErrors;
|
|
122
128
|
/**
|
|
123
129
|
* @param {SimctlOpts} [opts={}]
|
|
124
130
|
*/
|
|
125
131
|
constructor(opts = {}) {
|
|
126
|
-
this.addMedia = addmedia_1.default.addMedia;
|
|
127
|
-
this.appInfo = appinfo_1.default.appInfo;
|
|
128
|
-
this.bootDevice = boot_1.default.bootDevice;
|
|
129
|
-
this.startBootMonitor = bootstatus_1.default.startBootMonitor;
|
|
130
|
-
this.createDevice = create_1.default.createDevice;
|
|
131
|
-
this.deleteDevice = delete_1.default.deleteDevice;
|
|
132
|
-
this.eraseDevice = erase_1.default.eraseDevice;
|
|
133
|
-
this.getAppContainer = get_app_container_1.default.getAppContainer;
|
|
134
|
-
this.getEnv = getenv_1.default.getEnv;
|
|
135
|
-
this.installApp = install_1.default.installApp;
|
|
136
|
-
this.getScreenshot = io_1.default.getScreenshot;
|
|
137
|
-
this.addRootCertificate = keychain_1.default.addRootCertificate;
|
|
138
|
-
this.addCertificate = keychain_1.default.addCertificate;
|
|
139
|
-
this.resetKeychain = keychain_1.default.resetKeychain;
|
|
140
|
-
this.launchApp = launch_1.default.launchApp;
|
|
141
|
-
this.getDevicesByParsing = list_1.default.getDevicesByParsing;
|
|
142
|
-
this.getDevices = list_1.default.getDevices;
|
|
143
|
-
this.getRuntimeForPlatformVersionViaJson = list_1.default.getRuntimeForPlatformVersionViaJson;
|
|
144
|
-
this.getRuntimeForPlatformVersion = list_1.default.getRuntimeForPlatformVersion;
|
|
145
|
-
this.getDeviceTypes = list_1.default.getDeviceTypes;
|
|
146
|
-
this.list = list_1.default.list;
|
|
147
|
-
this.setLocation = location_1.default.setLocation;
|
|
148
|
-
this.clearLocation = location_1.default.clearLocation;
|
|
149
|
-
this.openUrl = openurl_1.default.openUrl;
|
|
150
|
-
this.setPasteboard = pbcopy_1.default.setPasteboard;
|
|
151
|
-
this.getPasteboard = pbpaste_1.default.getPasteboard;
|
|
152
|
-
this.grantPermission = privacy_1.default.grantPermission;
|
|
153
|
-
this.revokePermission = privacy_1.default.revokePermission;
|
|
154
|
-
this.resetPermission = privacy_1.default.resetPermission;
|
|
155
|
-
this.pushNotification = push_1.default.pushNotification;
|
|
156
|
-
this.shutdownDevice = shutdown_1.default.shutdownDevice;
|
|
157
|
-
this.spawnProcess = spawn_1.default.spawnProcess;
|
|
158
|
-
this.spawnSubProcess = spawn_1.default.spawnSubProcess;
|
|
159
|
-
this.terminateApp = terminate_1.default.terminateApp;
|
|
160
|
-
this.getAppearance = ui_1.default.getAppearance;
|
|
161
|
-
this.setAppearance = ui_1.default.setAppearance;
|
|
162
|
-
this.getIncreaseContrast = ui_1.default.getIncreaseContrast;
|
|
163
|
-
this.setIncreaseContrast = ui_1.default.setIncreaseContrast;
|
|
164
|
-
this.getContentSize = ui_1.default.getContentSize;
|
|
165
|
-
this.setContentSize = ui_1.default.setContentSize;
|
|
166
|
-
this.removeApp = uninstall_1.default.removeApp;
|
|
167
132
|
opts = lodash_1.default.cloneDeep(opts);
|
|
168
133
|
lodash_1.default.defaultsDeep(opts, DEFAULT_OPTS);
|
|
169
134
|
for (const key of lodash_1.default.keys(DEFAULT_OPTS)) {
|
|
@@ -270,6 +235,47 @@ class Simctl {
|
|
|
270
235
|
throw e;
|
|
271
236
|
}
|
|
272
237
|
}
|
|
238
|
+
addMedia = addmedia_1.default.addMedia;
|
|
239
|
+
appInfo = appinfo_1.default.appInfo;
|
|
240
|
+
bootDevice = boot_1.default.bootDevice;
|
|
241
|
+
startBootMonitor = bootstatus_1.default.startBootMonitor;
|
|
242
|
+
createDevice = create_1.default.createDevice;
|
|
243
|
+
deleteDevice = delete_1.default.deleteDevice;
|
|
244
|
+
eraseDevice = erase_1.default.eraseDevice;
|
|
245
|
+
getAppContainer = get_app_container_1.default.getAppContainer;
|
|
246
|
+
getEnv = getenv_1.default.getEnv;
|
|
247
|
+
installApp = install_1.default.installApp;
|
|
248
|
+
getScreenshot = io_1.default.getScreenshot;
|
|
249
|
+
addRootCertificate = keychain_1.default.addRootCertificate;
|
|
250
|
+
addCertificate = keychain_1.default.addCertificate;
|
|
251
|
+
resetKeychain = keychain_1.default.resetKeychain;
|
|
252
|
+
launchApp = launch_1.default.launchApp;
|
|
253
|
+
getDevicesByParsing = list_1.default.getDevicesByParsing;
|
|
254
|
+
getDevices = list_1.default.getDevices;
|
|
255
|
+
getRuntimeForPlatformVersionViaJson = list_1.default.getRuntimeForPlatformVersionViaJson;
|
|
256
|
+
getRuntimeForPlatformVersion = list_1.default.getRuntimeForPlatformVersion;
|
|
257
|
+
getDeviceTypes = list_1.default.getDeviceTypes;
|
|
258
|
+
list = list_1.default.list;
|
|
259
|
+
setLocation = location_1.default.setLocation;
|
|
260
|
+
clearLocation = location_1.default.clearLocation;
|
|
261
|
+
openUrl = openurl_1.default.openUrl;
|
|
262
|
+
setPasteboard = pbcopy_1.default.setPasteboard;
|
|
263
|
+
getPasteboard = pbpaste_1.default.getPasteboard;
|
|
264
|
+
grantPermission = privacy_1.default.grantPermission;
|
|
265
|
+
revokePermission = privacy_1.default.revokePermission;
|
|
266
|
+
resetPermission = privacy_1.default.resetPermission;
|
|
267
|
+
pushNotification = push_1.default.pushNotification;
|
|
268
|
+
shutdownDevice = shutdown_1.default.shutdownDevice;
|
|
269
|
+
spawnProcess = spawn_1.default.spawnProcess;
|
|
270
|
+
spawnSubProcess = spawn_1.default.spawnSubProcess;
|
|
271
|
+
terminateApp = terminate_1.default.terminateApp;
|
|
272
|
+
getAppearance = ui_1.default.getAppearance;
|
|
273
|
+
setAppearance = ui_1.default.setAppearance;
|
|
274
|
+
getIncreaseContrast = ui_1.default.getIncreaseContrast;
|
|
275
|
+
setIncreaseContrast = ui_1.default.setIncreaseContrast;
|
|
276
|
+
getContentSize = ui_1.default.getContentSize;
|
|
277
|
+
setContentSize = ui_1.default.setContentSize;
|
|
278
|
+
removeApp = uninstall_1.default.removeApp;
|
|
273
279
|
}
|
|
274
280
|
exports.Simctl = Simctl;
|
|
275
281
|
exports.default = Simctl;
|
package/build/lib/simctl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../../lib/simctl.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AACvB,kDAA0B;AAC1B,mDAA2C;AAC3C,uCAEmB;AACnB,+CAA0D;AAC1D,sEAAsD;AACtD,oEAAoD;AACpD,8DAA8C;AAC9C,0EAA0D;AAC1D,kEAAkD;AAClD,kEAAkD;AAClD,gEAAgD;AAChD,wFAAsE;AACtE,oEAAoD;AACpD,0DAA0C;AAC1C,sEAAsD;AACtD,kEAAkD;AAClD,8DAA8C;AAC9C,oEAAoD;AACpD,kEAAkD;AAClD,oEAAoD;AACpD,oEAAoD;AACpD,8DAA8C;AAC9C,kEAA+C;AAC/C,sEAAsD;AACtD,gEAAgD;AAChD,wEAAwD;AACxD,0DAA0C;AAC1C,wEAAwD;AACxD,sEAAsD;AAEtD,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;KACX;IACD,WAAW,EAAE,8BAAoB;IACjC,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;GAGG;AAEH;;GAEG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAGH,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../../lib/simctl.js"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const rimraf_1 = require("rimraf");
|
|
7
|
-
const uuid_1 = require("uuid");
|
|
8
7
|
const path_1 = __importDefault(require("path"));
|
|
9
8
|
const os_1 = __importDefault(require("os"));
|
|
10
9
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
|
+
const helpers_1 = require("../helpers");
|
|
11
11
|
const commands = {};
|
|
12
12
|
/**
|
|
13
13
|
* Gets base64 screenshot for device
|
|
@@ -22,7 +22,7 @@ const commands = {};
|
|
|
22
22
|
*/
|
|
23
23
|
commands.getScreenshot = async function getScreenshot() {
|
|
24
24
|
const udid = this.requireUdid('io screenshot');
|
|
25
|
-
const pathToScreenshotPng = path_1.default.resolve(os_1.default.tmpdir(), `${(0,
|
|
25
|
+
const pathToScreenshotPng = path_1.default.resolve(os_1.default.tmpdir(), `${await (0, helpers_1.uuidV4)()}.png`);
|
|
26
26
|
try {
|
|
27
27
|
await this.exec('io', {
|
|
28
28
|
args: [udid, 'screenshot', pathToScreenshotPng],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../lib/subcommands/io.js"],"names":[],"mappings":";;;;;AAAA,mCAAgC;AAChC
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../lib/subcommands/io.js"],"names":[],"mappings":";;;;;AAAA,mCAAgC;AAChC,gDAAwB;AACxB,4CAAoB;AACpB,2DAA6B;AAC7B,wCAAoC;AAEpC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;;;;;;;;GAUG;AACH,QAAQ,CAAC,aAAa,GAAG,KAAK,UAAU,aAAa;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,IAAA,gBAAM,GAAE,MAAM,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACpB,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,mBAAmB,CAAC;SAChD,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,eAAM,EAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const os_1 = __importDefault(require("os"));
|
|
7
7
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
-
const
|
|
8
|
+
const helpers_1 = require("../helpers");
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
11
|
const rimraf_1 = require("rimraf");
|
|
@@ -16,7 +16,7 @@ const commands = {};
|
|
|
16
16
|
* @param {(filePath: string) => Promise<any>} onPayloadStored
|
|
17
17
|
*/
|
|
18
18
|
async function handleRawPayload(payload, onPayloadStored) {
|
|
19
|
-
const filePath = path_1.default.resolve(os_1.default.tmpdir(), `${(0,
|
|
19
|
+
const filePath = path_1.default.resolve(os_1.default.tmpdir(), `${await (0, helpers_1.uuidV4)()}.pem`);
|
|
20
20
|
try {
|
|
21
21
|
if (lodash_1.default.isBuffer(payload)) {
|
|
22
22
|
await promises_1.default.writeFile(filePath, payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../lib/subcommands/keychain.js"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,2DAA6B;AAC7B
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../lib/subcommands/keychain.js"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,2DAA6B;AAC7B,wCAAoC;AACpC,gDAAwB;AACxB,oDAAuB;AACvB,mCAAgC;AAEhC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAE,OAAO,EAAE,eAAe;IACvD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,IAAA,gBAAM,GAAE,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,IAAI,gBAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAGD;;;;;GAKG;AAEH;;;;;;;;;;;;GAYG;AACH,QAAQ,CAAC,kBAAkB,GAAG,KAAK,UAAU,kBAAkB,CAAE,IAAI,EAAE,IAAI,GAAG,EAAE;IAC9E,MAAM,EACJ,GAAG,GAAG,KAAK,GACZ,GAAG,IAAI,CAAC;IACT,MAAM,UAAU,GAAG,KAAK,EAAE,qBAAqB,CAAA,QAAQ,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACtF,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC;KAC9E,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,QAAQ,CAAC,cAAc,GAAG,KAAK,UAAU,cAAc,CAAE,IAAI,EAAE,IAAI,GAAG,EAAE;IACtE,MAAM,EACJ,GAAG,GAAG,KAAK,GACZ,GAAG,IAAI,CAAC;IACT,MAAM,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACjE,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC;KACpE,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAQ,CAAC,aAAa,GAAG,KAAK,UAAU,aAAa;IACnD,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QAC1B,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KACpD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const rimraf_1 = require("rimraf");
|
|
7
|
-
const
|
|
7
|
+
const helpers_1 = require("../helpers");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
10
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
@@ -31,7 +31,7 @@ const commands = {};
|
|
|
31
31
|
* @throws {Error} If the `udid` instance property is unset
|
|
32
32
|
*/
|
|
33
33
|
commands.pushNotification = async function pushNotification(payload) {
|
|
34
|
-
const dstPath = path_1.default.resolve(os_1.default.tmpdir(), `${(0,
|
|
34
|
+
const dstPath = path_1.default.resolve(os_1.default.tmpdir(), `${await (0, helpers_1.uuidV4)()}.json`);
|
|
35
35
|
try {
|
|
36
36
|
await promises_1.default.writeFile(dstPath, JSON.stringify(payload), 'utf8');
|
|
37
37
|
await this.exec('push', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../lib/subcommands/push.js"],"names":[],"mappings":";;;;;AAAA,mCAAgC;AAChC
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../lib/subcommands/push.js"],"names":[],"mappings":";;;;;AAAA,mCAAgC;AAChC,wCAAoC;AACpC,gDAAwB;AACxB,4CAAoB;AACpB,2DAA6B;AAE7B,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAQ,CAAC,gBAAgB,GAAG,KAAK,UAAU,gBAAgB,CAAE,OAAO;IAClE,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,IAAA,gBAAM,GAAE,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
package/lib/helpers.js
CHANGED
|
@@ -25,3 +25,13 @@ export function normalizeVersion (version) {
|
|
|
25
25
|
export function getXcrunBinary () {
|
|
26
26
|
return process.env.XCRUN_BINARY || 'xcrun';
|
|
27
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Generate a UUID v4
|
|
31
|
+
*
|
|
32
|
+
* @returns {Promise<string>}
|
|
33
|
+
*/
|
|
34
|
+
export async function uuidV4 () {
|
|
35
|
+
const uuidLib = await import('uuid');
|
|
36
|
+
return uuidLib.v4();
|
|
37
|
+
}
|
package/lib/subcommands/io.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { rimraf } from 'rimraf';
|
|
2
|
-
import { v4 as uuidV4 } from 'uuid';
|
|
3
2
|
import path from 'path';
|
|
4
3
|
import os from 'os';
|
|
5
4
|
import fs from 'fs/promises';
|
|
5
|
+
import { uuidV4 } from '../helpers';
|
|
6
6
|
|
|
7
7
|
const commands = {};
|
|
8
8
|
|
|
@@ -19,7 +19,7 @@ const commands = {};
|
|
|
19
19
|
*/
|
|
20
20
|
commands.getScreenshot = async function getScreenshot () {
|
|
21
21
|
const udid = this.requireUdid('io screenshot');
|
|
22
|
-
const pathToScreenshotPng = path.resolve(os.tmpdir(), `${uuidV4()}.png`);
|
|
22
|
+
const pathToScreenshotPng = path.resolve(os.tmpdir(), `${await uuidV4()}.png`);
|
|
23
23
|
try {
|
|
24
24
|
await this.exec('io', {
|
|
25
25
|
args: [udid, 'screenshot', pathToScreenshotPng],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
|
-
import {
|
|
3
|
+
import { uuidV4 } from '../helpers';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import _ from 'lodash';
|
|
6
6
|
import { rimraf } from 'rimraf';
|
|
@@ -13,7 +13,7 @@ const commands = {};
|
|
|
13
13
|
* @param {(filePath: string) => Promise<any>} onPayloadStored
|
|
14
14
|
*/
|
|
15
15
|
async function handleRawPayload (payload, onPayloadStored) {
|
|
16
|
-
const filePath = path.resolve(os.tmpdir(), `${uuidV4()}.pem`);
|
|
16
|
+
const filePath = path.resolve(os.tmpdir(), `${await uuidV4()}.pem`);
|
|
17
17
|
try {
|
|
18
18
|
if (_.isBuffer(payload)) {
|
|
19
19
|
await fs.writeFile(filePath, payload);
|
package/lib/subcommands/push.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { rimraf } from 'rimraf';
|
|
2
|
-
import {
|
|
2
|
+
import { uuidV4 } from '../helpers';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import fs from 'fs/promises';
|
|
@@ -28,7 +28,7 @@ const commands = {};
|
|
|
28
28
|
* @throws {Error} If the `udid` instance property is unset
|
|
29
29
|
*/
|
|
30
30
|
commands.pushNotification = async function pushNotification (payload) {
|
|
31
|
-
const dstPath = path.resolve(os.tmpdir(), `${uuidV4()}.json`);
|
|
31
|
+
const dstPath = path.resolve(os.tmpdir(), `${await uuidV4()}.json`);
|
|
32
32
|
try {
|
|
33
33
|
await fs.writeFile(dstPath, JSON.stringify(payload), 'utf8');
|
|
34
34
|
await this.exec('push', {
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"ios",
|
|
7
7
|
"simctl"
|
|
8
8
|
],
|
|
9
|
-
"version": "8.0.
|
|
9
|
+
"version": "8.0.5",
|
|
10
10
|
"author": "Appium Contributors",
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"repository": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"semver": "^7.0.0",
|
|
42
42
|
"source-map-support": "^0.x",
|
|
43
43
|
"teen_process": "^3.0.0",
|
|
44
|
-
"uuid": "^
|
|
44
|
+
"uuid": "^13.0.0",
|
|
45
45
|
"which": "^5.0.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"mocha": "^11.0.1",
|
|
79
79
|
"prettier": "^3.0.0",
|
|
80
80
|
"proxyquire": "^2.1.3",
|
|
81
|
-
"semantic-release": "^
|
|
81
|
+
"semantic-release": "^25.0.0",
|
|
82
82
|
"sinon": "^21.0.0",
|
|
83
83
|
"ts-node": "^10.9.1",
|
|
84
84
|
"typescript": "^5.4.3"
|