History log of /expo/packages/@expo/cli/src/run/ios/appleDevice/protocol/AbstractProtocol.ts (Results 1 – 3 of 3)
Revision Date Author Comments
# 8a424beb 11-Aug-2023 James Ide <[email protected]>

[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)

Why
---
Prettier 3 is out. Add support for it with this linter config.

**Note for reviewer:** the first commit is the one with th

[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)

Why
---
Prettier 3 is out. Add support for it with this linter config.

**Note for reviewer:** the first commit is the one with the actual
changes. The rest of this PR are changes to get the linter passing
(mostly autofix).

How
---
Update eslint-config-prettier and eslint-plugin-prettier. To address
deprecation warnings, also update typescript-eslint/parser and
typescript-eslint/eslint-plugin.
Because of an update to typescript-eslint/parser, we need to suppress
deprecation warnings (documented in a comment).

Regenerated test snapshots. Due to the upgraded dependencies, typecasts
and optional chaining are now auto-fixable by lint. This converts
warnings into autofixes.

Test Plan
---
`yarn test` in the linter config. Run `expotools check --all --fix-lint
--no-build --no-test --no-uniformity-check` to try this config on the
whole repo.

---------

Co-authored-by: Expo Bot <[email protected]>

show more ...


# eec3a87e 13-Feb-2023 Cedric van Putten <[email protected]>

fix(cli): auto-detect the TLS version based on current node version (#21169)

# Why

After debugging this issue
https://github.com/byCedric/expo-monorepo-example/issues/84, it seems
that we are h

fix(cli): auto-detect the TLS version based on current node version (#21169)

# Why

After debugging this issue
https://github.com/byCedric/expo-monorepo-example/issues/84, it seems
that we are having trouble with the internals of `expo run:ios`.

What's happening here are two major things:
1. Node 17+ is throwing an internal OpenSSL error when establishing a
secure TLS connection to the iOS device. This is caused by the explicit
`secureProtocol` option, which is set to `TLSv1_method`.
2. We don't have any error event handlers when opening (secure) sockets
to iOS devices.

These two issues together result in `expo run:ios` not-installing the
app on the device. Luckily, it does build the app. But, due to the
missing error handlers, we are swallowing the underlying error and the
installation part is [stuck on a
promise](https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/run/ios/appleDevice/AppleDevice.ts#L143)
that will never be resolved.

Here is the chain that's getting blocked by issue 2 (caused by issue 1)
- `clientManager.getMobileImageMounterClient`
- `this.getServiceClient('com.apple.mobile.mobile_image_mounter',
MobileImageMounterClient)`
- `lockdowndClient.startService(name)` is invoked (from
`MobileImageMounterClient`)
- `LockdownProtocolClient.sendMessage` is invoked (with `StartService`,
`com.apple.mobile.mobile_image_mounter`)
- `ProtocolClient.sendMessage` is invoked
- Socket TLS handshake fails, but the `socket.on('error')` is not set.
So the error is never received.

# How

- Removed the explicit `TLSv1_method` from `tls.createSecureContext`
- Added error handlers to surface underlying errors

After removing the fixed TLS method, it seems to use TLSv1.2 by default.

# Test Plan

Test `main` on Node 17+, while adding `enableTrace: true` and
`socket.on('error', (error) => console.log(error));` to the changes I
made
> This should fail with an internal socket/openssl error

Test this PR on Node 16, and Node 18
> This should NOT fail

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->

- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).

show more ...


# c4ef02ae 03-May-2022 Evan Bacon <[email protected]>

feat(cli): add `run:ios` command (#16662)

* [wip] Added expo run:ios command

* Clean up run:ios

* feat(cli): add headless server mode

* fix(cli): fix run:ios logic issues

* Update CHANGE

feat(cli): add `run:ios` command (#16662)

* [wip] Added expo run:ios command

* Clean up run:ios

* feat(cli): add headless server mode

* fix(cli): fix run:ios logic issues

* Update CHANGELOG.md

* Update packages/expo/CHANGELOG.md

Co-authored-by: Expo Bot <[email protected]>

* clean up

* refine fixture

* refactor and test code signing

* Update resolveOptionsAsync.ts

* fix merge

* added new impl

* Update AppleDevice.ts

* Added more tests

* fixed e2e tests

* lint fix

* Update index-test.ts

Co-authored-by: Expo Bot <[email protected]>

show more ...