The PR preview won't work when run from forks because there's no safe way to let forks write to our own `gh-pages` branch.
We'll need to find another strategy to get this working again.
For now, the docs build just builds the docs, like it did before.
BREAKING CHANGE: `Driver.proxyCommand` now returns `Promise<unknown>` by default. In strict mode, this forces an extension calling `this.proxyCommand()` to explicitly type the return value (because it's unknown!).
Otherwise, this concerns the `SingularSessionData` type and the function which returns it (`getSession()`). `Driver` now accepts a type param to add arbitrary properties to the value returned by `getSession()`--as this is in-line with `XCUITestDriver` is doing. This param is provided as the new optional second type param to `SingularSessionData`.
Further, it removes the `ISessionCommands` interface, because I didn't understand how to write it such that an isolated implementation could use the type parameter from the class it belongs to. This is probably doable, but seems icky, and I didn't want to fight with it. It's easier to just move the implementation into the class itself, which is what will happen in `BaseDriver` (see next changeset).
AWS S3 expects file field to be the last field in the POST request.
Currently it is the first field and that prevents AWS from parsing the
other POST fields and request gives 400 error.
With the change, it makes it possible to provide formFields necessary
for http upload to S3 from appium.
Use case:
mobile: stopMediaProjectionRecording can upload screen recording to S3
for further processing
The resulting solution keeps a bunch of weak refs to `Consola` objects and sets the log level on all of them if it ever changes.
This is--at minimum--easier to understand than the broken `Proxy` implementation.
This makes `ls` an alias of `list`; e.g., `appium driver ls`
While doing this I noticed a limitation of `argparser`, which is that an option (not a command) can only have a single (1) alias. I have noted this behavior in a comment.
I also notice that we need to rewrite `ls` to be `list` ourselves, or we will have a bunch of conditionals checking for both values scattered around.
We need to use yargs...
This replaces [danielchabr/pr-labels-checker](/danielchabr/pr-labels-checker) with [egmacke/action-check-label](/egmacke/action-check-label). There are many such actions. Maybe this one won't give us problems.
In the case of `appium-xcuitest-driver`, each command (or execute) method is declared like so:
```ts
import {someMixin} from './some-mixins';
class XCUITestDriver {
foo = someMixin.foo;
}
```
The docstring exists on `someMixin.foo`, but not on the `foo` prop of an `XCUITestDriver` instance.
This change makes `@appium/typedoc-plugin-appium` dig into such references and derive the comments.
This causes the "Build" workflow to only trigger if the PR modifies files in paths that might affect the build.
Likewise, the "Build Docs" workflow is expanded to rebuild docs if API changes occur (e.g. in sources).
Also restricts perms a bit more on docs build.