UNPKG

@expo/cli

Version:
99 lines (98 loc) 3.46 kB
/** * Copyright (c) 2021 Expo, Inc. * Copyright (c) 2018 Drifty Co. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { LOCKDOWN_HEADER_SIZE: ()=>LOCKDOWN_HEADER_SIZE, isLockdownResponse: ()=>isLockdownResponse, isLockdownErrorResponse: ()=>isLockdownErrorResponse, LockdownProtocolClient: ()=>LockdownProtocolClient, LockdownProtocolReader: ()=>LockdownProtocolReader, LockdownProtocolWriter: ()=>LockdownProtocolWriter }); function _plist() { const data = /*#__PURE__*/ _interopRequireDefault(require("@expo/plist")); _plist = function() { return data; }; return data; } function _debug() { const data = /*#__PURE__*/ _interopRequireDefault(require("debug")); _debug = function() { return data; }; return data; } const _abstractProtocol = require("./AbstractProtocol"); const _errors = require("../../../../utils/errors"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const debug = (0, _debug().default)("expo:apple-device:protocol:lockdown"); const LOCKDOWN_HEADER_SIZE = 4; function isDefined(val) { return typeof val !== "undefined"; } function isLockdownResponse(resp) { return isDefined(resp.Status); } function isLockdownErrorResponse(resp) { return isDefined(resp.Error); } class LockdownProtocolClient extends _abstractProtocol.ProtocolClient { constructor(socket){ super(socket, new _abstractProtocol.ProtocolReaderFactory(LockdownProtocolReader), new LockdownProtocolWriter()); } } class LockdownProtocolReader extends _abstractProtocol.PlistProtocolReader { constructor(callback){ super(LOCKDOWN_HEADER_SIZE, callback); } parseHeader(data) { return data.readUInt32BE(0); } parseBody(data) { const resp = super.parseBody(data); debug(`Response: ${JSON.stringify(resp)}`); if (isLockdownErrorResponse(resp)) { if (resp.Error === "DeviceLocked") { throw new _errors.CommandError("APPLE_DEVICE_LOCKED", "Device is currently locked."); } if (resp.Error === "InvalidService") { let errorMessage = `${resp.Error}: ${resp.Service} (request: ${resp.Request})`; if (resp.Service === "com.apple.debugserver") { errorMessage += "\nTry reconnecting your device. You can also debug service logs with `export DEBUG=expo:xdl:ios:*`"; } throw new _errors.CommandError("APPLE_DEVICE_LOCKDOWN", errorMessage); } throw new _errors.CommandError("APPLE_DEVICE_LOCKDOWN", resp.Error); } return resp; } } class LockdownProtocolWriter { write(socket, plistData) { debug(`socket write: ${JSON.stringify(plistData)}`); const plistMessage = _plist().default.build(plistData); const header = Buffer.alloc(LOCKDOWN_HEADER_SIZE); header.writeUInt32BE(plistMessage.length, 0); socket.write(header); socket.write(plistMessage); } } //# sourceMappingURL=LockdownProtocol.js.map