nativescript
Version:
Command-line interface for building NativeScript projects
97 lines • 4.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.IOSSimulatorDiscovery = void 0;
const device_discovery_1 = require("./device-discovery");
const ios_simulator_device_1 = require("./../ios/simulator/ios-simulator-device");
const constants_1 = require("../../constants");
const yok_1 = require("../../yok");
const _ = require("lodash");
class IOSSimulatorDiscovery extends device_discovery_1.DeviceDiscovery {
constructor($injector, $iOSSimResolver, $mobileHelper, $hostInfo, $iOSEmulatorServices) {
super();
this.$injector = $injector;
this.$iOSSimResolver = $iOSSimResolver;
this.$mobileHelper = $mobileHelper;
this.$hostInfo = $hostInfo;
this.$iOSEmulatorServices = $iOSEmulatorServices;
this.cachedSimulators = [];
this.availableSimulators = {};
}
async startLookingForDevices(options) {
if (options &&
options.platform &&
!this.$mobileHelper.isiOSPlatform(options.platform)) {
return;
}
return this.checkForDevices();
}
async checkForDevices() {
if (this.$hostInfo.isDarwin) {
const currentSimulators = await this.$iOSSimResolver.iOSSim.getRunningSimulators();
// Remove old simulators
_(this.cachedSimulators)
.reject((s) => _.some(currentSimulators, (simulator) => simulator &&
s &&
simulator.id === s.id &&
simulator.state === s.state))
.each((s) => this.deleteAndRemoveDevice(s));
// Add new simulators
_(currentSimulators)
.reject((s) => _.some(this.cachedSimulators, (simulator) => simulator &&
s &&
simulator.id === s.id &&
simulator.state === s.state))
.each((s) => this.createAndAddDevice(s));
}
}
async checkForAvailableSimulators() {
if (!this.$hostInfo.isDarwin) {
return [];
}
const simulators = (await this.$iOSEmulatorServices.getEmulatorImages())
.devices;
const currentSimulators = _.values(this.availableSimulators);
const lostSimulators = [];
const foundSimulators = [];
for (const simulator of currentSimulators) {
if (!_.find(this.availableSimulators, (s) => s.imageIdentifier === simulator.imageIdentifier)) {
lostSimulators.push(simulator);
}
}
for (const simulator of simulators) {
if (!this.availableSimulators[simulator.imageIdentifier]) {
foundSimulators.push(simulator);
}
}
if (lostSimulators.length) {
this.raiseOnEmulatorImagesLost(lostSimulators);
}
if (foundSimulators.length) {
this.raiseOnEmulatorImagesFound(foundSimulators);
}
return simulators;
}
createAndAddDevice(simulator) {
this.cachedSimulators.push(_.cloneDeep(simulator));
this.addDevice(this.$injector.resolve(ios_simulator_device_1.IOSSimulator, { simulator: simulator }));
}
deleteAndRemoveDevice(simulator) {
_.remove(this.cachedSimulators, (s) => s && s.id === simulator.id);
this.removeDevice(simulator.id);
}
raiseOnEmulatorImagesFound(simulators) {
_.forEach(simulators, (simulator) => {
this.availableSimulators[simulator.imageIdentifier] = simulator;
this.emit(constants_1.EmulatorDiscoveryNames.EMULATOR_IMAGE_FOUND, simulator);
});
}
raiseOnEmulatorImagesLost(simulators) {
_.forEach(simulators, (simulator) => {
delete this.availableSimulators[simulator.imageIdentifier];
this.emit(constants_1.EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST, simulator);
});
}
}
exports.IOSSimulatorDiscovery = IOSSimulatorDiscovery;
yok_1.injector.register("iOSSimulatorDiscovery", IOSSimulatorDiscovery);
//# sourceMappingURL=ios-simulator-discovery.js.map
;