BREAKING CHANGE: The signature for an `ItemCtor` has changed. The second parameter is now a type extending `Strongbox` instead of a `container` string. This allows for deeper integration between a custom `Item` implementation and a custom `Strongbox` implementation. Further, a custom `container` now must be an absolute path after it's been slugified.
- The `Strongbox.clearAll()` method now accepts a `force` param which, if `true`, will rimraf the entire container.
- Added two methods to the `Strongbox` class which can be overridden to accept custom options, apply defaults to those options, then validate and/or transform them.
- Added nearly-complete unit test coverage and added E2E coverage of the `BaseItem` implementation.
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...