@expo/cli 0.1.1 → 0.1.4

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 (108) hide show
  1. package/build/bin/cli +8 -2
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/export/index.js +1 -0
  4. package/build/src/export/index.js.map +1 -1
  5. package/build/src/run/android/runAndroidAsync.js +3 -3
  6. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  7. package/build/src/run/ensureNativeProject.js +3 -0
  8. package/build/src/run/ensureNativeProject.js.map +1 -1
  9. package/build/src/run/hints.js +1 -1
  10. package/build/src/run/hints.js.map +1 -1
  11. package/build/src/run/ios/XcodeBuild.js +275 -0
  12. package/build/src/run/ios/XcodeBuild.js.map +1 -0
  13. package/build/src/run/ios/XcodeBuild.types.js +6 -0
  14. package/build/src/run/ios/XcodeBuild.types.js.map +1 -0
  15. package/build/src/run/ios/appleDevice/AppleDevice.js +161 -0
  16. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -0
  17. package/build/src/run/ios/appleDevice/ClientManager.js +161 -0
  18. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -0
  19. package/build/src/run/ios/appleDevice/client/AFCClient.js +195 -0
  20. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -0
  21. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +107 -0
  22. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -0
  23. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +97 -0
  24. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -0
  25. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +140 -0
  26. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -0
  27. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +91 -0
  28. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -0
  29. package/build/src/run/ios/appleDevice/client/ServiceClient.js +21 -0
  30. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -0
  31. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +117 -0
  32. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -0
  33. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +90 -0
  34. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -0
  35. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +332 -0
  36. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -0
  37. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +115 -0
  38. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -0
  39. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +126 -0
  40. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -0
  41. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +74 -0
  42. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -0
  43. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +65 -0
  44. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -0
  45. package/build/src/run/ios/codeSigning/Security.js +85 -0
  46. package/build/src/run/ios/codeSigning/Security.js.map +1 -0
  47. package/build/src/run/ios/codeSigning/configureCodeSigning.js +77 -0
  48. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -0
  49. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +102 -0
  50. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -0
  51. package/build/src/run/ios/codeSigning/settings.js +21 -0
  52. package/build/src/run/ios/codeSigning/settings.js.map +1 -0
  53. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +76 -0
  54. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -0
  55. package/build/src/run/ios/index.js +98 -0
  56. package/build/src/run/ios/index.js.map +1 -0
  57. package/build/src/run/ios/launchApp.js +75 -0
  58. package/build/src/run/ios/launchApp.js.map +1 -0
  59. package/build/src/run/ios/options/promptDevice.js +50 -0
  60. package/build/src/run/ios/options/promptDevice.js.map +1 -0
  61. package/build/src/run/ios/options/resolveDevice.js +92 -0
  62. package/build/src/run/ios/options/resolveDevice.js.map +1 -0
  63. package/build/src/run/ios/options/resolveNativeScheme.js +92 -0
  64. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -0
  65. package/build/src/run/ios/options/resolveOptions.js +44 -0
  66. package/build/src/run/ios/options/resolveOptions.js.map +1 -0
  67. package/build/src/run/ios/options/resolveXcodeProject.js +39 -0
  68. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -0
  69. package/build/src/run/ios/runIosAsync.js +85 -0
  70. package/build/src/run/ios/runIosAsync.js.map +1 -0
  71. package/build/src/run/resolveBundlerProps.js +9 -6
  72. package/build/src/run/resolveBundlerProps.js.map +1 -1
  73. package/build/src/run/startBundler.js +4 -2
  74. package/build/src/run/startBundler.js.map +1 -1
  75. package/build/src/start/doctor/Prerequisite.js +4 -4
  76. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  77. package/build/src/start/doctor/SecurityBinPrerequisite.js +27 -0
  78. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -0
  79. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +69 -0
  80. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -0
  81. package/build/src/start/platforms/android/emulator.js +8 -0
  82. package/build/src/start/platforms/android/emulator.js.map +1 -1
  83. package/build/src/start/platforms/android/promptAndroidDevice.js +1 -5
  84. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  85. package/build/src/start/platforms/ios/AppleDeviceManager.js +5 -1
  86. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  87. package/build/src/start/platforms/ios/promptAppleDevice.js +1 -5
  88. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  89. package/build/src/start/platforms/ios/simctl.js +14 -0
  90. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  91. package/build/src/start/platforms/ios/simctlLogging.js +220 -0
  92. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -0
  93. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +1 -1
  94. package/build/src/utils/analytics/rudderstackClient.js +30 -3
  95. package/build/src/utils/analytics/rudderstackClient.js.map +1 -1
  96. package/build/src/utils/cocoapods.js +47 -0
  97. package/build/src/utils/cocoapods.js.map +1 -1
  98. package/build/src/utils/dir.js +6 -1
  99. package/build/src/utils/dir.js.map +1 -1
  100. package/build/src/utils/plist.js +59 -0
  101. package/build/src/utils/plist.js.map +1 -0
  102. package/build/src/utils/prompts.js +16 -0
  103. package/build/src/utils/prompts.js.map +1 -1
  104. package/build/src/utils/resolveArgs.js +4 -1
  105. package/build/src/utils/resolveArgs.js.map +1 -1
  106. package/build/src/utils/terminal.js +10 -0
  107. package/build/src/utils/terminal.js.map +1 -0
  108. package/package.json +9 -8
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/UsbmuxdClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport plist from '@expo/plist';\nimport Debug from 'debug';\nimport { Socket, connect } from 'net';\n\nimport { CommandError } from '../../../../utils/errors';\nimport { parsePlistBuffer } from '../../../../utils/plist';\nimport { UsbmuxProtocolClient } from '../protocol/UsbmuxProtocol';\nimport { ResponseError, ServiceClient } from './ServiceClient';\n\nconst debug = Debug('expo:apple-device:client:usbmuxd');\n\nexport interface UsbmuxdDeviceProperties {\n /** 480000000 */\n ConnectionSpeed: number;\n /** 'USB' */\n ConnectionType: 'USB';\n /** 7 */\n DeviceID: number;\n /** 339738624 */\n LocationID: number;\n /** 4776 */\n ProductID: number;\n /** '00008101-001964A22629003A' */\n SerialNumber: string;\n /** '00008101-001964A22629003A' */\n UDID: string;\n /** '00008101001964A22629003A' */\n USBSerialNumber: string;\n}\n\nexport interface UsbmuxdDevice {\n /** 7 */\n DeviceID: number;\n MessageType: 'Attached'; // TODO: what else?\n Properties: UsbmuxdDeviceProperties;\n}\n\nexport interface UsbmuxdConnectResponse {\n MessageType: 'Result';\n Number: number;\n}\n\nexport interface UsbmuxdDeviceResponse {\n DeviceList: UsbmuxdDevice[];\n}\n\nexport interface UsbmuxdPairRecordResponse {\n PairRecordData: Buffer;\n}\n\nexport interface UsbmuxdPairRecord {\n DeviceCertificate: Buffer;\n EscrowBag: Buffer;\n HostCertificate: Buffer;\n HostID: string;\n HostPrivateKey: Buffer;\n RootCertificate: Buffer;\n RootPrivateKey: Buffer;\n SystemBUID: string;\n WiFiMACAddress: string;\n}\n\nfunction isUsbmuxdConnectResponse(resp: any): resp is UsbmuxdConnectResponse {\n return resp.MessageType === 'Result' && resp.Number !== undefined;\n}\n\nfunction isUsbmuxdDeviceResponse(resp: any): resp is UsbmuxdDeviceResponse {\n return resp.DeviceList !== undefined;\n}\n\nfunction isUsbmuxdPairRecordResponse(resp: any): resp is UsbmuxdPairRecordResponse {\n return resp.PairRecordData !== undefined;\n}\n\nexport class UsbmuxdClient extends ServiceClient<UsbmuxProtocolClient> {\n constructor(public socket: Socket) {\n super(socket, new UsbmuxProtocolClient(socket));\n }\n\n static connectUsbmuxdSocket(): Socket {\n debug('connectUsbmuxdSocket');\n if (process.platform === 'win32') {\n return connect({ port: 27015, host: 'localhost' });\n } else {\n return connect({ path: '/var/run/usbmuxd' });\n }\n }\n\n async connect(device: Pick<UsbmuxdDevice, 'DeviceID'>, port: number): Promise<Socket> {\n debug(`connect: ${device.DeviceID} on port ${port}`);\n debug(`connect:device: %O`, device);\n\n const response = await this.protocolClient.sendMessage({\n messageType: 'Connect',\n extraFields: {\n DeviceID: device.DeviceID,\n PortNumber: htons(port),\n },\n });\n debug(`connect:device:response: %O`, response);\n\n if (isUsbmuxdConnectResponse(response) && response.Number === 0) {\n return this.protocolClient.socket;\n } else {\n throw new ResponseError(\n `There was an error connecting to the USB connected device (id: ${device.DeviceID}, port: ${port})`,\n response\n );\n }\n }\n\n async getDevices(): Promise<UsbmuxdDevice[]> {\n debug('getDevices');\n\n const resp = await this.protocolClient.sendMessage({\n messageType: 'ListDevices',\n });\n\n if (isUsbmuxdDeviceResponse(resp)) {\n return resp.DeviceList;\n } else {\n throw new ResponseError('Invalid response from getDevices', resp);\n }\n }\n\n async getDevice(udid?: string): Promise<UsbmuxdDevice> {\n debug(`getDevice ${udid ? 'udid: ' + udid : ''}`);\n const devices = await this.getDevices();\n\n if (!devices.length) {\n throw new CommandError('APPLE_DEVICE_USBMUXD', 'No devices found');\n }\n\n if (!udid) {\n return devices[0];\n }\n\n for (const device of devices) {\n if (device.Properties && device.Properties.SerialNumber === udid) {\n return device;\n }\n }\n\n throw new CommandError('APPLE_DEVICE_USBMUXD', `No device found (udid: ${udid})`);\n }\n\n async readPairRecord(udid: string): Promise<UsbmuxdPairRecord> {\n debug(`readPairRecord: ${udid}`);\n\n const resp = await this.protocolClient.sendMessage({\n messageType: 'ReadPairRecord',\n extraFields: { PairRecordID: udid },\n });\n\n if (isUsbmuxdPairRecordResponse(resp)) {\n // the pair record can be created as a binary plist\n const BPLIST_MAGIC = Buffer.from('bplist00');\n if (BPLIST_MAGIC.compare(resp.PairRecordData, 0, 8) === 0) {\n debug('Binary plist pair record detected.');\n return parsePlistBuffer(resp.PairRecordData)[0];\n } else {\n // TODO: use parsePlistBuffer\n return plist.parse(resp.PairRecordData.toString()) as any; // TODO: type guard\n }\n } else {\n throw new ResponseError(\n `There was an error reading pair record for device (udid: ${udid})`,\n resp\n );\n }\n }\n}\n\nfunction htons(n: number): number {\n return ((n & 0xff) << 8) | ((n >> 8) & 0xff);\n}\n"],"names":["debug","Debug","isUsbmuxdConnectResponse","resp","MessageType","Number","undefined","isUsbmuxdDeviceResponse","DeviceList","isUsbmuxdPairRecordResponse","PairRecordData","UsbmuxdClient","ServiceClient","constructor","socket","UsbmuxProtocolClient","connectUsbmuxdSocket","process","platform","connect","port","host","path","device","DeviceID","response","protocolClient","sendMessage","messageType","extraFields","PortNumber","htons","ResponseError","getDevices","getDevice","udid","devices","length","CommandError","Properties","SerialNumber","readPairRecord","PairRecordID","BPLIST_MAGIC","Buffer","from","compare","parsePlistBuffer","plist","parse","toString","n"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getAppDeltaDirectory = getAppDeltaDirectory;
6
+ exports.installOnDeviceAsync = installOnDeviceAsync;
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _os = _interopRequireDefault(require("os"));
9
+ var _path = _interopRequireDefault(require("path"));
10
+ var _dir = require("../../../utils/dir");
11
+ var _env = require("../../../utils/env");
12
+ var _errors = require("../../../utils/errors");
13
+ var _ora = require("../../../utils/ora");
14
+ var _prompts = require("../../../utils/prompts");
15
+ var AppleDevice = _interopRequireWildcard(require("./AppleDevice"));
16
+ function _interopRequireDefault(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function _interopRequireWildcard(obj) {
22
+ if (obj && obj.__esModule) {
23
+ return obj;
24
+ } else {
25
+ var newObj = {};
26
+ if (obj != null) {
27
+ for(var key in obj){
28
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
29
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
30
+ if (desc.get || desc.set) {
31
+ Object.defineProperty(newObj, key, desc);
32
+ } else {
33
+ newObj[key] = obj[key];
34
+ }
35
+ }
36
+ }
37
+ }
38
+ newObj.default = obj;
39
+ return newObj;
40
+ }
41
+ }
42
+ function getAppDeltaDirectory(bundleId) {
43
+ // TODO: Maybe use .expo folder instead for debugging
44
+ // TODO: Reuse existing folder from xcode?
45
+ const deltaFolder = _path.default.join(_os.default.tmpdir(), "ios", "app-delta", bundleId);
46
+ (0, _dir).ensureDirectory(deltaFolder);
47
+ return deltaFolder;
48
+ }
49
+ async function installOnDeviceAsync(props) {
50
+ const { bundle , bundleIdentifier , appDeltaDirectory , udid , deviceName } = props;
51
+ let indicator;
52
+ try {
53
+ // TODO: Connect for logs
54
+ await AppleDevice.runOnDevice({
55
+ udid,
56
+ appPath: bundle,
57
+ bundleId: bundleIdentifier,
58
+ waitForApp: false,
59
+ deltaPath: appDeltaDirectory,
60
+ onProgress ({ status , isComplete , progress }) {
61
+ if (!indicator) {
62
+ indicator = (0, _ora).ora(status).start();
63
+ }
64
+ indicator.text = `${_chalk.default.bold(status)} ${progress}%`;
65
+ if (isComplete) {
66
+ indicator.succeed();
67
+ }
68
+ }
69
+ });
70
+ } catch (error) {
71
+ if (indicator) {
72
+ indicator.fail();
73
+ }
74
+ if (error.code === "APPLE_DEVICE_LOCKED") {
75
+ var ref;
76
+ // Get the app name from the binary path.
77
+ const appName = (ref = _path.default.basename(bundle).split(".")[0]) != null ? ref : "app";
78
+ if (!_env.env.CI && await (0, _prompts).confirmAsync({
79
+ message: `Cannot launch ${appName} because the device is locked. Unlock ${deviceName} to continue...`,
80
+ initial: true
81
+ })) {
82
+ return installOnDeviceAsync(props);
83
+ }
84
+ throw new _errors.CommandError(`Cannot launch ${appName} on ${deviceName} because the device is locked.`);
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+
90
+ //# sourceMappingURL=installOnDeviceAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/run/ios/appleDevice/installOnDeviceAsync.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Ora } from 'ora';\nimport os from 'os';\nimport path from 'path';\n\nimport { ensureDirectory } from '../../../utils/dir';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { ora } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\nimport * as AppleDevice from './AppleDevice';\n\n/** Get the app_delta folder for faster subsequent rebuilds on devices. */\nexport function getAppDeltaDirectory(bundleId: string): string {\n // TODO: Maybe use .expo folder instead for debugging\n // TODO: Reuse existing folder from xcode?\n const deltaFolder = path.join(os.tmpdir(), 'ios', 'app-delta', bundleId);\n ensureDirectory(deltaFolder);\n return deltaFolder;\n}\n\n/**\n * Wraps the apple device method for installing and running an app,\n * adds indicator and retry loop for when the device is locked.\n */\nexport async function installOnDeviceAsync(props: {\n bundle: string;\n bundleIdentifier: string;\n appDeltaDirectory: string;\n udid: string;\n deviceName: string;\n}): Promise<void> {\n const { bundle, bundleIdentifier, appDeltaDirectory, udid, deviceName } = props;\n let indicator: Ora | undefined;\n\n try {\n // TODO: Connect for logs\n await AppleDevice.runOnDevice({\n udid,\n appPath: bundle,\n bundleId: bundleIdentifier,\n waitForApp: false,\n deltaPath: appDeltaDirectory,\n onProgress({\n status,\n isComplete,\n progress,\n }: {\n status: string;\n isComplete: boolean;\n progress: number;\n }) {\n if (!indicator) {\n indicator = ora(status).start();\n }\n indicator.text = `${chalk.bold(status)} ${progress}%`;\n if (isComplete) {\n indicator.succeed();\n }\n },\n });\n } catch (error: any) {\n if (indicator) {\n indicator.fail();\n }\n if (error.code === 'APPLE_DEVICE_LOCKED') {\n // Get the app name from the binary path.\n const appName = path.basename(bundle).split('.')[0] ?? 'app';\n if (\n !env.CI &&\n (await confirmAsync({\n message: `Cannot launch ${appName} because the device is locked. Unlock ${deviceName} to continue...`,\n initial: true,\n }))\n ) {\n return installOnDeviceAsync(props);\n }\n throw new CommandError(\n `Cannot launch ${appName} on ${deviceName} because the device is locked.`\n );\n }\n throw error;\n }\n}\n"],"names":["getAppDeltaDirectory","installOnDeviceAsync","AppleDevice","bundleId","deltaFolder","path","join","os","tmpdir","ensureDirectory","props","bundle","bundleIdentifier","appDeltaDirectory","udid","deviceName","indicator","runOnDevice","appPath","waitForApp","deltaPath","onProgress","status","isComplete","progress","ora","start","text","chalk","bold","succeed","error","fail","code","appName","basename","split","env","CI","confirmAsync","message","initial","CommandError"],"mappings":"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"}
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.AFC_FILE_OPEN_FLAGS = exports.AFC_STATUS = exports.AFC_OPS = exports.AFC_HEADER_SIZE = exports.AFC_MAGIC = void 0;
6
+ var _debug = _interopRequireDefault(require("debug"));
7
+ var _errors = require("../../../../utils/errors");
8
+ var _abstractProtocol = require("./AbstractProtocol");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ default: obj
12
+ };
13
+ }
14
+ const debug = (0, _debug).default("expo:apple-device:protocol:afc");
15
+ const AFC_MAGIC = "CFA6LPAA";
16
+ exports.AFC_MAGIC = AFC_MAGIC;
17
+ const AFC_HEADER_SIZE = 40;
18
+ exports.AFC_HEADER_SIZE = AFC_HEADER_SIZE;
19
+ var AFC_OPS;
20
+ exports.AFC_OPS = AFC_OPS;
21
+ (function(AFC_OPS) {
22
+ AFC_OPS[AFC_OPS[/**
23
+ * Invalid
24
+ */ "INVALID"] = 0] = "INVALID";
25
+ AFC_OPS[AFC_OPS[/**
26
+ * Status
27
+ */ "STATUS"] = 1] = "STATUS";
28
+ AFC_OPS[AFC_OPS[/**
29
+ * Data
30
+ */ "DATA"] = 2] = "DATA";
31
+ AFC_OPS[AFC_OPS[/**
32
+ * ReadDir
33
+ */ "READ_DIR"] = 3] = "READ_DIR";
34
+ AFC_OPS[AFC_OPS[/**
35
+ * ReadFile
36
+ */ "READ_FILE"] = 4] = "READ_FILE";
37
+ AFC_OPS[AFC_OPS[/**
38
+ * WriteFile
39
+ */ "WRITE_FILE"] = 5] = "WRITE_FILE";
40
+ AFC_OPS[AFC_OPS[/**
41
+ * WritePart
42
+ */ "WRITE_PART"] = 6] = "WRITE_PART";
43
+ AFC_OPS[AFC_OPS[/**
44
+ * TruncateFile
45
+ */ "TRUNCATE"] = 7] = "TRUNCATE";
46
+ AFC_OPS[AFC_OPS[/**
47
+ * RemovePath
48
+ */ "REMOVE_PATH"] = 8] = "REMOVE_PATH";
49
+ AFC_OPS[AFC_OPS[/**
50
+ * MakeDir
51
+ */ "MAKE_DIR"] = 9] = "MAKE_DIR";
52
+ AFC_OPS[AFC_OPS[/**
53
+ * GetFileInfo
54
+ */ "GET_FILE_INFO"] = 10] = "GET_FILE_INFO";
55
+ AFC_OPS[AFC_OPS[/**
56
+ * GetDeviceInfo
57
+ */ "GET_DEVINFO"] = 11] = "GET_DEVINFO";
58
+ AFC_OPS[AFC_OPS[/**
59
+ * WriteFileAtomic (tmp file+rename)
60
+ */ "WRITE_FILE_ATOM"] = 12] = "WRITE_FILE_ATOM";
61
+ AFC_OPS[AFC_OPS[/**
62
+ * FileRefOpen
63
+ */ "FILE_OPEN"] = 13] = "FILE_OPEN";
64
+ AFC_OPS[AFC_OPS[/**
65
+ * FileRefOpenResult
66
+ */ "FILE_OPEN_RES"] = 14] = "FILE_OPEN_RES";
67
+ AFC_OPS[AFC_OPS[/**
68
+ * FileRefRead
69
+ */ "FILE_READ"] = 15] = "FILE_READ";
70
+ AFC_OPS[AFC_OPS[/**
71
+ * FileRefWrite
72
+ */ "FILE_WRITE"] = 16] = "FILE_WRITE";
73
+ AFC_OPS[AFC_OPS[/**
74
+ * FileRefSeek
75
+ */ "FILE_SEEK"] = 17] = "FILE_SEEK";
76
+ AFC_OPS[AFC_OPS[/**
77
+ * FileRefTell
78
+ */ "FILE_TELL"] = 18] = "FILE_TELL";
79
+ AFC_OPS[AFC_OPS[/**
80
+ * FileRefTellResult
81
+ */ "FILE_TELL_RES"] = 19] = "FILE_TELL_RES";
82
+ AFC_OPS[AFC_OPS[/**
83
+ * FileRefClose
84
+ */ "FILE_CLOSE"] = 20] = "FILE_CLOSE";
85
+ AFC_OPS[AFC_OPS[/**
86
+ * FileRefSetFileSize (ftruncate)
87
+ */ "FILE_SET_SIZE"] = 21] = "FILE_SET_SIZE";
88
+ AFC_OPS[AFC_OPS[/**
89
+ * GetConnectionInfo
90
+ */ "GET_CON_INFO"] = 22] = "GET_CON_INFO";
91
+ AFC_OPS[AFC_OPS[/**
92
+ * SetConnectionOptions
93
+ */ "SET_CON_OPTIONS"] = 23] = "SET_CON_OPTIONS";
94
+ AFC_OPS[AFC_OPS[/**
95
+ * RenamePath
96
+ */ "RENAME_PATH"] = 24] = "RENAME_PATH";
97
+ AFC_OPS[AFC_OPS[/**
98
+ * SetFSBlockSize (0x800000)
99
+ */ "SET_FS_BS"] = 25] = "SET_FS_BS";
100
+ AFC_OPS[AFC_OPS[/**
101
+ * SetSocketBlockSize (0x800000)
102
+ */ "SET_SOCKET_BS"] = 26] = "SET_SOCKET_BS";
103
+ AFC_OPS[AFC_OPS[/**
104
+ * FileRefLock
105
+ */ "FILE_LOCK"] = 27] = "FILE_LOCK";
106
+ AFC_OPS[AFC_OPS[/**
107
+ * MakeLink
108
+ */ "MAKE_LINK"] = 28] = "MAKE_LINK";
109
+ AFC_OPS[AFC_OPS[/**
110
+ * GetFileHash
111
+ */ "GET_FILE_HASH"] = 29] = "GET_FILE_HASH";
112
+ AFC_OPS[AFC_OPS[/**
113
+ * SetModTime
114
+ */ "SET_FILE_MOD_TIME"] = 30] = "SET_FILE_MOD_TIME";
115
+ AFC_OPS[AFC_OPS[/**
116
+ * GetFileHashWithRange
117
+ */ "GET_FILE_HASH_RANGE"] = 31] = "GET_FILE_HASH_RANGE";
118
+ AFC_OPS[AFC_OPS[// iOS 6+
119
+ /**
120
+ * FileRefSetImmutableHint
121
+ */ "FILE_SET_IMMUTABLE_HINT"] = 32] = "FILE_SET_IMMUTABLE_HINT";
122
+ AFC_OPS[AFC_OPS[/**
123
+ * GetSizeOfPathContents
124
+ */ "GET_SIZE_OF_PATH_CONTENTS"] = 33] = "GET_SIZE_OF_PATH_CONTENTS";
125
+ AFC_OPS[AFC_OPS[/**
126
+ * RemovePathAndContents
127
+ */ "REMOVE_PATH_AND_CONTENTS"] = 34] = "REMOVE_PATH_AND_CONTENTS";
128
+ AFC_OPS[AFC_OPS[/**
129
+ * DirectoryEnumeratorRefOpen
130
+ */ "DIR_OPEN"] = 35] = "DIR_OPEN";
131
+ AFC_OPS[AFC_OPS[/**
132
+ * DirectoryEnumeratorRefOpenResult
133
+ */ "DIR_OPEN_RESULT"] = 36] = "DIR_OPEN_RESULT";
134
+ AFC_OPS[AFC_OPS[/**
135
+ * DirectoryEnumeratorRefRead
136
+ */ "DIR_READ"] = 37] = "DIR_READ";
137
+ AFC_OPS[AFC_OPS[/**
138
+ * DirectoryEnumeratorRefClose
139
+ */ "DIR_CLOSE"] = 38] = "DIR_CLOSE";
140
+ AFC_OPS[AFC_OPS[// iOS 7+
141
+ /**
142
+ * FileRefReadWithOffset
143
+ */ "FILE_READ_OFFSET"] = 39] = "FILE_READ_OFFSET";
144
+ AFC_OPS[AFC_OPS[/**
145
+ * FileRefWriteWithOffset
146
+ */ "FILE_WRITE_OFFSET"] = 40] = "FILE_WRITE_OFFSET";
147
+ })(AFC_OPS || (exports.AFC_OPS = AFC_OPS = {}));
148
+ var AFC_STATUS;
149
+ exports.AFC_STATUS = AFC_STATUS;
150
+ (function(AFC_STATUS) {
151
+ AFC_STATUS[AFC_STATUS["SUCCESS"] = 0] = "SUCCESS";
152
+ AFC_STATUS[AFC_STATUS["UNKNOWN_ERROR"] = 1] = "UNKNOWN_ERROR";
153
+ AFC_STATUS[AFC_STATUS["OP_HEADER_INVALID"] = 2] = "OP_HEADER_INVALID";
154
+ AFC_STATUS[AFC_STATUS["NO_RESOURCES"] = 3] = "NO_RESOURCES";
155
+ AFC_STATUS[AFC_STATUS["READ_ERROR"] = 4] = "READ_ERROR";
156
+ AFC_STATUS[AFC_STATUS["WRITE_ERROR"] = 5] = "WRITE_ERROR";
157
+ AFC_STATUS[AFC_STATUS["UNKNOWN_PACKET_TYPE"] = 6] = "UNKNOWN_PACKET_TYPE";
158
+ AFC_STATUS[AFC_STATUS["INVALID_ARG"] = 7] = "INVALID_ARG";
159
+ AFC_STATUS[AFC_STATUS["OBJECT_NOT_FOUND"] = 8] = "OBJECT_NOT_FOUND";
160
+ AFC_STATUS[AFC_STATUS["OBJECT_IS_DIR"] = 9] = "OBJECT_IS_DIR";
161
+ AFC_STATUS[AFC_STATUS["PERM_DENIED"] = 10] = "PERM_DENIED";
162
+ AFC_STATUS[AFC_STATUS["SERVICE_NOT_CONNECTED"] = 11] = "SERVICE_NOT_CONNECTED";
163
+ AFC_STATUS[AFC_STATUS["OP_TIMEOUT"] = 12] = "OP_TIMEOUT";
164
+ AFC_STATUS[AFC_STATUS["TOO_MUCH_DATA"] = 13] = "TOO_MUCH_DATA";
165
+ AFC_STATUS[AFC_STATUS["END_OF_DATA"] = 14] = "END_OF_DATA";
166
+ AFC_STATUS[AFC_STATUS["OP_NOT_SUPPORTED"] = 15] = "OP_NOT_SUPPORTED";
167
+ AFC_STATUS[AFC_STATUS["OBJECT_EXISTS"] = 16] = "OBJECT_EXISTS";
168
+ AFC_STATUS[AFC_STATUS["OBJECT_BUSY"] = 17] = "OBJECT_BUSY";
169
+ AFC_STATUS[AFC_STATUS["NO_SPACE_LEFT"] = 18] = "NO_SPACE_LEFT";
170
+ AFC_STATUS[AFC_STATUS["OP_WOULD_BLOCK"] = 19] = "OP_WOULD_BLOCK";
171
+ AFC_STATUS[AFC_STATUS["IO_ERROR"] = 20] = "IO_ERROR";
172
+ AFC_STATUS[AFC_STATUS["OP_INTERRUPTED"] = 21] = "OP_INTERRUPTED";
173
+ AFC_STATUS[AFC_STATUS["OP_IN_PROGRESS"] = 22] = "OP_IN_PROGRESS";
174
+ AFC_STATUS[AFC_STATUS["INTERNAL_ERROR"] = 23] = "INTERNAL_ERROR";
175
+ AFC_STATUS[AFC_STATUS["MUX_ERROR"] = 30] = "MUX_ERROR";
176
+ AFC_STATUS[AFC_STATUS["NO_MEM"] = 31] = "NO_MEM";
177
+ AFC_STATUS[AFC_STATUS["NOT_ENOUGH_DATA"] = 32] = "NOT_ENOUGH_DATA";
178
+ AFC_STATUS[AFC_STATUS["DIR_NOT_EMPTY"] = 33] = "DIR_NOT_EMPTY";
179
+ AFC_STATUS[AFC_STATUS["FORCE_SIGNED_TYPE"] = -1] = "FORCE_SIGNED_TYPE";
180
+ })(AFC_STATUS || (exports.AFC_STATUS = AFC_STATUS = {}));
181
+ var AFC_FILE_OPEN_FLAGS;
182
+ exports.AFC_FILE_OPEN_FLAGS = AFC_FILE_OPEN_FLAGS;
183
+ (function(AFC_FILE_OPEN_FLAGS) {
184
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
185
+ * r (O_RDONLY)
186
+ */ "RDONLY"] = 1] = "RDONLY";
187
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
188
+ * r+ (O_RDWR | O_CREAT)
189
+ */ "RW"] = 2] = "RW";
190
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
191
+ * w (O_WRONLY | O_CREAT | O_TRUNC)
192
+ */ "WRONLY"] = 3] = "WRONLY";
193
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
194
+ * w+ (O_RDWR | O_CREAT | O_TRUNC)
195
+ */ "WR"] = 4] = "WR";
196
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
197
+ * a (O_WRONLY | O_APPEND | O_CREAT)
198
+ */ "APPEND"] = 5] = "APPEND";
199
+ AFC_FILE_OPEN_FLAGS[AFC_FILE_OPEN_FLAGS[/**
200
+ * a+ (O_RDWR | O_APPEND | O_CREAT)
201
+ */ "RDAPPEND"] = 6] = "RDAPPEND";
202
+ })(AFC_FILE_OPEN_FLAGS || (exports.AFC_FILE_OPEN_FLAGS = AFC_FILE_OPEN_FLAGS = {}));
203
+ function isAFCResponse(resp) {
204
+ return AFC_OPS[resp.operation] !== undefined && resp.id !== undefined && resp.data !== undefined;
205
+ }
206
+ function isStatusResponse(resp) {
207
+ return isAFCResponse(resp) && resp.operation === 1;
208
+ }
209
+ function isErrorStatusResponse(resp) {
210
+ return isStatusResponse(resp) && resp.data !== 0;
211
+ }
212
+ class AFCInternalError extends Error {
213
+ constructor(msg, requestId){
214
+ super(msg);
215
+ this.requestId = requestId;
216
+ }
217
+ }
218
+ class AFCError extends Error {
219
+ constructor(msg, status){
220
+ super(msg);
221
+ this.status = status;
222
+ }
223
+ }
224
+ exports.AFCError = AFCError;
225
+ class AFCProtocolClient extends _abstractProtocol.ProtocolClient {
226
+ requestId = 0;
227
+ requestCallbacks = {};
228
+ constructor(socket){
229
+ super(socket, new _abstractProtocol.ProtocolReaderFactory(AFCProtocolReader), new AFCProtocolWriter());
230
+ const reader = this.readerFactory.create((resp, err)=>{
231
+ if (err && err instanceof AFCInternalError) {
232
+ this.requestCallbacks[err.requestId](resp, err);
233
+ } else if (isErrorStatusResponse(resp)) {
234
+ this.requestCallbacks[resp.id](resp, new AFCError(AFC_STATUS[resp.data], resp.data));
235
+ } else {
236
+ this.requestCallbacks[resp.id](resp);
237
+ }
238
+ });
239
+ socket.on("data", reader.onData);
240
+ }
241
+ sendMessage(msg) {
242
+ return new Promise((resolve, reject)=>{
243
+ const requestId = this.requestId++;
244
+ this.requestCallbacks[requestId] = async (resp, err)=>{
245
+ if (err) {
246
+ reject(err);
247
+ return;
248
+ }
249
+ if (isAFCResponse(resp)) {
250
+ resolve(resp);
251
+ } else {
252
+ reject(new _errors.CommandError("APPLE_DEVICE_AFC", "Malformed AFC response"));
253
+ }
254
+ };
255
+ this.writer.write(this.socket, {
256
+ ...msg,
257
+ requestId
258
+ });
259
+ });
260
+ }
261
+ }
262
+ exports.AFCProtocolClient = AFCProtocolClient;
263
+ class AFCProtocolReader extends _abstractProtocol.ProtocolReader {
264
+ constructor(callback){
265
+ super(AFC_HEADER_SIZE, callback);
266
+ }
267
+ parseHeader(data) {
268
+ const magic = data.slice(0, 8).toString("ascii");
269
+ if (magic !== AFC_MAGIC) {
270
+ throw new AFCInternalError(`Invalid AFC packet received (magic != ${AFC_MAGIC})`, data.readUInt32LE(24));
271
+ }
272
+ // technically these are uint64
273
+ this.header = {
274
+ magic,
275
+ totalLength: data.readUInt32LE(8),
276
+ headerLength: data.readUInt32LE(16),
277
+ requestId: data.readUInt32LE(24),
278
+ operation: data.readUInt32LE(32)
279
+ };
280
+ debug(`parse header: ${JSON.stringify(this.header)}`);
281
+ if (this.header.headerLength < AFC_HEADER_SIZE) {
282
+ throw new AFCInternalError("Invalid AFC header", this.header.requestId);
283
+ }
284
+ return this.header.totalLength - AFC_HEADER_SIZE;
285
+ }
286
+ parseBody(data) {
287
+ const body = {
288
+ operation: this.header.operation,
289
+ id: this.header.requestId,
290
+ data
291
+ };
292
+ if (isStatusResponse(body)) {
293
+ const status = data.readUInt32LE(0);
294
+ debug(`${AFC_OPS[this.header.operation]} response: ${AFC_STATUS[status]}`);
295
+ body.data = status;
296
+ } else if (data.length <= 8) {
297
+ debug(`${AFC_OPS[this.header.operation]} response: ${Array.prototype.toString.call(body)}`);
298
+ } else {
299
+ debug(`${AFC_OPS[this.header.operation]} response length: ${data.length} bytes`);
300
+ }
301
+ return body;
302
+ }
303
+ }
304
+ exports.AFCProtocolReader = AFCProtocolReader;
305
+ class AFCProtocolWriter {
306
+ write(socket, msg) {
307
+ const { data , payload , operation , requestId } = msg;
308
+ const dataLength = data ? data.length : 0;
309
+ const payloadLength = payload ? payload.length : 0;
310
+ const header = Buffer.alloc(AFC_HEADER_SIZE);
311
+ const magic = Buffer.from(AFC_MAGIC);
312
+ magic.copy(header);
313
+ header.writeUInt32LE(AFC_HEADER_SIZE + dataLength + payloadLength, 8);
314
+ header.writeUInt32LE(AFC_HEADER_SIZE + dataLength, 16);
315
+ header.writeUInt32LE(requestId, 24);
316
+ header.writeUInt32LE(operation, 32);
317
+ socket.write(header);
318
+ socket.write(data);
319
+ if (data.length <= 8) {
320
+ debug(`socket write, header: { requestId: ${requestId}, operation: ${AFC_OPS[operation]}}, body: ${Array.prototype.toString.call(data)}`);
321
+ } else {
322
+ debug(`socket write, header: { requestId: ${requestId}, operation: ${AFC_OPS[operation]}}, body: ${data.length} bytes`);
323
+ }
324
+ debug(`socket write, bytes written ${header.length} (header), ${data.length} (body)`);
325
+ if (payload) {
326
+ socket.write(payload);
327
+ }
328
+ }
329
+ }
330
+ exports.AFCProtocolWriter = AFCProtocolWriter;
331
+
332
+ //# sourceMappingURL=AFCProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AFCProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { CommandError } from '../../../../utils/errors';\nimport type { ProtocolReaderCallback, ProtocolWriter } from './AbstractProtocol';\nimport { ProtocolClient, ProtocolReader, ProtocolReaderFactory } from './AbstractProtocol';\n\nconst debug = Debug('expo:apple-device:protocol:afc');\n\nexport const AFC_MAGIC = 'CFA6LPAA';\nexport const AFC_HEADER_SIZE = 40;\n\nexport interface AFCHeader {\n magic: typeof AFC_MAGIC;\n totalLength: number;\n headerLength: number;\n requestId: number;\n operation: AFC_OPS;\n}\n\nexport interface AFCMessage {\n operation: AFC_OPS;\n data?: any;\n payload?: any;\n}\n\nexport interface AFCResponse {\n operation: AFC_OPS;\n id: number;\n data: Buffer;\n}\n\nexport interface AFCStatusResponse {\n operation: AFC_OPS.STATUS;\n id: number;\n data: number;\n}\n\n/**\n * AFC Operations\n */\nexport enum AFC_OPS {\n /**\n * Invalid\n */\n INVALID = 0x00000000,\n\n /**\n * Status\n */\n STATUS = 0x00000001,\n\n /**\n * Data\n */\n DATA = 0x00000002,\n\n /**\n * ReadDir\n */\n READ_DIR = 0x00000003,\n\n /**\n * ReadFile\n */\n READ_FILE = 0x00000004,\n\n /**\n * WriteFile\n */\n WRITE_FILE = 0x00000005,\n\n /**\n * WritePart\n */\n WRITE_PART = 0x00000006,\n\n /**\n * TruncateFile\n */\n TRUNCATE = 0x00000007,\n\n /**\n * RemovePath\n */\n REMOVE_PATH = 0x00000008,\n\n /**\n * MakeDir\n */\n MAKE_DIR = 0x00000009,\n\n /**\n * GetFileInfo\n */\n GET_FILE_INFO = 0x0000000a,\n\n /**\n * GetDeviceInfo\n */\n GET_DEVINFO = 0x0000000b,\n\n /**\n * WriteFileAtomic (tmp file+rename)\n */\n WRITE_FILE_ATOM = 0x0000000c,\n\n /**\n * FileRefOpen\n */\n FILE_OPEN = 0x0000000d,\n\n /**\n * FileRefOpenResult\n */\n FILE_OPEN_RES = 0x0000000e,\n\n /**\n * FileRefRead\n */\n FILE_READ = 0x0000000f,\n\n /**\n * FileRefWrite\n */\n FILE_WRITE = 0x00000010,\n\n /**\n * FileRefSeek\n */\n FILE_SEEK = 0x00000011,\n\n /**\n * FileRefTell\n */\n FILE_TELL = 0x00000012,\n\n /**\n * FileRefTellResult\n */\n FILE_TELL_RES = 0x00000013,\n\n /**\n * FileRefClose\n */\n FILE_CLOSE = 0x00000014,\n\n /**\n * FileRefSetFileSize (ftruncate)\n */\n FILE_SET_SIZE = 0x00000015,\n\n /**\n * GetConnectionInfo\n */\n GET_CON_INFO = 0x00000016,\n\n /**\n * SetConnectionOptions\n */\n SET_CON_OPTIONS = 0x00000017,\n\n /**\n * RenamePath\n */\n RENAME_PATH = 0x00000018,\n\n /**\n * SetFSBlockSize (0x800000)\n */\n SET_FS_BS = 0x00000019,\n\n /**\n * SetSocketBlockSize (0x800000)\n */\n SET_SOCKET_BS = 0x0000001a,\n\n /**\n * FileRefLock\n */\n FILE_LOCK = 0x0000001b,\n\n /**\n * MakeLink\n */\n MAKE_LINK = 0x0000001c,\n\n /**\n * GetFileHash\n */\n GET_FILE_HASH = 0x0000001d,\n\n /**\n * SetModTime\n */\n SET_FILE_MOD_TIME = 0x0000001e,\n\n /**\n * GetFileHashWithRange\n */\n GET_FILE_HASH_RANGE = 0x0000001f,\n\n // iOS 6+\n\n /**\n * FileRefSetImmutableHint\n */\n FILE_SET_IMMUTABLE_HINT = 0x00000020,\n\n /**\n * GetSizeOfPathContents\n */\n GET_SIZE_OF_PATH_CONTENTS = 0x00000021,\n\n /**\n * RemovePathAndContents\n */\n REMOVE_PATH_AND_CONTENTS = 0x00000022,\n\n /**\n * DirectoryEnumeratorRefOpen\n */\n DIR_OPEN = 0x00000023,\n\n /**\n * DirectoryEnumeratorRefOpenResult\n */\n DIR_OPEN_RESULT = 0x00000024,\n\n /**\n * DirectoryEnumeratorRefRead\n */\n DIR_READ = 0x00000025,\n\n /**\n * DirectoryEnumeratorRefClose\n */\n DIR_CLOSE = 0x00000026,\n\n // iOS 7+\n\n /**\n * FileRefReadWithOffset\n */\n FILE_READ_OFFSET = 0x00000027,\n\n /**\n * FileRefWriteWithOffset\n */\n FILE_WRITE_OFFSET = 0x00000028,\n}\n\n/**\n * Error Codes\n */\nexport enum AFC_STATUS {\n SUCCESS = 0,\n UNKNOWN_ERROR = 1,\n OP_HEADER_INVALID = 2,\n NO_RESOURCES = 3,\n READ_ERROR = 4,\n WRITE_ERROR = 5,\n UNKNOWN_PACKET_TYPE = 6,\n INVALID_ARG = 7,\n OBJECT_NOT_FOUND = 8,\n OBJECT_IS_DIR = 9,\n PERM_DENIED = 10,\n SERVICE_NOT_CONNECTED = 11,\n OP_TIMEOUT = 12,\n TOO_MUCH_DATA = 13,\n END_OF_DATA = 14,\n OP_NOT_SUPPORTED = 15,\n OBJECT_EXISTS = 16,\n OBJECT_BUSY = 17,\n NO_SPACE_LEFT = 18,\n OP_WOULD_BLOCK = 19,\n IO_ERROR = 20,\n OP_INTERRUPTED = 21,\n OP_IN_PROGRESS = 22,\n INTERNAL_ERROR = 23,\n MUX_ERROR = 30,\n NO_MEM = 31,\n NOT_ENOUGH_DATA = 32,\n DIR_NOT_EMPTY = 33,\n FORCE_SIGNED_TYPE = -1,\n}\n\nexport enum AFC_FILE_OPEN_FLAGS {\n /**\n * r (O_RDONLY)\n */\n RDONLY = 0x00000001,\n\n /**\n * r+ (O_RDWR | O_CREAT)\n */\n RW = 0x00000002,\n\n /**\n * w (O_WRONLY | O_CREAT | O_TRUNC)\n */\n WRONLY = 0x00000003,\n\n /**\n * w+ (O_RDWR | O_CREAT | O_TRUNC)\n */\n WR = 0x00000004,\n\n /**\n * a (O_WRONLY | O_APPEND | O_CREAT)\n */\n APPEND = 0x00000005,\n\n /**\n * a+ (O_RDWR | O_APPEND | O_CREAT)\n */\n RDAPPEND = 0x00000006,\n}\n\nfunction isAFCResponse(resp: any): resp is AFCResponse {\n return AFC_OPS[resp.operation] !== undefined && resp.id !== undefined && resp.data !== undefined;\n}\n\nfunction isStatusResponse(resp: any): resp is AFCStatusResponse {\n return isAFCResponse(resp) && resp.operation === AFC_OPS.STATUS;\n}\n\nfunction isErrorStatusResponse(resp: AFCResponse): boolean {\n return isStatusResponse(resp) && resp.data !== AFC_STATUS.SUCCESS;\n}\n\nclass AFCInternalError extends Error {\n constructor(msg: string, public requestId: number) {\n super(msg);\n }\n}\n\nexport class AFCError extends Error {\n constructor(msg: string, public status: AFC_STATUS) {\n super(msg);\n }\n}\n\nexport class AFCProtocolClient extends ProtocolClient {\n private requestId = 0;\n private requestCallbacks: { [key: number]: ProtocolReaderCallback } = {};\n\n constructor(socket: Socket) {\n super(socket, new ProtocolReaderFactory(AFCProtocolReader), new AFCProtocolWriter());\n\n const reader = this.readerFactory.create((resp, err) => {\n if (err && err instanceof AFCInternalError) {\n this.requestCallbacks[err.requestId](resp, err);\n } else if (isErrorStatusResponse(resp)) {\n this.requestCallbacks[resp.id](resp, new AFCError(AFC_STATUS[resp.data], resp.data));\n } else {\n this.requestCallbacks[resp.id](resp);\n }\n });\n socket.on('data', reader.onData);\n }\n\n sendMessage(msg: AFCMessage): Promise<AFCResponse> {\n return new Promise<AFCResponse>((resolve, reject) => {\n const requestId = this.requestId++;\n this.requestCallbacks[requestId] = async (resp: any, err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n if (isAFCResponse(resp)) {\n resolve(resp);\n } else {\n reject(new CommandError('APPLE_DEVICE_AFC', 'Malformed AFC response'));\n }\n };\n this.writer.write(this.socket, { ...msg, requestId });\n });\n }\n}\n\nexport class AFCProtocolReader extends ProtocolReader {\n private header!: AFCHeader; // TODO: ! -> ?\n\n constructor(callback: ProtocolReaderCallback) {\n super(AFC_HEADER_SIZE, callback);\n }\n\n parseHeader(data: Buffer) {\n const magic = data.slice(0, 8).toString('ascii');\n if (magic !== AFC_MAGIC) {\n throw new AFCInternalError(\n `Invalid AFC packet received (magic != ${AFC_MAGIC})`,\n data.readUInt32LE(24)\n );\n }\n // technically these are uint64\n this.header = {\n magic,\n totalLength: data.readUInt32LE(8),\n headerLength: data.readUInt32LE(16),\n requestId: data.readUInt32LE(24),\n operation: data.readUInt32LE(32),\n };\n\n debug(`parse header: ${JSON.stringify(this.header)}`);\n if (this.header.headerLength < AFC_HEADER_SIZE) {\n throw new AFCInternalError('Invalid AFC header', this.header.requestId);\n }\n return this.header.totalLength - AFC_HEADER_SIZE;\n }\n\n parseBody(data: Buffer): AFCResponse | AFCStatusResponse {\n const body: any = {\n operation: this.header.operation,\n id: this.header.requestId,\n data,\n };\n if (isStatusResponse(body)) {\n const status = data.readUInt32LE(0);\n debug(`${AFC_OPS[this.header.operation]} response: ${AFC_STATUS[status]}`);\n body.data = status;\n } else if (data.length <= 8) {\n debug(`${AFC_OPS[this.header.operation]} response: ${Array.prototype.toString.call(body)}`);\n } else {\n debug(`${AFC_OPS[this.header.operation]} response length: ${data.length} bytes`);\n }\n return body;\n }\n}\n\nexport class AFCProtocolWriter implements ProtocolWriter {\n write(socket: Socket, msg: AFCMessage & { requestId: number }) {\n const { data, payload, operation, requestId } = msg;\n\n const dataLength = data ? data.length : 0;\n const payloadLength = payload ? payload.length : 0;\n\n const header = Buffer.alloc(AFC_HEADER_SIZE);\n const magic = Buffer.from(AFC_MAGIC);\n magic.copy(header);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength + payloadLength, 8);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength, 16);\n header.writeUInt32LE(requestId, 24);\n header.writeUInt32LE(operation, 32);\n socket.write(header);\n socket.write(data);\n if (data.length <= 8) {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${\n AFC_OPS[operation]\n }}, body: ${Array.prototype.toString.call(data)}`\n );\n } else {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${AFC_OPS[operation]}}, body: ${data.length} bytes`\n );\n }\n\n debug(`socket write, bytes written ${header.length} (header), ${data.length} (body)`);\n if (payload) {\n socket.write(payload);\n }\n }\n}\n"],"names":["debug","Debug","AFC_MAGIC","AFC_HEADER_SIZE","AFC_OPS","INVALID","STATUS","DATA","READ_DIR","READ_FILE","WRITE_FILE","WRITE_PART","TRUNCATE","REMOVE_PATH","MAKE_DIR","GET_FILE_INFO","GET_DEVINFO","WRITE_FILE_ATOM","FILE_OPEN","FILE_OPEN_RES","FILE_READ","FILE_WRITE","FILE_SEEK","FILE_TELL","FILE_TELL_RES","FILE_CLOSE","FILE_SET_SIZE","GET_CON_INFO","SET_CON_OPTIONS","RENAME_PATH","SET_FS_BS","SET_SOCKET_BS","FILE_LOCK","MAKE_LINK","GET_FILE_HASH","SET_FILE_MOD_TIME","GET_FILE_HASH_RANGE","FILE_SET_IMMUTABLE_HINT","GET_SIZE_OF_PATH_CONTENTS","REMOVE_PATH_AND_CONTENTS","DIR_OPEN","DIR_OPEN_RESULT","DIR_READ","DIR_CLOSE","FILE_READ_OFFSET","FILE_WRITE_OFFSET","AFC_STATUS","SUCCESS","UNKNOWN_ERROR","OP_HEADER_INVALID","NO_RESOURCES","READ_ERROR","WRITE_ERROR","UNKNOWN_PACKET_TYPE","INVALID_ARG","OBJECT_NOT_FOUND","OBJECT_IS_DIR","PERM_DENIED","SERVICE_NOT_CONNECTED","OP_TIMEOUT","TOO_MUCH_DATA","END_OF_DATA","OP_NOT_SUPPORTED","OBJECT_EXISTS","OBJECT_BUSY","NO_SPACE_LEFT","OP_WOULD_BLOCK","IO_ERROR","OP_INTERRUPTED","OP_IN_PROGRESS","INTERNAL_ERROR","MUX_ERROR","NO_MEM","NOT_ENOUGH_DATA","DIR_NOT_EMPTY","FORCE_SIGNED_TYPE","AFC_FILE_OPEN_FLAGS","RDONLY","RW","WRONLY","WR","APPEND","RDAPPEND","isAFCResponse","resp","operation","undefined","id","data","isStatusResponse","isErrorStatusResponse","AFCInternalError","Error","constructor","msg","requestId","AFCError","status","AFCProtocolClient","ProtocolClient","requestCallbacks","socket","ProtocolReaderFactory","AFCProtocolReader","AFCProtocolWriter","reader","readerFactory","create","err","on","onData","sendMessage","Promise","resolve","reject","CommandError","writer","write","ProtocolReader","callback","parseHeader","magic","slice","toString","readUInt32LE","header","totalLength","headerLength","JSON","stringify","parseBody","body","length","Array","prototype","call","payload","dataLength","payloadLength","Buffer","alloc","from","copy","writeUInt32LE"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _plist = _interopRequireDefault(require("@expo/plist"));
6
+ var _plist1 = require("../../../../utils/plist");
7
+ function _interopRequireDefault(obj) {
8
+ return obj && obj.__esModule ? obj : {
9
+ default: obj
10
+ };
11
+ }
12
+ const BPLIST_MAGIC = Buffer.from("bplist00");
13
+ class ProtocolReaderFactory {
14
+ constructor(ProtocolReader1){
15
+ this.ProtocolReader = ProtocolReader1;
16
+ }
17
+ create(callback) {
18
+ return new this.ProtocolReader(callback);
19
+ }
20
+ }
21
+ exports.ProtocolReaderFactory = ProtocolReaderFactory;
22
+ class ProtocolReader {
23
+ constructor(headerSize, callback){
24
+ this.headerSize = headerSize;
25
+ this.callback = callback;
26
+ this.buffer = Buffer.alloc(0);
27
+ this.onData = this.onData.bind(this);
28
+ }
29
+ onData(data) {
30
+ try {
31
+ // if there's data, add it on to existing buffer
32
+ this.buffer = data ? Buffer.concat([
33
+ this.buffer,
34
+ data
35
+ ]) : this.buffer;
36
+ // we haven't gotten the body length from the header yet
37
+ if (!this.bodyLength) {
38
+ if (this.buffer.length < this.headerSize) {
39
+ // partial header, wait for rest
40
+ return;
41
+ }
42
+ this.bodyLength = this.parseHeader(this.buffer);
43
+ // move on to body
44
+ this.buffer = this.buffer.slice(this.headerSize);
45
+ if (!this.buffer.length) {
46
+ // only got header, wait for body
47
+ return;
48
+ }
49
+ }
50
+ if (this.buffer.length < this.bodyLength) {
51
+ // wait for rest of body
52
+ return;
53
+ }
54
+ if (this.bodyLength === -1) {
55
+ this.callback(this.parseBody(this.buffer));
56
+ this.buffer = Buffer.alloc(0);
57
+ } else {
58
+ this.body = this.buffer.slice(0, this.bodyLength);
59
+ this.bodyLength -= this.body.length;
60
+ if (!this.bodyLength) {
61
+ this.callback(this.parseBody(this.body));
62
+ }
63
+ this.buffer = this.buffer.slice(this.body.length);
64
+ // There are multiple messages here, call parse again
65
+ if (this.buffer.length) {
66
+ this.onData();
67
+ }
68
+ }
69
+ } catch (err) {
70
+ this.callback(null, err);
71
+ }
72
+ }
73
+ }
74
+ exports.ProtocolReader = ProtocolReader;
75
+ class PlistProtocolReader extends ProtocolReader {
76
+ parseBody(body) {
77
+ if (BPLIST_MAGIC.compare(body, 0, 8) === 0) {
78
+ return (0, _plist1).parsePlistBuffer(body);
79
+ } else {
80
+ return _plist.default.parse(body.toString("utf8"));
81
+ }
82
+ }
83
+ }
84
+ exports.PlistProtocolReader = PlistProtocolReader;
85
+ class ProtocolClient {
86
+ constructor(socket, readerFactory, writer){
87
+ this.socket = socket;
88
+ this.readerFactory = readerFactory;
89
+ this.writer = writer;
90
+ }
91
+ sendMessage(msg, callback) {
92
+ return new Promise((resolve, reject)=>{
93
+ const reader = this.readerFactory.create(async (response, error)=>{
94
+ if (error) {
95
+ reject(error);
96
+ return;
97
+ }
98
+ if (callback) {
99
+ callback(response, (value)=>{
100
+ this.socket.removeListener("data", reader.onData);
101
+ resolve(value);
102
+ }, reject);
103
+ } else {
104
+ this.socket.removeListener("data", reader.onData);
105
+ resolve(response);
106
+ }
107
+ });
108
+ this.socket.on("data", reader.onData);
109
+ this.writer.write(this.socket, msg);
110
+ });
111
+ }
112
+ }
113
+ exports.ProtocolClient = ProtocolClient;
114
+
115
+ //# sourceMappingURL=AbstractProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AbstractProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport plist from '@expo/plist';\nimport { Socket } from 'net';\n\nimport { parsePlistBuffer } from '../../../../utils/plist';\n\nconst BPLIST_MAGIC = Buffer.from('bplist00');\n\nexport type ProtocolReaderCallback = (resp: any, err?: Error) => void;\n\nexport class ProtocolReaderFactory<T> {\n constructor(private ProtocolReader: new (callback: ProtocolReaderCallback) => T) {}\n\n create(callback: (resp: any, err?: Error) => void): T {\n return new this.ProtocolReader(callback);\n }\n}\n\nexport abstract class ProtocolReader {\n protected body!: Buffer; // TODO: ! -> ?\n protected bodyLength!: number; // TODO: ! -> ?\n protected buffer = Buffer.alloc(0);\n constructor(protected headerSize: number, protected callback: ProtocolReaderCallback) {\n this.onData = this.onData.bind(this);\n }\n\n /** Returns length of body, or -1 if header doesn't contain length */\n protected abstract parseHeader(data: Buffer): number;\n protected abstract parseBody(data: Buffer): any;\n\n onData(data?: Buffer) {\n try {\n // if there's data, add it on to existing buffer\n this.buffer = data ? Buffer.concat([this.buffer, data]) : this.buffer;\n // we haven't gotten the body length from the header yet\n if (!this.bodyLength) {\n if (this.buffer.length < this.headerSize) {\n // partial header, wait for rest\n return;\n }\n this.bodyLength = this.parseHeader(this.buffer);\n // move on to body\n this.buffer = this.buffer.slice(this.headerSize);\n if (!this.buffer.length) {\n // only got header, wait for body\n return;\n }\n }\n if (this.buffer.length < this.bodyLength) {\n // wait for rest of body\n return;\n }\n\n if (this.bodyLength === -1) {\n this.callback(this.parseBody(this.buffer));\n this.buffer = Buffer.alloc(0);\n } else {\n this.body = this.buffer.slice(0, this.bodyLength);\n this.bodyLength -= this.body.length;\n if (!this.bodyLength) {\n this.callback(this.parseBody(this.body));\n }\n this.buffer = this.buffer.slice(this.body.length);\n // There are multiple messages here, call parse again\n if (this.buffer.length) {\n this.onData();\n }\n }\n } catch (err: any) {\n this.callback(null, err);\n }\n }\n}\n\nexport abstract class PlistProtocolReader extends ProtocolReader {\n protected parseBody(body: Buffer) {\n if (BPLIST_MAGIC.compare(body, 0, 8) === 0) {\n return parsePlistBuffer(body);\n } else {\n return plist.parse(body.toString('utf8'));\n }\n }\n}\n\nexport interface ProtocolWriter {\n write(sock: Socket, msg: any): void;\n}\n\nexport abstract class ProtocolClient<MessageType = any> {\n constructor(\n public socket: Socket,\n protected readerFactory: ProtocolReaderFactory<ProtocolReader>,\n protected writer: ProtocolWriter\n ) {}\n\n sendMessage<ResponseType = any>(msg: MessageType): Promise<ResponseType>;\n sendMessage<CallbackType = void, ResponseType = any>(\n msg: MessageType,\n callback: (response: ResponseType, resolve: any, reject: any) => void\n ): Promise<CallbackType>;\n sendMessage<CallbackType = void, ResponseType = any>(\n msg: MessageType,\n callback?: (response: ResponseType, resolve: any, reject: any) => void\n ): Promise<CallbackType | ResponseType> {\n return new Promise<ResponseType | CallbackType>((resolve, reject) => {\n const reader = this.readerFactory.create(async (response: ResponseType, error?: Error) => {\n if (error) {\n reject(error);\n return;\n }\n if (callback) {\n callback(\n response,\n (value: any) => {\n this.socket.removeListener('data', reader.onData);\n resolve(value);\n },\n reject\n );\n } else {\n this.socket.removeListener('data', reader.onData);\n resolve(response);\n }\n });\n this.socket.on('data', reader.onData);\n this.writer.write(this.socket, msg);\n });\n }\n}\n"],"names":["BPLIST_MAGIC","Buffer","from","ProtocolReaderFactory","constructor","ProtocolReader","create","callback","headerSize","buffer","alloc","onData","bind","data","concat","bodyLength","length","parseHeader","slice","parseBody","body","err","PlistProtocolReader","compare","parsePlistBuffer","plist","parse","toString","ProtocolClient","socket","readerFactory","writer","sendMessage","msg","Promise","resolve","reject","reader","response","error","value","removeListener","on","write"],"mappings":"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"}