mirror of
https://github.com/appium/appium.git
synced 2026-11-03 15:56:15 +08:00
Compare commits
52
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9b50225dc | ||
|
|
e9426fcfec | ||
|
|
5ab2fea576 | ||
|
|
377e9825de | ||
|
|
116c9a66e2 | ||
|
|
04b542cfcd | ||
|
|
c39be81d04 | ||
|
|
efc847380a | ||
|
|
cf7b4d84af | ||
|
|
5a3666f653 | ||
|
|
5790924bf8 | ||
|
|
39b7cd5084 | ||
|
|
fd912346fa | ||
|
|
1d5070e891 | ||
|
|
42953b2add | ||
|
|
d0f479f7a8 | ||
|
|
e67890f463 | ||
|
|
ff46dfa814 | ||
|
|
afc7e34402 | ||
|
|
eef4e3447a | ||
|
|
d6c42e99c0 | ||
|
|
6cf14802b7 | ||
|
|
d5090155ad | ||
|
|
591d15bc5e | ||
|
|
00dbd28190 | ||
|
|
b808dc866d | ||
|
|
d866bddc15 | ||
|
|
825833d1ad | ||
|
|
bb11d1cfe9 | ||
|
|
11c6aaae41 | ||
|
|
822206be20 | ||
|
|
374c85e22a | ||
|
|
a11a6ede33 | ||
|
|
41eab2c938 | ||
|
|
296c29ad84 | ||
|
|
07f9d41bd2 | ||
|
|
d8b633406a | ||
|
|
b9d339eaf3 | ||
|
|
1ea309814a | ||
|
|
19ff931bc0 | ||
|
|
9d2469fdf3 | ||
|
|
47a4ddd2a3 | ||
|
|
a1723231be | ||
|
|
f4a254f204 | ||
|
|
22b943dff1 | ||
|
|
19eaaf5764 | ||
|
|
55805390b5 | ||
|
|
e94275c229 | ||
|
|
f795fe6056 | ||
|
|
bbcaec9c05 | ||
|
|
43a0d1778f | ||
|
|
d514ebdd7e |
+1
-1
@@ -53,4 +53,4 @@ targets:
|
||||
path: ./packages/docutils
|
||||
|
||||
revision:
|
||||
- branch: master
|
||||
branch: master
|
||||
|
||||
+12
-1
@@ -25,6 +25,7 @@ labels:
|
||||
matcher:
|
||||
commits: '^chore.*?:'
|
||||
title: '^chore.*?:'
|
||||
files: ['.github/**', '.husky/**', '.vscode/**', './.*', './*.js', '**/test/**']
|
||||
|
||||
- label: 'SemVer:Breaking'
|
||||
sync: true
|
||||
@@ -34,7 +35,7 @@ labels:
|
||||
- label: 'Dependencies'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['**/package.json', '**/package-lock.json', '**/requirements.txt']
|
||||
files: ['**/package.json', 'package-lock.json', '**/requirements.txt']
|
||||
author: 'renovate'
|
||||
|
||||
- label: 'appium core'
|
||||
@@ -52,6 +53,11 @@ labels:
|
||||
matcher:
|
||||
files: ['packages/eslint-config-appium/**']
|
||||
|
||||
- label: '@appium/eslint-config-appium-ts'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/eslint-config-appium-ts/**']
|
||||
|
||||
- label: '@appium/base-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
@@ -141,3 +147,8 @@ labels:
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/universal-xml-plugin/**']
|
||||
|
||||
- label: '@appium/strongbox'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/strongbox/**']
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
name: Labeler
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize]
|
||||
branches: [master]
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
labeler:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Auto-Label PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: fuxingloh/multi-labeler@6704db0bcba106d07482efabbc79d3092af74fa2 # v2
|
||||
@@ -1,5 +1,42 @@
|
||||
name: Appium Build
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
# this list of paths could potentially impact the build
|
||||
paths:
|
||||
- '**/tsconfig*.json'
|
||||
- 'packages/base-driver/static/**/*'
|
||||
- 'packages/*/test/**'
|
||||
- 'packages/*/bin'
|
||||
- 'packages/**/*.ts'
|
||||
- 'packages/**/*.json'
|
||||
- 'packages/**/*.js'
|
||||
- 'package*.json'
|
||||
- 'lerna.json'
|
||||
- '.npmrc'
|
||||
- '.mocharc.js'
|
||||
- '.github/workflows/build.yml' # this file
|
||||
- '.eslintrc'
|
||||
- '.eslintignore'
|
||||
- '!**/sample-code/**'
|
||||
- '!packages/*/docs/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '**/tsconfig*.json'
|
||||
- 'packages/base-driver/static/**/*'
|
||||
- 'packages/*/test/**'
|
||||
- 'packages/*/bin'
|
||||
- 'packages/**/*.ts'
|
||||
- 'packages/**/*.json'
|
||||
- 'packages/**/*.js'
|
||||
- 'package*.json'
|
||||
- 'lerna.json'
|
||||
- '.npmrc'
|
||||
- '.mocharc.js'
|
||||
- '.github/workflows/build.yml' # this file
|
||||
- '.eslintrc'
|
||||
- '.eslintignore'
|
||||
- '!**/sample-code/**'
|
||||
- '!packages/*/docs/**'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
+19
-13
@@ -1,16 +1,22 @@
|
||||
name: Build Docs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- closed
|
||||
pull_request_target:
|
||||
paths:
|
||||
- './packages/appium/docs/**'
|
||||
- './packages/docutils/**'
|
||||
- './packages/typedoc-plugin-appium/**'
|
||||
- '**/typedoc.json'
|
||||
- '**/tsconfig*.json'
|
||||
- '**/package*.json'
|
||||
- '**/*mkdocs*.ya?ml'
|
||||
- 'packages/docutils/requirements.txt'
|
||||
- 'packages/*/README.md'
|
||||
- 'packages/*/docs/**'
|
||||
- 'packages/*/**/*.ts'
|
||||
- 'packages/*/**/*.js'
|
||||
- '.github/workflows/docs.yml' # this file
|
||||
- '!**/test/**'
|
||||
- '!**/sample-code/**'
|
||||
|
||||
branches: [master]
|
||||
|
||||
concurrency: preview-${{ github.ref }}
|
||||
|
||||
@@ -20,12 +26,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
- name: Install dependencies (node)
|
||||
- name: Install dependencies (Node.js)
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
useRollingCache: true
|
||||
install-command: npm ci
|
||||
- name: Install dependencies (python)
|
||||
- name: Install dependencies (Python)
|
||||
run: pip install -r packages/docutils/requirements.txt
|
||||
- name: Configure Git User
|
||||
run: |
|
||||
@@ -34,7 +40,7 @@ jobs:
|
||||
- name: Build Docs
|
||||
run: npm run docs:preview
|
||||
- name: Deploy Preview
|
||||
if: ${{ github.repository == 'appium/appium' }}
|
||||
uses: rossjrw/pr-preview-action@9dac5c4777c535516ebf819f93aeadac70f66488 # v1
|
||||
uses: rossjrw/pr-preview-action@2a652922e9b9c53e7e5ea62fa38da744de09043c # v1
|
||||
with:
|
||||
source-dir: ./packages/appium/docs/site
|
||||
custom-url: 'appium.github.io/appium'
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name: 'Labeler'
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: read # change this if/when we want to label issues
|
||||
pull-requests: write
|
||||
statuses: read
|
||||
checks: read
|
||||
|
||||
jobs:
|
||||
labeler:
|
||||
if: ${{ github.repository == 'appium/appium' }}
|
||||
name: Labeler
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# follows semantic versioning. Lock to different version: v1, v1.5, v1.5.0 or use a commit hash.
|
||||
- uses: fuxingloh/multi-labeler@6704db0bcba106d07482efabbc79d3092af74fa2 # v2
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}} # optional, default to '${{ github.token }}'
|
||||
@@ -1,15 +1,15 @@
|
||||
name: Disallow "On Hold" PRs
|
||||
on:
|
||||
pull_request:
|
||||
pull_request_target:
|
||||
types: [opened, labeled, unlabeled, synchronize]
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
label-check:
|
||||
if: ${{ github.base_ref == 'master' && github.repository == 'appium/appium' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: danielchabr/pr-labels-checker@e1d7e79aa0933af1728011705a30528a279874fd # v3.1
|
||||
- name: Check for "On Hold" label
|
||||
uses: egmacke/action-check-label@0eb29f801fb482a95c9bd2dd22834ecc8f4e8af9 # v2
|
||||
with:
|
||||
id: check-labels
|
||||
hasNone: On Hold
|
||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||
label: On Hold
|
||||
state: absent
|
||||
|
||||
+5
-5
@@ -17,9 +17,9 @@ module.exports = (wallaby) => {
|
||||
},
|
||||
files: [
|
||||
'./packages/*/build/**/*',
|
||||
'./packages/*/lib/**/*.(j|t)s',
|
||||
'./packages/*/test/**/*helper*.(j|t)s',
|
||||
'./packages/*/test/**/*mock*.(j|t)s',
|
||||
'./packages/*/lib/**/*.{js,ts}',
|
||||
'./packages/*/test/**/*helper*.{js,ts}',
|
||||
'./packages/*/test/**/*mock*.{js,ts}',
|
||||
'./packages/*/package.json',
|
||||
'./packages/*/tsconfig*.json',
|
||||
'./packages/*/test/**/fixture?(s)/**/*',
|
||||
@@ -44,11 +44,11 @@ module.exports = (wallaby) => {
|
||||
pattern: './packages/typedoc-plugin-appium/lib/theme/resources/**',
|
||||
},
|
||||
'!./packages/*/test/**/*-specs.js',
|
||||
'!./packages/*/test/**/*.e2e.spec.(j|t)s',
|
||||
'!./packages/*/test/**/*.e2e.spec.{js,ts}',
|
||||
'!**/local_appium_home/**',
|
||||
],
|
||||
testFramework: 'mocha',
|
||||
tests: ['./packages/*/test/unit/**/*.spec.(j|t)s', '!**/local_appium_home/**'],
|
||||
tests: ['./packages/*/test/unit/**/*.spec.{js,ts}', '!**/local_appium_home/**'],
|
||||
workers: {
|
||||
// restart: true,
|
||||
},
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/lerna",
|
||||
"command": {
|
||||
"run": {
|
||||
"concurrency": 8
|
||||
@@ -12,6 +13,9 @@
|
||||
},
|
||||
"add": {
|
||||
"exact": true
|
||||
},
|
||||
"publish": {
|
||||
"message": "chore: publish"
|
||||
}
|
||||
},
|
||||
"ignoreChanges": ["**/test/**", "**/*.md"],
|
||||
|
||||
Generated
+224
-176
@@ -20,24 +20,24 @@
|
||||
"@types/chai-as-promised": "7.1.5",
|
||||
"@types/diff": "5.0.3",
|
||||
"@types/mocha": "10.0.1",
|
||||
"@types/node": "18.15.10",
|
||||
"@types/node": "18.15.11",
|
||||
"@types/semver": "7.3.13",
|
||||
"@types/sinon": "10.0.13",
|
||||
"@types/sinon-chai": "3.2.9",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/yargs": "17.0.24",
|
||||
"@typescript-eslint/eslint-plugin": "5.57.0",
|
||||
"@typescript-eslint/parser": "5.57.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.57.1",
|
||||
"@typescript-eslint/parser": "5.57.1",
|
||||
"asyncbox": "2.9.4",
|
||||
"chai": "4.3.7",
|
||||
"chai-as-promised": "7.1.1",
|
||||
"chai-webdriverio-async": "2.7.0",
|
||||
"cpy-cli": "4.2.0",
|
||||
"eslint": "8.36.0",
|
||||
"eslint": "8.38.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"eslint-find-rules": "4.1.0",
|
||||
"eslint-import-resolver-typescript": "3.5.3",
|
||||
"eslint-import-resolver-typescript": "3.5.5",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-mocha": "10.1.0",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
@@ -48,7 +48,7 @@
|
||||
"husky": "8.0.3",
|
||||
"json-schema-to-typescript": "12.0.0",
|
||||
"lerna": "6.6.1",
|
||||
"lint-staged": "13.2.0",
|
||||
"lint-staged": "13.2.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"midnight-smoker": "2.0.1",
|
||||
"mjpeg-consumer": "2.0.0",
|
||||
@@ -139,6 +139,10 @@
|
||||
"resolved": "packages/schema",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@appium/strongbox": {
|
||||
"resolved": "packages/strongbox",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@appium/support": {
|
||||
"resolved": "packages/support",
|
||||
"link": true
|
||||
@@ -731,13 +735,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
|
||||
"integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
|
||||
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.5.0",
|
||||
"espree": "^9.5.1",
|
||||
"globals": "^13.19.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
@@ -771,9 +775,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
|
||||
"integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
|
||||
"integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
@@ -4496,9 +4500,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.15.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.10.tgz",
|
||||
"integrity": "sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ=="
|
||||
"version": "18.15.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
|
||||
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q=="
|
||||
},
|
||||
"node_modules/@types/normalize-package-data": {
|
||||
"version": "2.4.1",
|
||||
@@ -4675,14 +4679,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz",
|
||||
"integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz",
|
||||
"integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==",
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/type-utils": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.1",
|
||||
"@typescript-eslint/type-utils": "5.57.1",
|
||||
"@typescript-eslint/utils": "5.57.1",
|
||||
"debug": "^4.3.4",
|
||||
"grapheme-splitter": "^1.0.4",
|
||||
"ignore": "^5.2.0",
|
||||
@@ -4708,13 +4712,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz",
|
||||
"integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz",
|
||||
"integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.1",
|
||||
"@typescript-eslint/types": "5.57.1",
|
||||
"@typescript-eslint/typescript-estree": "5.57.1",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4734,12 +4738,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz",
|
||||
"integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz",
|
||||
"integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0"
|
||||
"@typescript-eslint/types": "5.57.1",
|
||||
"@typescript-eslint/visitor-keys": "5.57.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -4750,12 +4754,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz",
|
||||
"integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz",
|
||||
"integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.1",
|
||||
"@typescript-eslint/utils": "5.57.1",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
@@ -4776,9 +4780,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz",
|
||||
"integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz",
|
||||
"integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==",
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
@@ -4788,12 +4792,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz",
|
||||
"integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz",
|
||||
"integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.1",
|
||||
"@typescript-eslint/visitor-keys": "5.57.1",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
@@ -4814,16 +4818,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz",
|
||||
"integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz",
|
||||
"integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.1",
|
||||
"@typescript-eslint/types": "5.57.1",
|
||||
"@typescript-eslint/typescript-estree": "5.57.1",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"semver": "^7.3.7"
|
||||
},
|
||||
@@ -4859,11 +4863,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz",
|
||||
"integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==",
|
||||
"version": "5.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz",
|
||||
"integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.1",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -5053,8 +5057,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@xmldom/xmldom": {
|
||||
"version": "0.8.6",
|
||||
"license": "MIT",
|
||||
"version": "0.8.7",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.7.tgz",
|
||||
"integrity": "sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
@@ -5316,8 +5321,9 @@
|
||||
"link": true
|
||||
},
|
||||
"node_modules/appium-adb": {
|
||||
"version": "9.10.24",
|
||||
"license": "Apache-2.0",
|
||||
"version": "9.11.0",
|
||||
"resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-9.11.0.tgz",
|
||||
"integrity": "sha512-lVI9eo48JMSFX+2j5xD5/Gx8HDuui3+EwmgoPqLaUtezeOtn4OEVaQCJPw4x2+KrnQDVe381AQsU5ozkou2jEQ==",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.0.0",
|
||||
"@babel/runtime": "^7.0.0",
|
||||
@@ -5618,9 +5624,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
|
||||
"integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz",
|
||||
"integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.0",
|
||||
@@ -8016,8 +8022,8 @@
|
||||
},
|
||||
"node_modules/env-paths": {
|
||||
"version": "2.2.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -8191,14 +8197,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz",
|
||||
"integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==",
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
|
||||
"integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.1",
|
||||
"@eslint/js": "8.36.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.38.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@@ -8209,8 +8215,8 @@
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-visitor-keys": "^3.3.0",
|
||||
"espree": "^9.5.0",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"esquery": "^1.4.2",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
@@ -8470,17 +8476,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-import-resolver-typescript": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz",
|
||||
"integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==",
|
||||
"version": "3.5.5",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz",
|
||||
"integrity": "sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
"enhanced-resolve": "^5.10.0",
|
||||
"get-tsconfig": "^4.2.0",
|
||||
"globby": "^13.1.2",
|
||||
"is-core-module": "^2.10.0",
|
||||
"enhanced-resolve": "^5.12.0",
|
||||
"eslint-module-utils": "^2.7.4",
|
||||
"get-tsconfig": "^4.5.0",
|
||||
"globby": "^13.1.3",
|
||||
"is-core-module": "^2.11.0",
|
||||
"is-glob": "^4.0.3",
|
||||
"synckit": "^0.8.4"
|
||||
"synckit": "^0.8.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
@@ -8729,11 +8736,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/eslint-visitor-keys": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
|
||||
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/glob-parent": {
|
||||
@@ -8764,13 +8774,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "9.5.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz",
|
||||
"integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==",
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
|
||||
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
|
||||
"dependencies": {
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
"eslint-visitor-keys": "^3.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -8780,11 +8790,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/espree/node_modules/eslint-visitor-keys": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
|
||||
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/esprima": {
|
||||
@@ -9652,9 +9665,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/get-tsconfig": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz",
|
||||
"integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==",
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz",
|
||||
"integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==",
|
||||
"funding": {
|
||||
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
|
||||
}
|
||||
@@ -12453,9 +12466,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lint-staged": {
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
|
||||
"integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
|
||||
"version": "13.2.1",
|
||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.1.tgz",
|
||||
"integrity": "sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chalk": "5.2.0",
|
||||
@@ -12495,9 +12508,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/lint-staged/node_modules/execa": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-7.0.0.tgz",
|
||||
"integrity": "sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
|
||||
"integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
@@ -12518,9 +12531,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/lint-staged/node_modules/human-signals": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz",
|
||||
"integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
|
||||
"integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14.18.0"
|
||||
@@ -15594,8 +15607,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/package-changed": {
|
||||
"version": "2.0.0",
|
||||
"license": "ISC",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/package-changed/-/package-changed-3.0.0.tgz",
|
||||
"integrity": "sha512-HSRbrO+Ab5AuqqYGSevtKJ1Yt96jW1VKV7wrp8K4SKj5tyDp/7D96uPCQyCPiNtWTEH/7nA3hZ4z2slbc9yFxg==",
|
||||
"dependencies": {
|
||||
"commander": "^6.2.0"
|
||||
},
|
||||
@@ -15605,7 +15619,8 @@
|
||||
},
|
||||
"node_modules/package-changed/node_modules/commander": {
|
||||
"version": "6.2.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
@@ -17260,8 +17275,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/shell-quote": {
|
||||
"version": "1.8.0",
|
||||
"license": "MIT",
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
|
||||
"integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
@@ -17587,6 +17603,14 @@
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/slugify": {
|
||||
"version": "1.6.6",
|
||||
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
|
||||
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/smart-buffer": {
|
||||
"version": "4.2.0",
|
||||
"dev": true,
|
||||
@@ -18992,9 +19016,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/type-fest": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.7.1.tgz",
|
||||
"integrity": "sha512-8LZNdvuztgxCF4eYpEmPYUPS0lbbByM2qHcp2oMxHZhWLIQB9QE36EeQ1PKwsUIDZXEP8HCBEmkBbT1//kLU4Q==",
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.8.0.tgz",
|
||||
"integrity": "sha512-FVNSzGQz9Th+/9R6Lvv7WIAkstylfHN2/JYxkyhhmKFYh9At2DST8t6L6Lref9eYO8PXFTfG9Sg1Agg0K3vq3Q==",
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
},
|
||||
@@ -19342,8 +19366,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vm2": {
|
||||
"version": "3.9.14",
|
||||
"license": "MIT",
|
||||
"version": "3.9.15",
|
||||
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.15.tgz",
|
||||
"integrity": "sha512-XqNqknHGw2avJo13gbIwLNZUumvrSHc9mLqoadFZTpo3KaNEJoe1I0lqTFhRXmXD7WkLyG01aaraXdXT0pa4ag==",
|
||||
"dependencies": {
|
||||
"acorn": "^8.7.0",
|
||||
"acorn-walk": "^8.2.0"
|
||||
@@ -19999,16 +20024,16 @@
|
||||
}
|
||||
},
|
||||
"packages/appium": {
|
||||
"version": "2.0.0-beta.58",
|
||||
"version": "2.0.0-beta.62",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.4",
|
||||
"@appium/base-plugin": "^2.2.4",
|
||||
"@appium/docutils": "^0.3.1",
|
||||
"@appium/base-driver": "^9.3.6",
|
||||
"@appium/base-plugin": "^2.2.6",
|
||||
"@appium/docutils": "^0.3.5",
|
||||
"@appium/schema": "^0.2.6",
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -20021,7 +20046,7 @@
|
||||
"argparse": "2.0.1",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"cross-env": "7.0.3",
|
||||
"find-up": "5.0.0",
|
||||
@@ -20030,12 +20055,12 @@
|
||||
"lodash": "4.17.21",
|
||||
"npmlog": "7.0.1",
|
||||
"ora": "5.4.1",
|
||||
"package-changed": "2.0.0",
|
||||
"package-changed": "3.0.0",
|
||||
"resolve-from": "5.0.0",
|
||||
"semver": "7.3.8",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"winston": "3.8.2",
|
||||
"wrap-ansi": "7.0.0",
|
||||
"yaml": "2.2.1"
|
||||
@@ -20189,11 +20214,11 @@
|
||||
},
|
||||
"packages/base-driver": {
|
||||
"name": "@appium/base-driver",
|
||||
"version": "9.3.4",
|
||||
"version": "9.3.6",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -20202,7 +20227,7 @@
|
||||
"@types/serve-favicon": "2.5.3",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"body-parser": "1.20.2",
|
||||
"es6-error": "4.1.1",
|
||||
@@ -20214,7 +20239,7 @@
|
||||
"morgan": "1.10.0",
|
||||
"serve-favicon": "2.5.0",
|
||||
"source-map-support": "0.5.21",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"validate.js": "0.13.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -20242,27 +20267,37 @@
|
||||
},
|
||||
"packages/base-plugin": {
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "2.2.4",
|
||||
"version": "2.2.6",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.4",
|
||||
"@appium/support": "^3.1.8"
|
||||
"@appium/base-driver": "^9.3.6",
|
||||
"@appium/support": "^3.1.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
"npm": ">=8"
|
||||
}
|
||||
},
|
||||
"packages/doctor": {
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.10",
|
||||
"packages/clerk": {
|
||||
"name": "@appium/clerk",
|
||||
"version": "0.1.0",
|
||||
"extraneous": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"env-paths": "2.2.1",
|
||||
"slugify": "1.6.6"
|
||||
}
|
||||
},
|
||||
"packages/doctor": {
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.12",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.10",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"appium-adb": "9.10.24",
|
||||
"appium-adb": "9.11.0",
|
||||
"bluebird": "3.7.2",
|
||||
"inquirer": "8.2.5",
|
||||
"lodash": "4.17.21",
|
||||
@@ -20280,12 +20315,12 @@
|
||||
},
|
||||
"packages/docutils": {
|
||||
"name": "@appium/docutils",
|
||||
"version": "0.3.1",
|
||||
"version": "0.3.5",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/typedoc-plugin-appium": "^0.5.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.1",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
"chalk": "4.1.2",
|
||||
"consola": "2.15.3",
|
||||
@@ -20301,7 +20336,7 @@
|
||||
"semver": "7.3.8",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"typedoc": "0.23.28",
|
||||
"typedoc-plugin-markdown": "3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "0.3.3",
|
||||
@@ -20384,13 +20419,13 @@
|
||||
},
|
||||
"packages/driver-test-support": {
|
||||
"name": "@appium/driver-test-support",
|
||||
"version": "0.4.2",
|
||||
"version": "0.4.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@types/lodash": "4.14.192",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"chai": "4.3.7",
|
||||
"get-port": "5.1.1",
|
||||
@@ -20398,7 +20433,7 @@
|
||||
"sinon": "15.0.3",
|
||||
"source-map-support": "0.5.21",
|
||||
"stoppable": "1.1.0",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -20421,7 +20456,7 @@
|
||||
},
|
||||
"packages/eslint-config-appium": {
|
||||
"name": "@appium/eslint-config-appium",
|
||||
"version": "8.0.2",
|
||||
"version": "8.0.3",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -20437,7 +20472,7 @@
|
||||
},
|
||||
"packages/eslint-config-appium-ts": {
|
||||
"name": "@appium/eslint-config-appium-ts",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -20457,14 +20492,14 @@
|
||||
},
|
||||
"packages/execute-driver-plugin": {
|
||||
"name": "@appium/execute-driver-plugin",
|
||||
"version": "3.0.9",
|
||||
"version": "3.0.11",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
"vm2": "3.9.14",
|
||||
"vm2": "3.9.15",
|
||||
"webdriverio": "7.30.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -20477,11 +20512,11 @@
|
||||
},
|
||||
"packages/fake-driver": {
|
||||
"name": "@appium/fake-driver",
|
||||
"version": "5.2.2",
|
||||
"version": "5.2.3",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@xmldom/xmldom": "0.8.6",
|
||||
"@xmldom/xmldom": "0.8.7",
|
||||
"asyncbox": "2.9.4",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -20501,11 +20536,11 @@
|
||||
},
|
||||
"packages/fake-plugin": {
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "3.1.8",
|
||||
"version": "3.1.10",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-plugin": "^2.2.4",
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/base-plugin": "^2.2.6",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -20521,10 +20556,10 @@
|
||||
},
|
||||
"packages/images-plugin": {
|
||||
"name": "@appium/images-plugin",
|
||||
"version": "2.0.8",
|
||||
"version": "2.0.10",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/opencv": "^2.0.8",
|
||||
"@appium/opencv": "^2.0.10",
|
||||
"lodash": "4.17.21",
|
||||
"lru-cache": "7.18.3",
|
||||
"source-map-support": "0.5.21"
|
||||
@@ -20547,7 +20582,7 @@
|
||||
},
|
||||
"packages/opencv": {
|
||||
"name": "@appium/opencv",
|
||||
"version": "2.0.8",
|
||||
"version": "2.0.10",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -20564,10 +20599,10 @@
|
||||
},
|
||||
"packages/plugin-test-support": {
|
||||
"name": "@appium/plugin-test-support",
|
||||
"version": "0.3.10",
|
||||
"version": "0.3.12",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/types": "^0.10.4",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
@@ -20612,13 +20647,26 @@
|
||||
"npm": ">=8"
|
||||
}
|
||||
},
|
||||
"packages/support": {
|
||||
"name": "@appium/support",
|
||||
"version": "3.1.8",
|
||||
"packages/strongbox": {
|
||||
"name": "@appium/strongbox",
|
||||
"version": "0.2.0",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/types": "^0.10.2",
|
||||
"env-paths": "2.2.1",
|
||||
"slugify": "1.6.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
"npm": ">=8"
|
||||
}
|
||||
},
|
||||
"packages/support": {
|
||||
"name": "@appium/support",
|
||||
"version": "3.1.10",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
@@ -20639,7 +20687,7 @@
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.1",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"base64-stream": "1.0.0",
|
||||
"bluebird": "3.7.2",
|
||||
"bplist-creator": "0.1.1",
|
||||
@@ -20667,11 +20715,11 @@
|
||||
"rimraf": "3.0.2",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"semver": "7.3.8",
|
||||
"shell-quote": "1.8.0",
|
||||
"shell-quote": "1.8.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"supports-color": "8.1.1",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"uuid": "9.0.0",
|
||||
"which": "3.0.0",
|
||||
"yauzl": "2.10.0"
|
||||
@@ -20835,10 +20883,10 @@
|
||||
},
|
||||
"packages/test-support": {
|
||||
"name": "@appium/test-support",
|
||||
"version": "3.0.10",
|
||||
"version": "3.0.12",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@colors/colors": "1.5.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -20857,7 +20905,7 @@
|
||||
},
|
||||
"packages/tsconfig": {
|
||||
"name": "@appium/tsconfig",
|
||||
"version": "0.2.4",
|
||||
"version": "0.3.0",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@tsconfig/node14": "1.0.3"
|
||||
@@ -20869,13 +20917,13 @@
|
||||
},
|
||||
"packages/typedoc-plugin-appium": {
|
||||
"name": "@appium/typedoc-plugin-appium",
|
||||
"version": "0.5.2",
|
||||
"version": "0.6.1",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"handlebars": "4.7.7",
|
||||
"lodash": "4.17.21",
|
||||
"pluralize": "8.0.0",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -20886,20 +20934,20 @@
|
||||
"typedoc": "^0.23.14",
|
||||
"typedoc-plugin-markdown": "^3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "~0.3.3",
|
||||
"typescript": "^4.7.0"
|
||||
"typescript": "^4.7.0 || ^5.0.0"
|
||||
}
|
||||
},
|
||||
"packages/types": {
|
||||
"name": "@appium/types",
|
||||
"version": "0.10.2",
|
||||
"version": "0.10.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/schema": "^0.2.6",
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/ws": "8.5.4",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -20908,11 +20956,11 @@
|
||||
},
|
||||
"packages/universal-xml-plugin": {
|
||||
"name": "@appium/universal-xml-plugin",
|
||||
"version": "1.0.7",
|
||||
"version": "1.0.8",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/xmldom": "0.1.31",
|
||||
"@xmldom/xmldom": "0.8.6",
|
||||
"@xmldom/xmldom": "0.8.7",
|
||||
"fast-xml-parser": "3.21.1",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
|
||||
+32
-25
@@ -27,47 +27,54 @@
|
||||
"packages/*"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"build:all": "run-s build build:packages",
|
||||
"build:packages": "lerna run build",
|
||||
"clean": "run-s clean:artifacts clean:workspaces",
|
||||
"clean:artifacts": "run-p \"clean:artifacts:*\"",
|
||||
"clean:artifacts:distfiles": "npx rimraf \"./packages/*/build\" \"./packages/*/.tsconfig.tsbuildinfo\"",
|
||||
"clean:artifacts:packages": "lerna run clean || true",
|
||||
"clean:workspaces": "lerna clean -y",
|
||||
"build": "run-s build:*",
|
||||
"build:compile": "tsc -b",
|
||||
"build:workspaces": "lerna run build",
|
||||
"ci": "npm ci",
|
||||
"dev": "run-s \"build -- --watch\"",
|
||||
"clean": "run-s clean:distfiles clean:workspaces",
|
||||
"clean:dangerously": "run-s clean:workspaces clean:force",
|
||||
"clean:deps": "lerna clean --yes",
|
||||
"clean:distfiles": "npx rimraf \"./packages/*/build\" \"./packages/*/**/.tsconfig.tsbuildinfo\"; npx nx reset",
|
||||
"clean:interactive": "git clean -d -x -i",
|
||||
"clean:force": "git clean -d -x -f",
|
||||
"clean:workspaces": "lerna run clean || true",
|
||||
"dev": "run-s build:compile \"build:workspaces\" \"build:compile -- --watch\"",
|
||||
"dev:docs": "npm run -w packages/appium dev:docs",
|
||||
"docs": "npm run -w packages/appium build:docs",
|
||||
"docs:preview": "npm run -w packages/appium build:docs:preview",
|
||||
"doctor": "node ./packages/doctor",
|
||||
"husky-install": "husky install",
|
||||
"generate-docs": "npm run --workspace=packages/appium generate-docs",
|
||||
"prepare": "run-p husky-install build:all",
|
||||
"husky-install": "husky install",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "run-s \"lint -- --fix\"",
|
||||
"lint:ci": "eslint --quiet .",
|
||||
"lint:commit": "commitlint",
|
||||
"lint:fix": "run-s \"lint -- --fix\"",
|
||||
"lint:staged": "lint-staged",
|
||||
"prepare": "run-p husky-install rebuild",
|
||||
"prepublishOnly": "run-s rebuild",
|
||||
"reinstall": "run-s clean ci",
|
||||
"rebuild": "run-s clean:artifacts build:all",
|
||||
"preversion": "run-s rebuild",
|
||||
"version": "run-s sync-pkgs stage-synced-pkgs",
|
||||
"rebuild": "run-s clean build",
|
||||
"reinstall": "run-s clean clean:deps ci",
|
||||
"reinstall:angry": "npm run clean:dangerously && npm ci",
|
||||
"release": "lerna publish",
|
||||
"stage-synced-pkgs": "git add -A packages/appium/README.md \"packages/*/package.json\"",
|
||||
"start": "appium",
|
||||
"sync-pkgs": "run-p sync-pkgs:*",
|
||||
"sync-pkgs:appium-readme": "sync-monorepo-packages --force --no-package-json --packages=packages/appium README.md",
|
||||
"sync-pkgs:common-fields": "sync-monorepo-packages --fields=author,license,bugs,homepage,engines",
|
||||
"sync-pkgs:keywords": "sync-monorepo-packages --field=keywords --packages=\"packages/*\" --packages=\"!packages/eslint-config-appium\" --packages=\"!packages/types\" --packages=\"!packages/typedoc-plugin-appium\" --packages=\"!packages/eslint-config-appium-ts\" ",
|
||||
"sync-pkgs:license": "sync-monorepo-packages --force --no-package-json LICENSE",
|
||||
"stage-synced-pkgs": "git add -A packages/appium/README.md \"packages/*/package.json\"",
|
||||
"test": "run-p lint build:all && run-p test:unit test:types",
|
||||
"test:ci": "run-s test:smoke test:unit test:e2e",
|
||||
"test": "run-s test:quick",
|
||||
"test:ci": "run-s test:smoke test:unit test:types test:e2e",
|
||||
"test:e2e": "lerna run --concurrency=2 test:e2e",
|
||||
"test:quick": "run-s lint test:unit test:types",
|
||||
"test:slow": "run-s test:quick test:smoke test:e2e",
|
||||
"test:smoke": "smoker --all test:smoke",
|
||||
"test:types": "lerna run test:types",
|
||||
"test:unit": "lerna run test",
|
||||
"typedoc": "typedoc --logLevel Verbose",
|
||||
"upload": "gulp github-upload",
|
||||
"preversion": "run-s sync-pkgs stage-synced-pkgs",
|
||||
"prepack": "npm run rebuild",
|
||||
"zip": "zip -qr ./appium.zip ./packages/appium",
|
||||
"zip-and-upload": "run-s zip upload"
|
||||
},
|
||||
@@ -85,24 +92,24 @@
|
||||
"@types/chai-as-promised": "7.1.5",
|
||||
"@types/diff": "5.0.3",
|
||||
"@types/mocha": "10.0.1",
|
||||
"@types/node": "18.15.10",
|
||||
"@types/node": "18.15.11",
|
||||
"@types/semver": "7.3.13",
|
||||
"@types/sinon": "10.0.13",
|
||||
"@types/sinon-chai": "3.2.9",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/yargs": "17.0.24",
|
||||
"@typescript-eslint/eslint-plugin": "5.57.0",
|
||||
"@typescript-eslint/parser": "5.57.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.57.1",
|
||||
"@typescript-eslint/parser": "5.57.1",
|
||||
"asyncbox": "2.9.4",
|
||||
"chai": "4.3.7",
|
||||
"chai-as-promised": "7.1.1",
|
||||
"chai-webdriverio-async": "2.7.0",
|
||||
"cpy-cli": "4.2.0",
|
||||
"eslint": "8.36.0",
|
||||
"eslint": "8.38.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"eslint-find-rules": "4.1.0",
|
||||
"eslint-import-resolver-typescript": "3.5.3",
|
||||
"eslint-import-resolver-typescript": "3.5.5",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-mocha": "10.1.0",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
@@ -113,7 +120,7 @@
|
||||
"husky": "8.0.3",
|
||||
"json-schema-to-typescript": "12.0.0",
|
||||
"lerna": "6.6.1",
|
||||
"lint-staged": "13.2.0",
|
||||
"lint-staged": "13.2.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"midnight-smoker": "2.0.1",
|
||||
"mjpeg-consumer": "2.0.0",
|
||||
|
||||
@@ -3,6 +3,51 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [2.0.0-beta.62](https://github.com/appium/appium/compare/appium@2.0.0-beta.61...appium@2.0.0-beta.62) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency axios to v1.3.5 ([6cf1480](https://github.com/appium/appium/commit/6cf14802b70a462beffc12a1134476596060c005))
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **appium:** make "ls" alias of "list" ([5ab2fea](https://github.com/appium/appium/commit/5ab2fea5768ef8c67270d49c920b9515ca1ff1e4))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [2.0.0-beta.61](https://github.com/appium/appium/compare/appium@2.0.0-beta.60...appium@2.0.0-beta.61) (2023-04-05)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [2.0.0-beta.60](https://github.com/appium/appium/compare/appium@2.0.0-beta.59...appium@2.0.0-beta.60) (2023-04-04)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [2.0.0-beta.59](https://github.com/appium/appium/compare/appium@2.0.0-beta.58...appium@2.0.0-beta.59) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** update dependency package-changed to v3 ([bbcaec9](https://github.com/appium/appium/commit/bbcaec9c05e93d522ae72e30368cecc876e16db7))
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [2.0.0-beta.58](https://github.com/appium/appium/compare/appium@2.0.0-beta.57...appium@2.0.0-beta.58) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -294,5 +294,5 @@ export {getServerArgs, getExtensionArgs};
|
||||
|
||||
/**
|
||||
* A tuple of argument aliases and argument options
|
||||
* @typedef {Map<string[],import('argparse').ArgumentOptions>} ArgumentDefinitions
|
||||
* @typedef {Map<[name: string]|[name: string, alias: string],import('argparse').ArgumentOptions>} ArgumentDefinitions
|
||||
*/
|
||||
|
||||
@@ -101,6 +101,13 @@ class ArgParser {
|
||||
try {
|
||||
const parsed = this.parser.parse_known_args(args);
|
||||
const [knownArgs, unknownArgs] = parsed;
|
||||
// XXX: you'd think that argparse, when given an alias for a subcommand,
|
||||
// would set this value to the original subcommand name, but it doesn't.
|
||||
if (knownArgs?.driverCommand === 'ls') {
|
||||
knownArgs.driverCommand = 'list';
|
||||
} else if (knownArgs?.pluginCommand === 'ls') {
|
||||
knownArgs.pluginCommand = 'list';
|
||||
}
|
||||
if (
|
||||
unknownArgs?.length &&
|
||||
(knownArgs.driverCommand === 'run' || knownArgs.pluginCommand === 'run')
|
||||
@@ -210,13 +217,14 @@ class ArgParser {
|
||||
});
|
||||
const extensionArgs = getExtensionArgs();
|
||||
/**
|
||||
* @type { {command: import('appium/types').CliExtensionSubcommand, args: import('./args').ArgumentDefinitions, help: string}[] }
|
||||
* @type { {command: import('appium/types').CliExtensionSubcommand, args: import('./args').ArgumentDefinitions, help: string, aliases?: import('argparse').SubArgumentParserOptions['aliases']}[] }
|
||||
*/
|
||||
const parserSpecs = [
|
||||
{
|
||||
command: 'list',
|
||||
args: extensionArgs[type].list,
|
||||
help: `List available and installed ${type}s`,
|
||||
aliases: ['ls'],
|
||||
},
|
||||
{
|
||||
command: 'install',
|
||||
@@ -242,15 +250,18 @@ class ArgParser {
|
||||
},
|
||||
];
|
||||
|
||||
for (const {command, args, help} of parserSpecs) {
|
||||
const parser = extSubParsers.add_parser(command, {help});
|
||||
for (const {command, args, help, aliases} of parserSpecs) {
|
||||
const parser = extSubParsers.add_parser(command, {help, aliases: aliases ?? []});
|
||||
|
||||
ArgParser._patchExit(parser);
|
||||
|
||||
for (const [flagsOrNames, opts] of args) {
|
||||
// add_argument mutates params so make sure to send in copies instead
|
||||
// @ts-ignore
|
||||
parser.add_argument(...flagsOrNames, {...opts});
|
||||
if (flagsOrNames.length === 2) {
|
||||
parser.add_argument(flagsOrNames[0], flagsOrNames[1], {...opts});
|
||||
} else {
|
||||
parser.add_argument(flagsOrNames[0], {...opts});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,17 +113,6 @@ async function logStartupInfo(args) {
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs the address and port the server is listening on
|
||||
* @param {string} address - Address
|
||||
* @param {number} port - Port
|
||||
* @returns {void}
|
||||
*/
|
||||
function logServerPort(address, port) {
|
||||
let logMessage = `Appium REST http interface listener started on ` + `${address}:${port}`;
|
||||
logger.info(logMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a list of `updateServer` functions from all extensions
|
||||
* @param {DriverNameMap} driverClasses
|
||||
@@ -374,7 +363,10 @@ async function main(args) {
|
||||
});
|
||||
}
|
||||
|
||||
logServerPort(parsedArgs.address, parsedArgs.port);
|
||||
logger.info(
|
||||
`Appium REST http interface listener started on ${parsedArgs.address}:${parsedArgs.port}${parsedArgs.basePath}`
|
||||
);
|
||||
|
||||
driverConfig.print();
|
||||
pluginConfig.print([...pluginClasses.values()]);
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ function makeDescription(schema) {
|
||||
* as understood by `argparse`.
|
||||
* @param {AppiumJSONSchema} subSchema - JSON schema for the option
|
||||
* @param {ArgSpec} argSpec - Argument spec tuple
|
||||
* @returns {[string[], import('argparse').ArgumentOptions]} Tuple of flag and options
|
||||
* @returns {[[string]|[string, string], import('argparse').ArgumentOptions]} Tuple of flag and options
|
||||
*/
|
||||
function subSchemaToArgDef(subSchema, argSpec) {
|
||||
let {type, appiumCliAliases, appiumCliTransformer, enum: enumValues} = subSchema;
|
||||
@@ -207,7 +207,10 @@ function subSchemaToArgDef(subSchema, argSpec) {
|
||||
}
|
||||
}
|
||||
|
||||
return [aliases, argOpts];
|
||||
// TODO: argparse only accepts the command name and a single alias; any extra aliases
|
||||
// will be silently discarded.
|
||||
const finalAliases = /** @type {[string]|[string, string]} */ (aliases);
|
||||
return [finalAliases, argOpts];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "appium",
|
||||
"version": "2.0.0-beta.58",
|
||||
"version": "2.0.0-beta.62",
|
||||
"description": "Automation for Apps.",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -49,9 +49,9 @@
|
||||
"build:docs:cli": "node docs/scripts/gen-cli-args-docs.js",
|
||||
"build:docs:reference": "node docs/scripts/build-reference.js",
|
||||
"dev:docs": "npm run build:docs:assets && npm run dev:docs:en",
|
||||
"dev:docs:en": "mkdocs serve -f ./docs/mkdocs-en.yml",
|
||||
"dev:docs:ja": "mkdocs serve -f ./docs/mkdocs-ja.yml",
|
||||
"dev:docs:zh": "mkdocs serve -f ./docs/mkdocs-zh.yml",
|
||||
"dev:docs:en": "appium-docs build --serve --mkdocs-yml ./docs/mkdocs-en.yml",
|
||||
"dev:docs:ja": "appium-docs build --serve --mkdocs-yml ./docs/mkdocs-ja.yml",
|
||||
"dev:docs:zh": "appium-docs build --serve --mkdocs-yml ./docs/mkdocs-zh.yml",
|
||||
"postinstall": "node ./scripts/autoinstall-extensions.js",
|
||||
"publish:docs": "cross-env APPIUM_DOCS_PUBLISH=1 npm run build:docs",
|
||||
"test": "npm run test:unit",
|
||||
@@ -60,12 +60,12 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.4",
|
||||
"@appium/base-plugin": "^2.2.4",
|
||||
"@appium/docutils": "^0.3.1",
|
||||
"@appium/base-driver": "^9.3.6",
|
||||
"@appium/base-plugin": "^2.2.6",
|
||||
"@appium/docutils": "^0.3.5",
|
||||
"@appium/schema": "^0.2.6",
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -78,7 +78,7 @@
|
||||
"argparse": "2.0.1",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"cross-env": "7.0.3",
|
||||
"find-up": "5.0.0",
|
||||
@@ -87,12 +87,12 @@
|
||||
"lodash": "4.17.21",
|
||||
"npmlog": "7.0.1",
|
||||
"ora": "5.4.1",
|
||||
"package-changed": "2.0.0",
|
||||
"package-changed": "3.0.0",
|
||||
"resolve-from": "5.0.0",
|
||||
"semver": "7.3.8",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"winston": "3.8.2",
|
||||
"wrap-ansi": "7.0.0",
|
||||
"yaml": "2.2.1"
|
||||
@@ -105,7 +105,7 @@
|
||||
"access": "public",
|
||||
"tag": "next"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/main.js"
|
||||
}
|
||||
|
||||
@@ -264,6 +264,14 @@ describe('parser', function () {
|
||||
const args = p.parseArgs([DRIVER_TYPE, 'list', '--updates']);
|
||||
args.showUpdates.should.eql(true);
|
||||
});
|
||||
it('should allow "ls" as an alias for "list"', function () {
|
||||
const args = p.parseArgs([DRIVER_TYPE, 'ls']);
|
||||
args.subcommand.should.eql(DRIVER_TYPE);
|
||||
args.driverCommand.should.eql('list');
|
||||
args.showInstalled.should.eql(false);
|
||||
args.showUpdates.should.eql(false);
|
||||
args.json.should.eql(false);
|
||||
});
|
||||
});
|
||||
describe('install', function () {
|
||||
it('should not allow an empty argument list', function () {
|
||||
|
||||
@@ -3,6 +3,29 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [9.3.6](https://github.com/appium/appium/compare/@appium/base-driver@9.3.5...@appium/base-driver@9.3.6) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency axios to v1.3.5 ([6cf1480](https://github.com/appium/appium/commit/6cf14802b70a462beffc12a1134476596060c005))
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [9.3.5](https://github.com/appium/appium/compare/@appium/base-driver@9.3.4...@appium/base-driver@9.3.5) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [9.3.4](https://github.com/appium/appium/compare/@appium/base-driver@9.3.3...@appium/base-driver@9.3.4) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-driver",
|
||||
"version": "9.3.4",
|
||||
"version": "9.3.6",
|
||||
"description": "Base driver class for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,8 +44,8 @@
|
||||
"test:types": "tsd"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -54,7 +54,7 @@
|
||||
"@types/serve-favicon": "2.5.3",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"body-parser": "1.20.2",
|
||||
"es6-error": "4.1.1",
|
||||
@@ -66,7 +66,7 @@
|
||||
"morgan": "1.10.0",
|
||||
"serve-favicon": "2.5.0",
|
||||
"source-map-support": "0.5.21",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"validate.js": "0.13.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -76,7 +76,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
},
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.2.6](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.5...@appium/base-plugin@2.2.6) (2023-04-10)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.5](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.4...@appium/base-plugin@2.2.5) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.4](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.3...@appium/base-plugin@2.2.4) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "2.2.4",
|
||||
"version": "2.2.6",
|
||||
"description": "The base plugin used to create Appium 2.0 plugins",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -40,8 +40,8 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.4",
|
||||
"@appium/support": "^3.1.8"
|
||||
"@appium/base-driver": "^9.3.6",
|
||||
"@appium/support": "^3.1.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"tags": [
|
||||
"appium"
|
||||
],
|
||||
|
||||
@@ -3,6 +3,25 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.12](https://github.com/appium/appium/compare/@appium/doctor@2.0.11...@appium/doctor@2.0.12) (2023-04-10)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.11](https://github.com/appium/appium/compare/@appium/doctor@2.0.10...@appium/doctor@2.0.11) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doctor:** update dependency appium-adb to v9.11.0 ([d8b6334](https://github.com/appium/appium/commit/d8b633406a68e88cdd945906dde3f23a2a566a71))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.10](https://github.com/appium/appium/compare/@appium/doctor@2.0.9...@appium/doctor@2.0.10) (2023-03-28)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.10",
|
||||
"version": "2.0.12",
|
||||
"description": "Test environment for fitness to run Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,11 +44,11 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"appium-adb": "9.10.24",
|
||||
"appium-adb": "9.11.0",
|
||||
"bluebird": "3.7.2",
|
||||
"inquirer": "8.2.5",
|
||||
"lodash": "4.17.21",
|
||||
@@ -63,5 +63,5 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,45 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.5](https://github.com/appium/appium/compare/@appium/docutils@0.3.4...@appium/docutils@0.3.5) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docutils:** properly respects log levels ([e9426fc](https://github.com/appium/appium/commit/e9426fcfecc1d47ab503fc72af4236c4f1ac4b1e))
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.4](https://github.com/appium/appium/compare/@appium/docutils@0.3.3...@appium/docutils@0.3.4) (2023-04-05)
|
||||
|
||||
**Note:** Version bump only for package @appium/docutils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.3](https://github.com/appium/appium/compare/@appium/docutils@0.3.2...@appium/docutils@0.3.3) (2023-04-04)
|
||||
|
||||
**Note:** Version bump only for package @appium/docutils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.2](https://github.com/appium/appium/compare/@appium/docutils@0.3.1...@appium/docutils@0.3.2) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.1](https://github.com/appium/appium/compare/@appium/docutils@0.3.0...@appium/docutils@0.3.1) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ import {
|
||||
} from '../constants';
|
||||
import {DocutilsError} from '../error';
|
||||
import {findMkDocsYml, readPackageJson, whichMike} from '../fs';
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
import {argify, spawnBackgroundProcess, SpawnBackgroundProcessOpts, stopwatch} from '../util';
|
||||
|
||||
const log = logger.withTag('builder:deploy');
|
||||
const log = getLogger('builder:deploy');
|
||||
|
||||
/**
|
||||
* Runs `mike serve`
|
||||
@@ -124,6 +124,7 @@ export async function deploy({
|
||||
// unsure about how SIGHUP is handled here
|
||||
await doServe(mikeArgs, serveOpts);
|
||||
} else {
|
||||
log.info('Deploying into branch %s', branch);
|
||||
const mikeArgs = [
|
||||
...argify(
|
||||
_.omitBy(
|
||||
@@ -138,7 +139,7 @@ export async function deploy({
|
||||
}
|
||||
await doDeploy(mikeArgs, execOpts);
|
||||
|
||||
log.success('Mike finished deployment into branch %s (%dms)', branch, stop());
|
||||
log.success('Finished deployment into branch %s (%dms)', branch, stop());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@ import {
|
||||
safeWriteFile,
|
||||
stringifyYaml,
|
||||
} from '../fs';
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
import {MkDocsYml, MkDocsYmlNav} from '../model';
|
||||
import {relative} from '../util';
|
||||
|
||||
const log = logger.withTag('builder:nav');
|
||||
const log = getLogger('builder:nav');
|
||||
|
||||
/**
|
||||
* Gets a list of `.md` files relative to `docs_dir`
|
||||
|
||||
@@ -16,10 +16,10 @@ import {
|
||||
} from '../constants';
|
||||
import {DocutilsError} from '../error';
|
||||
import {findTypeDocJsonPath, readTypedocJson} from '../fs';
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
import {argify, relative, stopwatch} from '../util';
|
||||
|
||||
const log = logger.withTag('builder:reference');
|
||||
const log = getLogger('builder:reference');
|
||||
|
||||
/**
|
||||
* Executes TypeDoc _in the current process_
|
||||
|
||||
@@ -5,16 +5,15 @@
|
||||
* @module
|
||||
*/
|
||||
|
||||
import {spawn, SpawnOptions} from 'node:child_process';
|
||||
import path from 'node:path';
|
||||
import {exec, TeenProcessExecOptions} from 'teen_process';
|
||||
import {NAME_BIN, NAME_MKDOCS, NAME_MKDOCS_YML, NAME_THEME} from '../constants';
|
||||
import {NAME_BIN, NAME_MKDOCS_YML, NAME_THEME} from '../constants';
|
||||
import {DocutilsError} from '../error';
|
||||
import {findMkDocsYml, readMkDocsYml, whichMkDocs} from '../fs';
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
import {relative, spawnBackgroundProcess, SpawnBackgroundProcessOpts, stopwatch} from '../util';
|
||||
|
||||
const log = logger.withTag('mkdocs');
|
||||
const log = getLogger('mkdocs');
|
||||
|
||||
/**
|
||||
* Runs `mkdocs serve`
|
||||
@@ -81,6 +80,7 @@ export async function buildSite({
|
||||
// unsure about how SIGHUP is handled here
|
||||
await doServe(mkdocsArgs, serveOpts);
|
||||
} else {
|
||||
log.info('Building site into %s (%dms)');
|
||||
await doBuild(mkdocsArgs, execOpts);
|
||||
let relSiteDir;
|
||||
if (siteDir) {
|
||||
@@ -90,7 +90,7 @@ export async function buildSite({
|
||||
log.debug('Found site_dir %s', siteDir);
|
||||
relSiteDir = relative(path.dirname(mkDocsYmlPath), siteDir!);
|
||||
}
|
||||
log.success('MkDocs finished building into %s (%dms)', relSiteDir, stop());
|
||||
log.success('Finnished building site into %s (%dms)', relSiteDir, stop());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
import {fs, util} from '@appium/support';
|
||||
import _ from 'lodash';
|
||||
import type {Options} from 'yargs';
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
|
||||
const log = logger.withTag('check');
|
||||
const log = getLogger('check');
|
||||
|
||||
/**
|
||||
* Given a list of objects with `id` and `path` props, filters out the ones that do not exist
|
||||
|
||||
@@ -7,11 +7,11 @@ import path from 'node:path';
|
||||
import type {CommandModule, InferredOptionTypes, Options} from 'yargs';
|
||||
import {buildReferenceDocs, buildSite, deploy, updateNav} from '../../builder';
|
||||
import {NAME_BIN} from '../../constants';
|
||||
import logger from '../../logger';
|
||||
import {getLogger} from '../../logger';
|
||||
import {stopwatch} from '../../util';
|
||||
import {checkMissingPaths} from '../check';
|
||||
|
||||
const log = logger.withTag('build');
|
||||
const log = getLogger('build');
|
||||
|
||||
enum BuildCommandGroup {
|
||||
Build = 'Build Config:',
|
||||
@@ -220,6 +220,7 @@ export default {
|
||||
);
|
||||
},
|
||||
async handler(args) {
|
||||
log.info('Building docs...');
|
||||
const stop = stopwatch('build');
|
||||
log.debug('Build command called with args: %O', args);
|
||||
if (!args.site && !args.reference) {
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
import _ from 'lodash';
|
||||
import type {CommandModule, InferredOptionTypes, Options} from 'yargs';
|
||||
import {init} from '../../init';
|
||||
import logger from '../../logger';
|
||||
import {getLogger} from '../../logger';
|
||||
import {stopwatch} from '../../util';
|
||||
import {checkMissingPaths} from '../check';
|
||||
|
||||
const log = logger.withTag('init');
|
||||
const log = getLogger('init');
|
||||
|
||||
enum InitCommandGroup {
|
||||
MkDocs = 'MkDocs Config:',
|
||||
|
||||
@@ -7,10 +7,10 @@ import {util} from '@appium/support';
|
||||
import type {CommandModule, InferredOptionTypes, Options} from 'yargs';
|
||||
import {DocutilsError} from '../../error';
|
||||
import {DocutilsValidator, ValidationKind} from '../../validate';
|
||||
import logger from '../../logger';
|
||||
import {getLogger} from '../../logger';
|
||||
import {checkMissingPaths} from '../check';
|
||||
|
||||
const log = logger.withTag('validate');
|
||||
const log = getLogger('validate');
|
||||
|
||||
enum ValidateCommandGroup {
|
||||
Behavior = 'Validation Behavior:',
|
||||
|
||||
@@ -11,10 +11,11 @@ import path from 'node:path';
|
||||
import YAML from 'yaml';
|
||||
import parser from 'yargs-parser';
|
||||
import {hideBin} from 'yargs/helpers';
|
||||
import {NAME_BIN} from '../constants';
|
||||
import logger from '../logger';
|
||||
import {DEFAULT_LOG_LEVEL, LogLevelMap, NAME_BIN} from '../constants';
|
||||
import {getLogger, initLogger, isLogLevelString} from '../logger';
|
||||
import {relative} from '../util';
|
||||
const log = logger.withTag('config');
|
||||
|
||||
const log = getLogger('config');
|
||||
|
||||
/**
|
||||
* `lilconfig` loader for YAML
|
||||
@@ -43,8 +44,19 @@ const loadEsm: Loader = (filepath: string) => import(filepath);
|
||||
export async function findConfig(argv: string[] = hideBin(process.argv)) {
|
||||
const preArgs = parser(argv);
|
||||
|
||||
if (preArgs.verbose || preArgs.logLevel === 'debug') {
|
||||
log.level = LogLevel.Debug;
|
||||
// if --verbose is used, set the log level to debug.
|
||||
// otherwise use --log-level or the default.
|
||||
let logLevel: LogLevel | keyof typeof LogLevelMap;
|
||||
if (preArgs.verbose) {
|
||||
logLevel = LogLevel.Debug;
|
||||
} else {
|
||||
// if the loglevel is valid, use it, otherwise use the default
|
||||
logLevel = isLogLevelString(preArgs.logLevel) ? preArgs.logLevel : DEFAULT_LOG_LEVEL;
|
||||
}
|
||||
initLogger(logLevel);
|
||||
|
||||
if (preArgs.noConfig) {
|
||||
log.debug('Not loading config because --no-config was provided');
|
||||
}
|
||||
|
||||
return preArgs.noConfig || preArgs.help || preArgs.version
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* @module
|
||||
*/
|
||||
|
||||
import logger from '../logger';
|
||||
import {getLogger} from '../logger';
|
||||
|
||||
import _ from 'lodash';
|
||||
import {hideBin} from 'yargs/helpers';
|
||||
@@ -20,7 +20,7 @@ import {sync as readPkg} from 'read-pkg';
|
||||
|
||||
const pkg = readPkg({cwd: fs.findRoot(__dirname)});
|
||||
|
||||
const log = logger.withTag('cli');
|
||||
const log = getLogger('cli');
|
||||
export async function main(argv = hideBin(process.argv)) {
|
||||
const config = await findConfig(argv);
|
||||
|
||||
@@ -56,24 +56,14 @@ export async function main(argv = hideBin(process.argv)) {
|
||||
describe: 'Disable config file discovery',
|
||||
},
|
||||
})
|
||||
.middleware([
|
||||
.middleware(
|
||||
/**
|
||||
* Configures logging; `--verbose` implies `--log-level=debug`
|
||||
* Writes a startup message
|
||||
*/
|
||||
(argv) => {
|
||||
if (argv.verbose) {
|
||||
argv.logLevel = 'debug';
|
||||
log.debug('Debug logging enabled via --verbose');
|
||||
}
|
||||
log.level = LogLevelMap[argv.logLevel];
|
||||
},
|
||||
/**
|
||||
* Writes a startup message, if logging is enabled
|
||||
*/
|
||||
async () => {
|
||||
() => {
|
||||
log.info(`${pkg.name} @ v${pkg.version} (Node.js ${process.version})`);
|
||||
},
|
||||
])
|
||||
}
|
||||
)
|
||||
.epilog(`Please report bugs at ${pkg.bugs?.url}`)
|
||||
.fail(
|
||||
/**
|
||||
@@ -85,8 +75,7 @@ export async function main(argv = hideBin(process.argv)) {
|
||||
log.error(error.message);
|
||||
} else {
|
||||
y.showHelp();
|
||||
console.log();
|
||||
log.error(msg ?? error.message);
|
||||
log.error(`\n\n${msg ?? error.message}`);
|
||||
}
|
||||
y.exit(1, error);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import {fs} from '@appium/support';
|
||||
import * as JSON5 from 'json5';
|
||||
import _ from 'lodash';
|
||||
import _pkgDir from 'pkg-dir';
|
||||
import logger from './logger';
|
||||
import {getLogger} from './logger';
|
||||
import {Application, TypeDocReader} from 'typedoc';
|
||||
import {
|
||||
NAME_TYPEDOC_JSON,
|
||||
@@ -26,7 +26,7 @@ import {
|
||||
import {DocutilsError} from './error';
|
||||
import {MkDocsYml} from './model';
|
||||
|
||||
const log = logger.withTag('fs');
|
||||
const log = getLogger('fs');
|
||||
|
||||
/**
|
||||
* Finds path to closest `package.json`
|
||||
|
||||
@@ -8,3 +8,4 @@ export * from './builder';
|
||||
export * from './validate';
|
||||
export * from './scaffold';
|
||||
export * from './constants';
|
||||
export * from './logger';
|
||||
|
||||
@@ -17,7 +17,7 @@ import {exec} from 'teen_process';
|
||||
import {Simplify} from 'type-fest';
|
||||
import {DocutilsError} from './error';
|
||||
import {createScaffoldTask, ScaffoldTaskOptions} from './scaffold';
|
||||
import logger from './logger';
|
||||
import {getLogger} from './logger';
|
||||
import {MkDocsYml, TsConfigJson, TypeDocJson} from './model';
|
||||
import _ from 'lodash';
|
||||
import {stringifyJson5, stringifyYaml} from './fs';
|
||||
@@ -54,8 +54,8 @@ const BASE_TSCONFIG_JSON: Readonly<TsConfigJson> = Object.freeze({
|
||||
},
|
||||
});
|
||||
|
||||
const log = logger.withTag('init');
|
||||
const dryRunLog = log.withTag('dry-run');
|
||||
const log = getLogger('init');
|
||||
const dryRunLog = getLogger('dry-run', log);
|
||||
|
||||
const DEFAULT_INCLUDE = ['lib', 'test', 'index.js'];
|
||||
/**
|
||||
|
||||
@@ -137,57 +137,58 @@ class DocutilsReporter extends FancyReporter {
|
||||
let globalLevel: LogLevel = LogLevelMap[DEFAULT_LOG_LEVEL];
|
||||
|
||||
/**
|
||||
* The logger from which all loggers are created. This one uses a unique tag and our custom reporter.
|
||||
* Type guard to see if a string is a recognized log level
|
||||
* @param level any value
|
||||
*/
|
||||
const rootLogger = createLogProxy(
|
||||
consola.create({defaults: {tag: 'docutils'}, reporters: [new DocutilsReporter()]})
|
||||
);
|
||||
|
||||
/**
|
||||
* @summary Creates a log-level-propagating proxy for a {@linkcode Consola} logger.
|
||||
* @description
|
||||
* Alright. So when you create a new logger via {@linkcode Consola.create}, it's basically a clone
|
||||
* of its parent with a new set of options.
|
||||
*
|
||||
* If we change the log level of the root logger (which we do: see `cli/index.ts`), we may (almost
|
||||
* certainly) have
|
||||
* child loggers which: a) have already been created and b) have inherited the old/default log level
|
||||
* from the root logger. We don't _want_ that (though this is likely a reasonable use case) for our
|
||||
* purposes.
|
||||
*
|
||||
* The implementation below solves the problem by maintaining its own singleton log level value, and
|
||||
* intercepts the `level` property of any logger created from the root logger.
|
||||
*
|
||||
* There are other ways to go about this which may be better, but this seemed pretty straightforward.
|
||||
*/
|
||||
function createLogProxy(logger: Consola): Consola {
|
||||
return new Proxy(logger, {
|
||||
get(target, prop, receiver) {
|
||||
if (prop === 'level') {
|
||||
return globalLevel;
|
||||
}
|
||||
if (prop === 'create') {
|
||||
const create = Reflect.get(target, prop, receiver) as Consola['create'];
|
||||
return (opts: ConsolaOptions) => createLogProxy(create.call(receiver, opts));
|
||||
}
|
||||
if (prop === '_defaults') {
|
||||
const defaults = Reflect.get(target, prop, receiver);
|
||||
return {...defaults, level: globalLevel};
|
||||
}
|
||||
return Reflect.get(target, prop, receiver);
|
||||
},
|
||||
set(target, prop, value, receiver) {
|
||||
if (prop === 'level') {
|
||||
globalLevel = value as LogLevel;
|
||||
return true;
|
||||
}
|
||||
return Reflect.set(target, prop, value, receiver);
|
||||
},
|
||||
});
|
||||
export function isLogLevelString(level: any): level is keyof typeof LogLevelMap {
|
||||
return level in LogLevelMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* The proxied root logger
|
||||
* @see {createLogProxy}
|
||||
* The logger from which all loggers are created. This one uses a unique tag and our custom reporter.
|
||||
*/
|
||||
export default rootLogger;
|
||||
const rootLogger = consola.create({
|
||||
defaults: {tag: 'docutils'},
|
||||
reporters: [new DocutilsReporter()],
|
||||
level: globalLevel,
|
||||
});
|
||||
// this prevents logging before `initLogger` is called
|
||||
rootLogger.pause();
|
||||
|
||||
/**
|
||||
* A map of tags to loggers
|
||||
*/
|
||||
const loggers: Map<string, WeakRef<Consola>> = new Map();
|
||||
|
||||
export function getLogger(tag: string, parent = rootLogger) {
|
||||
if (loggers.has(tag)) {
|
||||
const logger = loggers.get(tag)?.deref();
|
||||
if (logger) {
|
||||
return logger;
|
||||
}
|
||||
}
|
||||
const logger = parent.withTag(tag);
|
||||
logger.level = globalLevel;
|
||||
loggers.set(tag, new WeakRef(logger));
|
||||
return logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the logging system.
|
||||
*
|
||||
* This should only be called once. The loglevel cannot be changed once it is set.
|
||||
*
|
||||
* @remarks Child loggers seem to inherit the "paused" state of the parent, so when this is called, we must resume all of them.
|
||||
*/
|
||||
export const initLogger = _.once((level: keyof typeof LogLevelMap | LogLevel) => {
|
||||
globalLevel = isLogLevelString(level) ? LogLevelMap[level] : level;
|
||||
rootLogger.level = globalLevel;
|
||||
rootLogger.resume();
|
||||
for (const ref of loggers.values()) {
|
||||
const logger = ref.deref();
|
||||
if (logger) {
|
||||
logger.level = globalLevel;
|
||||
logger.resume();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
import {fs} from '@appium/support';
|
||||
import logger from './logger';
|
||||
import {getLogger} from './logger';
|
||||
import path from 'node:path';
|
||||
import {createPatch} from 'diff';
|
||||
import {NormalizedPackageJson} from 'read-pkg';
|
||||
@@ -15,8 +15,8 @@ import _ from 'lodash';
|
||||
import {stringifyJson, readPackageJson, safeWriteFile} from './fs';
|
||||
import {NAME_ERR_ENOENT, NAME_ERR_EEXIST} from './constants';
|
||||
|
||||
const log = logger.withTag('init');
|
||||
const dryRunLog = log.withTag('dry-run');
|
||||
const log = getLogger('init');
|
||||
const dryRunLog = getLogger('dry-run', log);
|
||||
|
||||
/**
|
||||
* Creates a unified patch for display in "dry run" mode
|
||||
|
||||
@@ -40,7 +40,7 @@ import {
|
||||
whichPython,
|
||||
readMkDocsYml,
|
||||
} from './fs';
|
||||
import logger from './logger';
|
||||
import {getLogger} from './logger';
|
||||
import {MkDocsYml, PipPackage, TypeDocJson} from './model';
|
||||
import {relative} from './util';
|
||||
|
||||
@@ -64,7 +64,7 @@ const TYPEDOC_VERSION_REGEX = /TypeDoc\s(\d+\.\d+\..+)/;
|
||||
*/
|
||||
const MKDOCS_VERSION_REGEX = /mkdocs,\s+version\s+(\d+\.\d+\.\S+)/;
|
||||
|
||||
const log = logger.withTag('validate');
|
||||
const log = getLogger('validate');
|
||||
|
||||
/**
|
||||
* The "kinds" of validation which were requested to be performed
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/docutils",
|
||||
"version": "0.3.1",
|
||||
"version": "0.3.5",
|
||||
"description": "Documentation generation utilities for Appium and related projects",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -49,9 +49,9 @@
|
||||
"start": "node ./build/lib/cli/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/typedoc-plugin-appium": "^0.5.2",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.1",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
"chalk": "4.1.2",
|
||||
"consola": "2.15.3",
|
||||
@@ -67,7 +67,7 @@
|
||||
"semver": "7.3.8",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"typedoc": "0.23.28",
|
||||
"typedoc-plugin-markdown": "3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "0.3.3",
|
||||
@@ -83,5 +83,5 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
mkdocs==1.4.2
|
||||
mkdocs-material==9.1.4
|
||||
mkdocs-material==9.1.6
|
||||
mkdocs-material-extensions==1.1.1
|
||||
mike==1.1.2
|
||||
|
||||
@@ -3,6 +3,29 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.4](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.3...@appium/driver-test-support@0.4.4) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency axios to v1.3.5 ([6cf1480](https://github.com/appium/appium/commit/6cf14802b70a462beffc12a1134476596060c005))
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.3](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.2...@appium/driver-test-support@0.4.3) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.2](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.1...@appium/driver-test-support@0.4.2) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/driver-test-support",
|
||||
"version": "0.4.2",
|
||||
"version": "0.4.4",
|
||||
"description": "Test utilities for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,10 +41,10 @@
|
||||
},
|
||||
"types": "./build/lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@types/lodash": "4.14.192",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"bluebird": "3.7.2",
|
||||
"chai": "4.3.7",
|
||||
"get-port": "5.1.1",
|
||||
@@ -52,7 +52,7 @@
|
||||
"sinon": "15.0.3",
|
||||
"source-map-support": "0.5.21",
|
||||
"stoppable": "1.1.0",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"appium": "^2.0.0-beta.43",
|
||||
@@ -65,5 +65,8 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
},
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.1](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@0.3.0...@appium/eslint-config-appium-ts@0.3.1) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/eslint-config-appium-ts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [0.3.0](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@0.2.0...@appium/eslint-config-appium-ts@0.3.0) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/eslint-config-appium-ts",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1",
|
||||
"description": "Shared ESLint config for Appium projects (TypeScript version)",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
@@ -44,5 +44,6 @@
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
},
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [8.0.3](https://github.com/appium/appium/compare/@appium/eslint-config-appium@8.0.2...@appium/eslint-config-appium@8.0.3) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/eslint-config-appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.0.2](https://github.com/appium/appium/compare/@appium/eslint-config-appium@8.0.1...@appium/eslint-config-appium@8.0.2) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/eslint-config-appium",
|
||||
"version": "8.0.2",
|
||||
"version": "8.0.3",
|
||||
"description": "Shared ESLint config for Appium projects",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
@@ -43,5 +43,5 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "5c7af8ee73078018e4ec52fccf19fe3f77249d72"
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,25 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.0.11](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.10...@appium/execute-driver-plugin@3.0.11) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **execute-driver-plugin:** update dependency vm2 to v3.9.15 ([5790924](https://github.com/appium/appium/commit/5790924bf89d55352bd5e20b14377b2bffc0cbf1))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.10](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.9...@appium/execute-driver-plugin@3.0.10) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/execute-driver-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.9](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.8...@appium/execute-driver-plugin@3.0.9) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/execute-driver-plugin",
|
||||
"version": "3.0.9",
|
||||
"version": "3.0.11",
|
||||
"description": "Plugin for batching and executing driver commands with Appiums",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -42,7 +42,7 @@
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
"vm2": "3.9.14",
|
||||
"vm2": "3.9.15",
|
||||
"webdriverio": "7.30.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -59,7 +59,7 @@
|
||||
"pluginName": "execute-driver",
|
||||
"mainClass": "ExecuteDriverPlugin"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/plugin.js"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [5.2.3](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.2...@appium/fake-driver@5.2.3) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **universal-xml-plugin:** update dependency @xmldom/xmldom to v0.8.7 ([b9d339e](https://github.com/appium/appium/commit/b9d339eaf3527a0642f4fd904f447c80e2c2165b))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [5.2.2](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.1...@appium/fake-driver@5.2.2) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-driver",
|
||||
"version": "5.2.2",
|
||||
"version": "5.2.3",
|
||||
"description": "Mock driver used internally by Appium for testing. Ignore",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -47,7 +47,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@xmldom/xmldom": "0.8.6",
|
||||
"@xmldom/xmldom": "0.8.7",
|
||||
"asyncbox": "2.9.4",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -83,5 +83,5 @@
|
||||
"entryPoint": "./lib/index.js"
|
||||
},
|
||||
"types": "./build/lib/index.d.ts",
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.1.10](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.9...@appium/fake-plugin@3.1.10) (2023-04-10)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.9](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.8...@appium/fake-plugin@3.1.9) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.8](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.7...@appium/fake-plugin@3.1.8) (2023-03-28)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "3.1.8",
|
||||
"version": "3.1.10",
|
||||
"description": "A fake Appium 2.0 plugin",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -39,8 +39,8 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-plugin": "^2.2.4",
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/base-plugin": "^2.2.6",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -64,7 +64,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"tags": [
|
||||
"appium"
|
||||
],
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.10](https://github.com/appium/appium/compare/@appium/images-plugin@2.0.9...@appium/images-plugin@2.0.10) (2023-04-05)
|
||||
|
||||
**Note:** Version bump only for package @appium/images-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.9](https://github.com/appium/appium/compare/@appium/images-plugin@2.0.8...@appium/images-plugin@2.0.9) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/images-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.8](https://github.com/appium/appium/compare/@appium/images-plugin@2.0.7...@appium/images-plugin@2.0.8) (2023-03-08)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/images-plugin",
|
||||
"version": "2.0.8",
|
||||
"version": "2.0.10",
|
||||
"description": "Plugin for working with images and image elements in Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -39,7 +39,7 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/opencv": "^2.0.8",
|
||||
"@appium/opencv": "^2.0.10",
|
||||
"lodash": "4.17.21",
|
||||
"lru-cache": "7.18.3",
|
||||
"source-map-support": "0.5.21"
|
||||
|
||||
@@ -3,6 +3,25 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.10](https://github.com/appium/appium/compare/@appium/opencv@2.0.9...@appium/opencv@2.0.10) (2023-04-05)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **opencv:** fix a type error causing typedoc problems ([bb11d1c](https://github.com/appium/appium/commit/bb11d1cfe9681ccd457f0677118725a6e9ddd72f))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.9](https://github.com/appium/appium/compare/@appium/opencv@2.0.8...@appium/opencv@2.0.9) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/opencv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.8](https://github.com/appium/appium/compare/@appium/opencv@2.0.7...@appium/opencv@2.0.8) (2023-03-08)
|
||||
|
||||
|
||||
|
||||
@@ -360,12 +360,12 @@ async function getImagesMatches(img1Data, img2Data, options = {}) {
|
||||
* as an image (useful for debugging purposes)
|
||||
* @property {string} method [TM_CCOEFF_NORMED] The name of the template matching method.
|
||||
* Acceptable values are:
|
||||
* - TM_CCOEFF
|
||||
* - TM_CCOEFF_NORMED (default)
|
||||
* - TM_CCORR
|
||||
* - TM_CCORR_NORMED
|
||||
* - TM_SQDIFF
|
||||
* - TM_SQDIFF_NORMED
|
||||
* - `TM_CCOEFF`
|
||||
* - `TM_CCOEFF_NORMED` (default)
|
||||
* - `TM_CCORR`
|
||||
* - `TM_CCORR_NORMED`
|
||||
* - `TM_SQDIFF`
|
||||
* - `TM_SQDIFF_NORMED`
|
||||
* Read https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html
|
||||
* for more details.
|
||||
*/
|
||||
@@ -475,7 +475,7 @@ async function getImagesSimilarity(img1Data, img2Data, options = {}) {
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {'TM_CCOEFF'|'TM_CCOEFF_NORMED|'TM_CCORR'|'TM_CCORR_NORMED'|'TM_SQDIFF'|'TMSQDIFF_NORMED'} OccurrenceResultMethod
|
||||
* @typedef {'TM_CCOEFF'|'TM_CCOEFF_NORMED'|'TM_CCORR'|'TM_CCORR_NORMED'|'TM_SQDIFF'|'TMSQDIFF_NORMED'} OccurrenceResultMethod
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -492,12 +492,12 @@ async function getImagesSimilarity(img1Data, img2Data, options = {}) {
|
||||
* - only when multiple option is passed
|
||||
* @property {OccurrenceResultMethod} [method='TM_CCOEFF_NORMED'] The name of the template matching method.
|
||||
* Acceptable values are:
|
||||
* - TM_CCOEFF
|
||||
* - TM_CCOEFF_NORMED (default)
|
||||
* - TM_CCORR
|
||||
* - TM_CCORR_NORMED
|
||||
* - TM_SQDIFF
|
||||
* - TM_SQDIFF_NORMED
|
||||
* - `TM_CCOEFF`
|
||||
* - `TM_CCOEFF_NORMED` (default)
|
||||
* - `TM_CCORR`
|
||||
* - `TM_CCORR_NORMED`
|
||||
* - `TM_SQDIFF`
|
||||
* - `TM_SQDIFF_NORMED`
|
||||
* Read https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/opencv",
|
||||
"version": "2.0.8",
|
||||
"version": "2.0.10",
|
||||
"description": "OpenCV-related helper library",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -55,5 +55,8 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.12](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.11...@appium/plugin-test-support@0.3.12) (2023-04-10)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.11](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.10...@appium/plugin-test-support@0.3.11) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.10](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.9...@appium/plugin-test-support@0.3.10) (2023-03-28)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/plugin-test-support",
|
||||
"version": "0.3.10",
|
||||
"version": "0.3.12",
|
||||
"description": "Testing utilities for Appium plugins",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,7 +41,7 @@
|
||||
"test:unit": "exit 0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/types": "^0.10.4",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
@@ -58,5 +58,8 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/harness.js"
|
||||
},
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Change Log
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# 0.2.0 (2023-04-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **strongbox:** create @appium/strongbox ([fd91234](https://github.com/appium/appium/commit/fd912346fade8f29f5b4d1458828ea677d7e9fcc))
|
||||
* **strongbox:** export BaseItem ([377e982](https://github.com/appium/appium/commit/377e9825de74d9929631fb331e6d348c9df0964e))
|
||||
@@ -0,0 +1,96 @@
|
||||
# @appium/strongbox
|
||||
|
||||
> Persistent storage for Appium extensions
|
||||
|
||||
## Summary
|
||||
|
||||
This package is intended to be used in [Appium](https://appium.io) extensions which need to persist data between Appium runs. An example of such data may be a device token or key.
|
||||
|
||||
`@appium/strongbox` provides a simple and extensible API for managing such data, while abstracting the underlying storage mechanism.
|
||||
|
||||
_Note:_ This module is not intended for storing sensitive data.
|
||||
|
||||
## Usage
|
||||
|
||||
First, create an instance of `Strongbox`:
|
||||
|
||||
```ts
|
||||
import {strongbox} from '@appium/strongbox';
|
||||
|
||||
const box = strongbox('my-pkg');
|
||||
```
|
||||
|
||||
This instance corresponds to a unique collection of data.
|
||||
|
||||
From here, create a placeholder for data (you will need to provide the type of data you intend to store):
|
||||
|
||||
```ts
|
||||
const item = await box.createItem<string>('my unique name');
|
||||
```
|
||||
|
||||
...or, if you already have the data on-hand:
|
||||
|
||||
```ts
|
||||
const item: Buffer|string = getSomeData();
|
||||
|
||||
const item = await box.createItemWithContents('my unique name', data);
|
||||
```
|
||||
|
||||
Either way, you can read its contents:
|
||||
|
||||
```ts
|
||||
// if the item doesn't exist, this result will be undefined
|
||||
const contents = await item.read();
|
||||
```
|
||||
|
||||
Or write new data to the item:
|
||||
|
||||
```ts
|
||||
await item.write('new stuff');
|
||||
```
|
||||
|
||||
The last-read contents of the `Item` will be available on the `contents` property, but the value of this property is only current as of the last `read()`:
|
||||
|
||||
```ts
|
||||
const {contents} = item;
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
In lieu of actual documentation, look at the type definitions that this package ships.
|
||||
|
||||
## Customization
|
||||
|
||||
1. Create a class that implements the `Item` interface:
|
||||
|
||||
```ts
|
||||
import {strongbox, Item} from '@appium/strongbox';
|
||||
import {Foo, getFoo} from 'somewhere/else';
|
||||
|
||||
class FooItem implements Item<Foo> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
2. Provide this class as the `defaultCtor` option to `strongbox()`:
|
||||
|
||||
```ts
|
||||
const box = strongbox('my-pkg', {defaultCtor: FooItem});
|
||||
```
|
||||
|
||||
3. Use like you would any other `Strongbox` instance:
|
||||
|
||||
```ts
|
||||
const foo: Foo = getFoo();
|
||||
const item = await box.createItemWithValue('my unique name', Foo);
|
||||
```
|
||||
|
||||
## Default Behavior, For the Curious
|
||||
|
||||
Out-of-the-box, a `Strongbox` instance corresponds to a directory on-disk, and each `Item` (returned by `createItem()/createItemWithContents()`) corresponds to a file within that directory.
|
||||
|
||||
The directory of the `Strongbox` instance is determined by the [env-paths](https://www.npmjs.com/package/env-paths) package, and is platform-specific.
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2023 OpenJS Foundation. Licensed Apache-2.0
|
||||
@@ -0,0 +1,95 @@
|
||||
import {mkdir, readFile, unlink, writeFile} from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
import type {Item, ItemEncoding, Value} from '.';
|
||||
import {slugify} from './util';
|
||||
|
||||
/**
|
||||
* Base item implementation
|
||||
*
|
||||
* @remarks This class is not intended to be instantiated directly
|
||||
* @typeParam T - Type of data stored in the `Item`
|
||||
*/
|
||||
export class BaseItem<T extends Value> implements Item<T> {
|
||||
/**
|
||||
* {@inheritdoc Item.value}
|
||||
*/
|
||||
protected _value?: T | undefined;
|
||||
|
||||
/**
|
||||
* Unique slugified identifier
|
||||
*/
|
||||
public readonly id: string;
|
||||
|
||||
/**
|
||||
* {@inheritdoc Item.value}
|
||||
*/
|
||||
public readonly value: T | undefined;
|
||||
|
||||
/**
|
||||
* Slugifies the name
|
||||
* @param name Name of instance
|
||||
* @param container Slugified name of container
|
||||
* @param encoding Defaults to `utf8`
|
||||
*/
|
||||
constructor(
|
||||
public readonly name: string,
|
||||
public readonly container: string,
|
||||
public readonly encoding: ItemEncoding = 'utf8'
|
||||
) {
|
||||
this.id = path.join(container, slugify(name));
|
||||
|
||||
Object.defineProperties(this, {
|
||||
value: {
|
||||
get() {
|
||||
return this._value;
|
||||
},
|
||||
enumerable: true,
|
||||
},
|
||||
_value: {
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc Item.read}
|
||||
*/
|
||||
public async read(): Promise<T | undefined> {
|
||||
try {
|
||||
this._value = (await readFile(this.id, {
|
||||
encoding: this.encoding,
|
||||
})) as T;
|
||||
} catch (e) {
|
||||
if ((e as NodeJS.ErrnoException).code !== 'ENOENT') {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
return this._value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc Item.write}
|
||||
*/
|
||||
public async write(value: T): Promise<void> {
|
||||
if (this._value !== value) {
|
||||
await mkdir(path.dirname(this.id), {recursive: true});
|
||||
await writeFile(this.id, value, this.encoding);
|
||||
this._value = value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc Item.clear}
|
||||
*/
|
||||
public async clear(): Promise<void> {
|
||||
try {
|
||||
await unlink(this.id);
|
||||
this._value = undefined;
|
||||
} catch (e) {
|
||||
if ((e as NodeJS.ErrnoException).code !== 'ENOENT') {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,293 @@
|
||||
import envPaths from 'env-paths';
|
||||
import path from 'node:path';
|
||||
import {BaseItem} from './base-item';
|
||||
import {slugify, slugifyPath} from './util';
|
||||
|
||||
/**
|
||||
* Valid file encodings.
|
||||
*
|
||||
* `null` means the file should be read and written as a `Buffer`.
|
||||
*/
|
||||
export type ItemEncoding = BufferEncoding | null;
|
||||
|
||||
/**
|
||||
* Valid value wrapped by {@linkcode Item}. Can be an encoded string or `Buffer`
|
||||
*/
|
||||
export type Value = string | Buffer;
|
||||
|
||||
/**
|
||||
* An object representing a persisted item containing something of type `T` (which can be a {@linkcode Buffer} or an encoded string; see {@linkcode ItemEncoding}).
|
||||
*
|
||||
* A {@linkcode Item} does not know anything about where it is stored, or how it is stored.
|
||||
* @typeParam T - Type of data stored in the item
|
||||
*/
|
||||
export interface Item<T extends Value> {
|
||||
/**
|
||||
* Encoding of underlying value
|
||||
*/
|
||||
encoding: ItemEncoding;
|
||||
/**
|
||||
* Slugified name
|
||||
*/
|
||||
id: string;
|
||||
/**
|
||||
* Name of item
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* Reads value
|
||||
*/
|
||||
read(): Promise<T | undefined>;
|
||||
/**
|
||||
* Writes value
|
||||
* @param value New value
|
||||
*/
|
||||
write(value: T): Promise<void>;
|
||||
|
||||
/**
|
||||
* Deletes the item.
|
||||
*/
|
||||
clear(): Promise<void>;
|
||||
|
||||
/**
|
||||
* Last known value (stored in memory)
|
||||
*
|
||||
* @remarks A custom {@linkcode Item} meant to handle very large files should probably not implement this.
|
||||
*/
|
||||
value?: T | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set of known `Item` encodings
|
||||
* @internal
|
||||
*/
|
||||
const ITEM_ENCODINGS: Readonly<Set<ItemEncoding>> = new Set([
|
||||
'ascii',
|
||||
'utf8',
|
||||
'utf-8',
|
||||
'utf16le',
|
||||
'ucs2',
|
||||
'ucs-2',
|
||||
'base64',
|
||||
'base64url',
|
||||
'latin1',
|
||||
'binary',
|
||||
'hex',
|
||||
null,
|
||||
]);
|
||||
|
||||
/**
|
||||
* Type guard for encodings
|
||||
* @param value any
|
||||
* @returns `true` is `value` is a valid file encoding
|
||||
*/
|
||||
function isEncoding(value: any): value is ItemEncoding {
|
||||
return ITEM_ENCODINGS.has(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@linkcode StrongboxOpts}
|
||||
*/
|
||||
export const DEFAULT_SUFFIX = 'strongbox';
|
||||
|
||||
/**
|
||||
* A constructor function which instantiates a {@linkcode Item}.
|
||||
*/
|
||||
export type ItemCtor<T extends Value> = new (
|
||||
name: string,
|
||||
container: string,
|
||||
encoding?: ItemEncoding
|
||||
) => Item<T>;
|
||||
|
||||
/**
|
||||
* Main entry point for use of this module
|
||||
*
|
||||
* Manages multiple {@linkcode Item}s.
|
||||
*/
|
||||
export class Strongbox {
|
||||
/**
|
||||
* Default {@linkcode ItemCtor} to use when creating new {@linkcode Item}s
|
||||
*/
|
||||
protected defaultItemCtor: ItemCtor<any>;
|
||||
/**
|
||||
* Slugified name of this instance; corresponds to the directory name.
|
||||
*
|
||||
* If `dir` is provided, this value is unused.
|
||||
* If `suffix` is provided, then this will be the parent directory of `suffix`.
|
||||
*/
|
||||
public readonly id: string;
|
||||
|
||||
/**
|
||||
* Override the directory of this container.
|
||||
*
|
||||
* If this is present, both `suffix` and `containerId` are unused.
|
||||
*/
|
||||
public readonly container: string;
|
||||
|
||||
/**
|
||||
* Store of known {@linkcode Item}s
|
||||
* @internal
|
||||
*/
|
||||
protected items: Map<string, WeakRef<Item<any>>>;
|
||||
|
||||
/**
|
||||
* Slugifies the name & determines the directory
|
||||
* @param name Name of instance
|
||||
* @param opts Options
|
||||
*/
|
||||
protected constructor(
|
||||
public readonly name: string,
|
||||
{
|
||||
container,
|
||||
suffix = DEFAULT_SUFFIX,
|
||||
defaultItemCtor: defaultCtor = BaseItem,
|
||||
}: StrongboxOpts = {}
|
||||
) {
|
||||
this.id = slugify(name);
|
||||
this.defaultItemCtor = defaultCtor;
|
||||
this.items = new Map();
|
||||
this.container = container
|
||||
? slugifyPath(container)
|
||||
: path.join(envPaths(this.id).data, slugify(suffix));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@linkcode Strongbox}
|
||||
* @param name Name of instance
|
||||
* @param opts Options
|
||||
* @returns New instance
|
||||
*/
|
||||
public static create(name: string, opts?: StrongboxOpts) {
|
||||
return new Strongbox(name, opts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@linkcode Item}.
|
||||
*
|
||||
* Reads the item, if it is already persisted. Does not throw if missing.
|
||||
* @param name Unique name of item
|
||||
* @param encoding Encoding of item; defaults to `utf8`
|
||||
* @returns New `Item`
|
||||
* @typeParam T - Type of data stored in the `Item`
|
||||
*/
|
||||
async createItem<T extends Value>(
|
||||
name: string,
|
||||
ctor?: ItemCtor<T>,
|
||||
encoding?: ItemEncoding
|
||||
): Promise<Item<T>>;
|
||||
async createItem<T extends Value>(name: string, encoding?: ItemEncoding): Promise<Item<T>>;
|
||||
async createItem<T extends Value>(
|
||||
name: string,
|
||||
encodingOrCtor?: ItemEncoding | ItemCtor<T>,
|
||||
encoding?: ItemEncoding
|
||||
): Promise<Item<T>> {
|
||||
if (isEncoding(encodingOrCtor)) {
|
||||
encoding = encodingOrCtor;
|
||||
encodingOrCtor = this.defaultItemCtor;
|
||||
}
|
||||
const item = new (encodingOrCtor ?? (this.defaultItemCtor as ItemCtor<T>))(
|
||||
name,
|
||||
this.container,
|
||||
encoding
|
||||
);
|
||||
if (this.items.has(item.id)) {
|
||||
throw new ReferenceError(`Item with id "${item.id}" already exists`);
|
||||
}
|
||||
try {
|
||||
await item.read();
|
||||
} catch (e) {
|
||||
if ((e as NodeJS.ErrnoException).code !== 'ENOENT') {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
this.items.set(item.id, new WeakRef(item));
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@linkcode Item} then immediately writes value to it.
|
||||
*
|
||||
* If it exists already, it will be overwritten.
|
||||
* @param name Name of `Item`
|
||||
* @param value File value to write
|
||||
* @param ctor Specific {@linkcode ItemCtor} to use
|
||||
* @param encoding File encoding
|
||||
* @returns New `Item` w/ value of `value`
|
||||
*/
|
||||
async createItemWithValue<T extends Value>(
|
||||
name: string,
|
||||
value: T,
|
||||
ctor: ItemCtor<T>,
|
||||
encoding?: ItemEncoding
|
||||
): Promise<Item<T>>;
|
||||
async createItemWithValue<T extends Value>(
|
||||
name: string,
|
||||
value: T,
|
||||
encoding?: ItemEncoding
|
||||
): Promise<Item<T>>;
|
||||
async createItemWithValue<T extends Value>(
|
||||
name: string,
|
||||
value: T,
|
||||
encodingOrCtor?: ItemEncoding | ItemCtor<T>,
|
||||
encoding?: ItemEncoding
|
||||
): Promise<Item<T>> {
|
||||
const item = isEncoding(encodingOrCtor)
|
||||
? await this.createItem<T>(name, encodingOrCtor)
|
||||
: await this.createItem<T>(name, encodingOrCtor, encoding);
|
||||
await item.write(value);
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to retrieve an {@linkcode Item} by its `id`.
|
||||
* @param id ID of item
|
||||
* @returns An `Item`, if found
|
||||
*/
|
||||
public getItem(id: string): Item<any> | undefined {
|
||||
const ref = this.items.get(id);
|
||||
return ref?.deref();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears _all_ items, as well as the container.
|
||||
*/
|
||||
public async clearAll(): Promise<void> {
|
||||
const items = [...this.items.values()].map((ref) => ref.deref()).filter(Boolean) as Item<any>[];
|
||||
await Promise.all(items.map((item) => item.clear()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Options for {@linkcode strongbox}
|
||||
*/
|
||||
export interface StrongboxOpts {
|
||||
/**
|
||||
* Default {@linkcode Item} constructor.
|
||||
*
|
||||
* Unless a constructor is specified when calling {@linkcode Strongbox.createItem} or {@linkcode Strongbox.createItemWithValue}, this will be used.
|
||||
* @defaultValue BaseItem
|
||||
*/
|
||||
defaultItemCtor?: ItemCtor<any>;
|
||||
/**
|
||||
* Override default container, which is chosen according to environment
|
||||
*/
|
||||
container?: string;
|
||||
/**
|
||||
* Extra subdir to append to the auto-generated file directory hierarchy.
|
||||
*
|
||||
* This is ignored if `container` is provided.
|
||||
* @defaultValue 'strongbox'
|
||||
*/
|
||||
suffix?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc Strongbox.create}
|
||||
*/
|
||||
export const strongbox = Strongbox.create;
|
||||
|
||||
/**
|
||||
* This can be subclassed if needed.
|
||||
*/
|
||||
export {BaseItem};
|
||||
@@ -0,0 +1,10 @@
|
||||
import path from 'node:path';
|
||||
import slug from 'slugify';
|
||||
|
||||
export function slugify(value: string) {
|
||||
return slug(value, {lower: true});
|
||||
}
|
||||
|
||||
export function slugifyPath(filepath: string) {
|
||||
return filepath.split(path.sep).map(slugify).join(path.sep);
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"name": "@appium/strongbox",
|
||||
"version": "0.2.0",
|
||||
"description": "Persistent storage for Appium extensions",
|
||||
"keywords": [
|
||||
"automation",
|
||||
"javascript",
|
||||
"selenium",
|
||||
"webdriver",
|
||||
"ios",
|
||||
"android",
|
||||
"firefoxos",
|
||||
"testing"
|
||||
],
|
||||
"homepage": "https://appium.io",
|
||||
"bugs": {
|
||||
"url": "https://github.com/appium/appium/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appium/appium.git",
|
||||
"directory": "packages/strongbox"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"author": "https://github.com/appium",
|
||||
"main": "./build/lib/index.js",
|
||||
"types": "./build/lib/index.d.ts",
|
||||
"directories": {
|
||||
"lib": "lib"
|
||||
},
|
||||
"files": [
|
||||
"build/lib",
|
||||
"lib",
|
||||
"tsconfig.json"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "run-p test:unit test:types",
|
||||
"test:smoke": "node .",
|
||||
"test:unit": "mocha \"test/unit/**/*.spec.ts\"",
|
||||
"test:types": "tsd"
|
||||
},
|
||||
"dependencies": {
|
||||
"env-paths": "2.2.1",
|
||||
"slugify": "1.6.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"tsd": {
|
||||
"directory": "test/types"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import {expectAssignable, expectNotAssignable} from 'tsd';
|
||||
import {Item, BaseItem, Value} from '../..';
|
||||
|
||||
expectAssignable<Item<string>>(new BaseItem('foo', 'some-container'));
|
||||
|
||||
expectNotAssignable<Value>(1);
|
||||
expectAssignable<Value>('foo');
|
||||
expectNotAssignable<Value>(true);
|
||||
expectAssignable<Value>(Buffer.from('foo'));
|
||||
expectNotAssignable<Value>({});
|
||||
@@ -0,0 +1,156 @@
|
||||
import path from 'node:path';
|
||||
import rewiremock from 'rewiremock/node';
|
||||
import type {Strongbox as TStrongbox, StrongboxOpts} from '../../lib';
|
||||
import {createSandbox, SinonSandbox, SinonStubbedMember} from 'sinon';
|
||||
import type fs from 'node:fs/promises';
|
||||
|
||||
const {expect} = chai;
|
||||
type MockFs = {
|
||||
[K in keyof typeof fs]: SinonStubbedMember<(typeof fs)[K]>;
|
||||
};
|
||||
|
||||
describe('Strongbox', function () {
|
||||
let strongbox: (name: string, opts?: StrongboxOpts) => TStrongbox;
|
||||
let Strongbox: new (name: string, opts?: StrongboxOpts) => TStrongbox;
|
||||
let sandbox: SinonSandbox;
|
||||
let DEFAULT_SUFFIX: string;
|
||||
let MockFs: MockFs = {} as any;
|
||||
|
||||
const DATA_DIR = '/some/dir';
|
||||
|
||||
beforeEach(function () {
|
||||
sandbox = createSandbox();
|
||||
({strongbox, DEFAULT_SUFFIX, Strongbox} = rewiremock.proxy(() => require('../../lib'), (r) => ({
|
||||
// all of these props are async functions
|
||||
'node:fs/promises': r
|
||||
.mockThrough((prop) => {
|
||||
MockFs = {...MockFs, [prop]: sandbox.stub().resolves()};
|
||||
return MockFs[prop as keyof typeof fs];
|
||||
})
|
||||
.dynamic(), // this allows us to change the mock behavior on-the-fly
|
||||
'env-paths': sandbox.stub().returns({data: DATA_DIR}),
|
||||
})));
|
||||
});
|
||||
|
||||
describe('static method', function () {
|
||||
describe('create()', function () {
|
||||
it('should return a new Strongbox', function () {
|
||||
const box = strongbox('test');
|
||||
expect(box).to.be.an.instanceOf(Strongbox);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('instance method', function () {
|
||||
let box: TStrongbox;
|
||||
|
||||
beforeEach(function () {
|
||||
box = strongbox('test');
|
||||
});
|
||||
|
||||
describe('createItem()', function () {
|
||||
describe('when a Item with the same id does not exist', function () {
|
||||
describe('when the file does not exist', function () {
|
||||
it('should create an empty Item', async function () {
|
||||
const item = await box.createItem('SLUG test');
|
||||
expect(item).to.eql({
|
||||
id: '/some/dir/strongbox/slug-test',
|
||||
name: 'SLUG test',
|
||||
encoding: 'utf8',
|
||||
value: undefined,
|
||||
container: '/some/dir/strongbox',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when the file exists', function () {
|
||||
beforeEach(function () {
|
||||
MockFs.readFile.resolves('foo bar');
|
||||
});
|
||||
it('should read its value', async function () {
|
||||
const item = await box.createItem('SLUG test');
|
||||
expect(item).to.eql({
|
||||
id: '/some/dir/strongbox/slug-test',
|
||||
name: 'SLUG test',
|
||||
encoding: 'utf8',
|
||||
value: 'foo bar',
|
||||
container: '/some/dir/strongbox',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when a value is written to the Item', function () {
|
||||
it('should write a string value to the underlying file', async function () {
|
||||
const item = await box.createItem('test');
|
||||
await item.write('boo bah');
|
||||
|
||||
expect(MockFs.writeFile).to.have.been.calledWith(
|
||||
path.join(DATA_DIR, DEFAULT_SUFFIX, 'test'),
|
||||
'boo bah',
|
||||
'utf8'
|
||||
);
|
||||
});
|
||||
|
||||
it('should update the underlying value', async function () {
|
||||
const item = await box.createItem('test');
|
||||
await item.write('boo bah');
|
||||
expect(item.value).to.equal('boo bah');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when a Item with the same id already exists', function () {
|
||||
it('should throw an error', async function () {
|
||||
await box.createItem('test');
|
||||
await expect(box.createItem('test')).to.be.rejectedWith(
|
||||
Error,
|
||||
'Item with id "/some/dir/strongbox/test" already exists'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('clearAll()', function () {
|
||||
let clear: sinon.SinonStub<never[], Promise<void>>;
|
||||
|
||||
beforeEach(async function () {
|
||||
const item = await box.createItem<string>('SLUG test');
|
||||
clear = sandbox.stub(item, 'clear');
|
||||
});
|
||||
|
||||
it('should call clear() on each item', async function () {
|
||||
await box.clearAll();
|
||||
expect(clear).to.have.been.calledOnce;
|
||||
});
|
||||
|
||||
describe('when there is some other error', function () {
|
||||
beforeEach(function () {
|
||||
clear.rejects(new Error('ETOOMANYGOATS'));
|
||||
});
|
||||
|
||||
it('should reject', async function () {
|
||||
await expect(box.clearAll()).to.be.rejected;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('createItemWithValue()', function () {
|
||||
it('should create a Item with the given value', async function () {
|
||||
const item = await box.createItemWithValue('test', 'value');
|
||||
expect(item.value).to.equal('value');
|
||||
});
|
||||
|
||||
it('should write the value to disk', async function () {
|
||||
await box.createItemWithValue('test', 'value');
|
||||
expect(MockFs.writeFile).to.have.been.calledWith(
|
||||
path.join(DATA_DIR, DEFAULT_SUFFIX, 'test'),
|
||||
'value'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sandbox.restore();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "@appium/tsconfig/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": ".",
|
||||
"outDir": "build",
|
||||
"strict": true,
|
||||
"types": ["node", "mocha", "chai", "chai-as-promised", "sinon-chai"]
|
||||
},
|
||||
"include": ["lib", "test"],
|
||||
"exclude": ["**/*.test-d.ts"]
|
||||
}
|
||||
@@ -3,6 +3,30 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.1.10](https://github.com/appium/appium/compare/@appium/support@3.1.9...@appium/support@3.1.10) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency axios to v1.3.5 ([6cf1480](https://github.com/appium/appium/commit/6cf14802b70a462beffc12a1134476596060c005))
|
||||
* **support:** update dependency shell-quote to v1.8.1 ([c39be81](https://github.com/appium/appium/commit/c39be81d04b9738cd639bb5dd82adf584f691f8f))
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.9](https://github.com/appium/appium/compare/@appium/support@3.1.8...@appium/support@3.1.9) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.8](https://github.com/appium/appium/compare/@appium/support@3.1.7...@appium/support@3.1.8) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/support",
|
||||
"version": "3.1.8",
|
||||
"version": "3.1.10",
|
||||
"description": "Support libs used across appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,8 +41,8 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/types": "^0.10.2",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.10.4",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
@@ -63,7 +63,7 @@
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.1",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.3.4",
|
||||
"axios": "1.3.5",
|
||||
"base64-stream": "1.0.0",
|
||||
"bluebird": "3.7.2",
|
||||
"bplist-creator": "0.1.1",
|
||||
@@ -91,11 +91,11 @@
|
||||
"rimraf": "3.0.2",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"semver": "7.3.8",
|
||||
"shell-quote": "1.8.0",
|
||||
"shell-quote": "1.8.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"supports-color": "8.1.1",
|
||||
"teen_process": "2.0.2",
|
||||
"type-fest": "3.7.1",
|
||||
"type-fest": "3.8.0",
|
||||
"uuid": "9.0.0",
|
||||
"which": "3.0.0",
|
||||
"yauzl": "2.10.0"
|
||||
@@ -107,7 +107,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.0.12](https://github.com/appium/appium/compare/@appium/test-support@3.0.11...@appium/test-support@3.0.12) (2023-04-10)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.11](https://github.com/appium/appium/compare/@appium/test-support@3.0.10...@appium/test-support@3.0.11) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.10](https://github.com/appium/appium/compare/@appium/test-support@3.0.9...@appium/test-support@3.0.10) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/test-support",
|
||||
"version": "3.0.10",
|
||||
"version": "3.0.12",
|
||||
"description": "A collection of test utilities used across Appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -45,7 +45,7 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^3.1.8",
|
||||
"@appium/support": "^3.1.10",
|
||||
"@colors/colors": "1.5.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -60,5 +60,8 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
},
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [0.3.0](https://github.com/appium/appium/compare/@appium/tsconfig@0.2.4...@appium/tsconfig@0.3.0) (2023-04-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **strongbox:** create @appium/strongbox ([fd91234](https://github.com/appium/appium/commit/fd912346fade8f29f5b4d1458828ea677d7e9fcc))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.2.4](https://github.com/appium/appium/compare/@appium/tsconfig@0.2.3...@appium/tsconfig@0.2.4) (2023-02-09)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/tsconfig",
|
||||
"version": "0.2.4",
|
||||
"version": "0.3.0",
|
||||
"description": "Shared TypeScript Config for Appium",
|
||||
"main": "tsconfig.json",
|
||||
"keywords": [
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
"sourceMap": true,
|
||||
"removeComments": false,
|
||||
"strict": false,
|
||||
"types": ["node"]
|
||||
"types": ["node"],
|
||||
"lib": ["es2020", "ES2021.WeakRef"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,50 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.6.1](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.6.0...@appium/typedoc-plugin-appium@0.6.1) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [0.6.0](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.5.4...@appium/typedoc-plugin-appium@0.6.0) (2023-04-05)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **typedoc-plugin-appium:** enable comment derivation via reflection types ([b808dc8](https://github.com/appium/appium/commit/b808dc866d6587269d8adbe8d354471b3a1ba6de))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.5.4](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.5.3...@appium/typedoc-plugin-appium@0.5.4) (2023-04-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **typedoc-plugin-appium:** allow ts v5 as peer dep ([822206b](https://github.com/appium/appium/commit/822206be204599390c2f97b9b8d6c618ff53cb89))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.5.3](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.5.2...@appium/typedoc-plugin-appium@0.5.3) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.5.2](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.5.1...@appium/typedoc-plugin-appium@0.5.2) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -41,14 +41,14 @@ export class BuiltinExternalDriverConverter extends BaseConverter<KnownMethods>
|
||||
methods = findCommandMethodsInReflection(externalDriverRefl);
|
||||
|
||||
if (!methods.size) {
|
||||
this.log.error('No methods found in %s', NAME_EXTERNAL_DRIVER);
|
||||
this.log.error('(%s) No methods found! This is a bug.', NAME_EXTERNAL_DRIVER);
|
||||
return methods;
|
||||
}
|
||||
|
||||
this.log.verbose(
|
||||
'Done; found %s in %s',
|
||||
pluralize('builtin command method', methods.size, true),
|
||||
NAME_EXTERNAL_DRIVER
|
||||
'(%s) Done; found %s',
|
||||
NAME_EXTERNAL_DRIVER,
|
||||
pluralize('builtin command method', methods.size, true)
|
||||
);
|
||||
|
||||
return methods;
|
||||
|
||||
@@ -8,7 +8,7 @@ import {CommentSource} from '../types';
|
||||
const nullFinder: CommentFinder = {
|
||||
/**
|
||||
*
|
||||
* @returns A comment probably from the method map itself
|
||||
* @returns A comment which was directly provided
|
||||
*/
|
||||
getter: ({comment}) => comment,
|
||||
commentSource: CommentSource.OtherComment,
|
||||
|
||||
@@ -75,7 +75,7 @@ export function deriveComment(opts: DeriveCommentOptions = {}): CommentData | un
|
||||
const finalBlockTags: CommentTag[] = [];
|
||||
for (const tags of Object.values(tagsByTag)) {
|
||||
if (tags.length === 1) {
|
||||
finalBlockTags.push(_.first(tags)!);
|
||||
finalBlockTags.push(tags[0]);
|
||||
} else if (tags.length > 1) {
|
||||
// prefer a tag with content
|
||||
const tag = tags.find((t) => t.content.length) ?? tags[0];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {Comment} from 'typedoc';
|
||||
import {isDeclarationReflection} from '../../guards';
|
||||
import {isDeclarationReflection, isReflectionType} from '../../guards';
|
||||
import {CommentSource} from '../types';
|
||||
import {CommentFinder} from './types';
|
||||
|
||||
@@ -24,11 +24,20 @@ const MethodCommentFinders: Readonly<CommentFinder[]> = [
|
||||
},
|
||||
{
|
||||
/**
|
||||
* @returns The comment from the method's signature (may be inherited)
|
||||
* @returns The comment from the method's signature (may be inherited or from a `ReflectionType`'s declaration)
|
||||
*/
|
||||
getter: ({refl}) => {
|
||||
if (isDeclarationReflection(refl)) {
|
||||
return refl.getAllSignatures().find((sig) => sig.comment?.summary)?.comment;
|
||||
let comment = refl.getAllSignatures().find((sig) => sig.comment?.summary)?.comment;
|
||||
if (comment) {
|
||||
return comment;
|
||||
}
|
||||
if (isReflectionType(refl.type)) {
|
||||
comment = refl.type.declaration
|
||||
.getAllSignatures()
|
||||
.find((sig) => sig.comment?.summary)?.comment;
|
||||
}
|
||||
return comment;
|
||||
}
|
||||
},
|
||||
commentSource: CommentSource.MethodSignature,
|
||||
|
||||
@@ -95,17 +95,17 @@ export class ExternalConverter extends BaseConverter<ProjectCommands> {
|
||||
if (modules.length) {
|
||||
for (const mod of modules) {
|
||||
const log = this.log.createChildLogger(mod.name);
|
||||
log.verbose('Begin conversion');
|
||||
log.verbose('(%s) Begin conversion', mod.name);
|
||||
const cmdInfo = this.#convertModuleClasses(mod, log);
|
||||
projectCommands.set(mod.name, cmdInfo);
|
||||
log.verbose('End conversion');
|
||||
log.verbose('(%s) End conversion', mod.name);
|
||||
}
|
||||
} else {
|
||||
const log = this.log.createChildLogger(project.name);
|
||||
log.verbose('Begin conversion');
|
||||
log.verbose('(%s) Begin conversion', project.name);
|
||||
const cmdInfo = this.#convertModuleClasses(project, log);
|
||||
projectCommands.set(project.name, cmdInfo);
|
||||
log.verbose('End conversion');
|
||||
log.verbose('(%s) End conversion', project.name);
|
||||
}
|
||||
|
||||
if (projectCommands.size) {
|
||||
@@ -156,11 +156,15 @@ export class ExternalConverter extends BaseConverter<ProjectCommands> {
|
||||
|
||||
if (!classMethods.size) {
|
||||
// may or may not be expected
|
||||
log.verbose('No methods found');
|
||||
log.verbose('(%s) No command methods found', classRefl.name);
|
||||
continue;
|
||||
}
|
||||
|
||||
log.verbose('Analyzing %s', pluralize('method', classMethods.size, true));
|
||||
log.verbose(
|
||||
'(%s) Analyzing %s',
|
||||
classRefl.name,
|
||||
pluralize('method', classMethods.size, true)
|
||||
);
|
||||
|
||||
const newRouteMap = this.#findAndConvertNewMethodMap(classRefl, classMethods, log, isPlugin);
|
||||
routeMap = new Map([...routeMap, ...newRouteMap]);
|
||||
@@ -189,9 +193,10 @@ export class ExternalConverter extends BaseConverter<ProjectCommands> {
|
||||
routeMap = new Map([...routeMap, ...overriddenRouteMap]);
|
||||
|
||||
log.verbose(
|
||||
'Done; found %s and %s',
|
||||
pluralize('route', newRouteMap.size + overriddenRouteMap.size, true),
|
||||
pluralize('execute method', newExecMethodData.size, true)
|
||||
'(%s) Done; found %s and %s',
|
||||
classRefl.name,
|
||||
pluralize('total command', newRouteMap.size + overriddenRouteMap.size, true),
|
||||
pluralize('total execute method', newExecMethodData.size, true)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -214,7 +219,7 @@ export class ExternalConverter extends BaseConverter<ProjectCommands> {
|
||||
): ExecMethodDataSet {
|
||||
const execMethodMapRefl = findChildByGuard(parentRefl, isExecMethodDefReflection);
|
||||
if (!execMethodMapRefl) {
|
||||
log.verbose('No execute method map found');
|
||||
log.verbose('(%s) No execute method map found', parentRefl.name);
|
||||
return new Set();
|
||||
}
|
||||
return convertExecuteMethodMap({
|
||||
@@ -248,7 +253,7 @@ export class ExternalConverter extends BaseConverter<ProjectCommands> {
|
||||
isMethodMapDeclarationReflection
|
||||
);
|
||||
if (!newMethodMapRefl) {
|
||||
log.verbose('No new method map found');
|
||||
log.verbose('(%s) No new method map found', parentRefl.name);
|
||||
return new Map();
|
||||
}
|
||||
return convertMethodMap({
|
||||
|
||||
@@ -74,7 +74,9 @@ export function convertMethodMap({
|
||||
const routeProps = filterChildrenByKind(methodMapRefl, ReflectionKind.Property);
|
||||
|
||||
if (!routeProps.length) {
|
||||
log.warn('No routes found in MethodMap; skipping');
|
||||
if (methodMapRefl.overwrites?.name === 'BasePlugin') {
|
||||
log.warn('(%s) MethodMap; skipping');
|
||||
}
|
||||
return routes;
|
||||
}
|
||||
|
||||
@@ -152,7 +154,13 @@ export function convertMethodMap({
|
||||
|
||||
commandSet.add(commandData);
|
||||
|
||||
log.verbose('Registered route %s %s for command "%s"', httpMethod, route, command);
|
||||
log.verbose(
|
||||
'(%s) Registered route %s %s for command "%s"',
|
||||
parentRefl.name,
|
||||
httpMethod,
|
||||
route,
|
||||
command
|
||||
);
|
||||
|
||||
routes.set(route, commandSet);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ export function convertOverrides({
|
||||
const builtinRoutes = builtinCommands.routesByCommandName.get(command);
|
||||
if (!builtinMethods.has(command) || !builtinRoutes) {
|
||||
// actually unknown method
|
||||
log.verbose('No such route for method "%s"; not a command', command);
|
||||
log.verbose('(%s) Method "%s" is not a registered command', parentRefl.name, command);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -70,11 +70,12 @@ export function convertOverrides({
|
||||
for (const route of builtinRoutes) {
|
||||
const newCommandSet: CommandSet = new Set();
|
||||
// this must be defined, because if it wasn't then builtinRoutes would be empty and we'd continue the loop
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const commandSet = builtinCommands.routeMap.get(route)!;
|
||||
for (const commandData of commandSet) {
|
||||
const methodRefl = classMethods.get(command);
|
||||
if (!methodRefl) {
|
||||
log.warn('No such method "%s"; this is a bug', command);
|
||||
log.warn('(%s) No such method "%s"; this is a bug', parentRefl.name, command);
|
||||
continue;
|
||||
}
|
||||
const commentData = deriveComment({
|
||||
@@ -89,7 +90,13 @@ export function convertOverrides({
|
||||
comment: commentData?.comment,
|
||||
},
|
||||
});
|
||||
log.verbose('Linked route %s %s for command "%s"', commandData.httpMethod, route, command);
|
||||
log.verbose(
|
||||
'(%s) Linked command "%s" to route %s %s',
|
||||
parentRefl.name,
|
||||
command,
|
||||
commandData.httpMethod,
|
||||
route
|
||||
);
|
||||
newCommandSet.add(newCommandData);
|
||||
}
|
||||
routes.set(route, newCommandSet);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/typedoc-plugin-appium",
|
||||
"version": "0.5.2",
|
||||
"version": "0.6.1",
|
||||
"description": "TypeDoc plugin for Appium & its extensions",
|
||||
"homepage": "https://appium.io",
|
||||
"license": "Apache-2.0",
|
||||
@@ -57,13 +57,13 @@
|
||||
"typedoc": "^0.23.14",
|
||||
"typedoc-plugin-markdown": "^3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "~0.3.3",
|
||||
"typescript": "^4.7.0"
|
||||
"typescript": "^4.7.0 || ^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"handlebars": "4.7.7",
|
||||
"lodash": "4.17.21",
|
||||
"pluralize": "8.0.0",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72"
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
ProjectReflection,
|
||||
ReferenceType,
|
||||
ReflectionKind,
|
||||
ReflectionType,
|
||||
SignatureReflection,
|
||||
} from 'typedoc';
|
||||
import {
|
||||
@@ -140,6 +141,31 @@ describe('@appium/typedoc-plugin-appium', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('when provided a DeclarationReflection which is of kind Property', function () {
|
||||
describe('when provided a reflection without a visible comment which has a reflection type of a declaration having a visible comment', function () {
|
||||
// Note: This is how appium-xcuitest-driver works (though is not generally a recommended strategy). Each method is a property on the driver which is assigned to a method contained in some mixin. The method has the docstring (or more precisely, its signature does).
|
||||
let otherComment: Comment;
|
||||
let otherRefl: DeclarationReflection;
|
||||
let propRefl: DeclarationReflection;
|
||||
beforeEach(function () {
|
||||
propRefl = new DeclarationReflection('from', ReflectionKind.Property);
|
||||
otherRefl = new DeclarationReflection('to', ReflectionKind.Method);
|
||||
propRefl.type = new ReflectionType(otherRefl);
|
||||
|
||||
const sigRefl = new SignatureReflection('to', ReflectionKind.CallSignature, otherRefl);
|
||||
otherRefl.signatures = [sigRefl];
|
||||
otherComment = new Comment([{kind: 'text', text: 'a description of the method'}]);
|
||||
sigRefl.comment = otherComment;
|
||||
});
|
||||
|
||||
it('should use the comment from the reference type declaration', function () {
|
||||
const {comment, commentSource} = deriveComment({refl: propRefl})!;
|
||||
expect(comment).to.eql(otherComment);
|
||||
expect(commentSource).to.equal(CommentSource.MethodSignature);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when provided a ParameterReflection', function () {
|
||||
let refl: CommandMethodDeclarationReflection;
|
||||
let paramRefl: ParameterReflection;
|
||||
|
||||
@@ -3,6 +3,29 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.10.4](https://github.com/appium/appium/compare/@appium/types@0.10.3...@appium/types@0.10.4) (2023-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.8.0 ([d6c42e9](https://github.com/appium/appium/commit/d6c42e99c08efce0b34796d5982ce379fca044d3))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.10.3](https://github.com/appium/appium/compare/@appium/types@0.10.2...@appium/types@0.10.3) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** make getContext & getContexts generic ([296c29a](https://github.com/appium/appium/commit/296c29ad8499d8ac132a785580d71617fdaf3e18))
|
||||
* **types:** update dependency type-fest to v3.7.2 ([5580539](https://github.com/appium/appium/commit/55805390b5a0c6aa718bb357b30f66651f3db281))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.10.2](https://github.com/appium/appium/compare/@appium/types@0.10.1...@appium/types@0.10.2) (2023-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -4,13 +4,7 @@
|
||||
* @module
|
||||
*/
|
||||
|
||||
/**
|
||||
* A W3C or JSONWP element.
|
||||
*/
|
||||
export interface Element<Id extends string = string> {
|
||||
ELEMENT?: Id;
|
||||
'element-6066-11e4-a52e-4f735466cecf': Id;
|
||||
}
|
||||
import {Element} from './util';
|
||||
|
||||
/**
|
||||
* @group Actions
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import type {EventEmitter} from 'events';
|
||||
import {Entries} from 'type-fest';
|
||||
import {ActionSequence, Element} from './action';
|
||||
import {ActionSequence} from './action';
|
||||
import {Capabilities, DriverCaps, W3CCapabilities, W3CDriverCaps} from './capabilities';
|
||||
import {ExecuteMethodMap, MethodMap} from './command';
|
||||
import {ServerArgs} from './config';
|
||||
import {HTTPHeaders, HTTPMethod} from './http';
|
||||
import {AppiumLogger} from './logger';
|
||||
import {AppiumServer, UpdateServerCallback} from './server';
|
||||
import {Class, StringRecord} from './util';
|
||||
import {Class, StringRecord, Element} from './util';
|
||||
|
||||
/**
|
||||
* Interface implemented by the `DeviceSettings` class in `@appium/base-driver`
|
||||
@@ -780,7 +780,8 @@ export interface Driver<
|
||||
* External drivers must subclass `BaseDriver`, and can implement any of these methods.
|
||||
* None of these are implemented within Appium itself.
|
||||
*/
|
||||
export interface ExternalDriver<C extends Constraints = Constraints> extends Driver<C> {
|
||||
export interface ExternalDriver<C extends Constraints = Constraints, Ctx = string>
|
||||
extends Driver<C> {
|
||||
// WebDriver spec commands
|
||||
|
||||
/**
|
||||
@@ -1826,7 +1827,7 @@ export interface ExternalDriver<C extends Constraints = Constraints> extends Dri
|
||||
*
|
||||
* @returns The context name
|
||||
*/
|
||||
getCurrentContext?(): Promise<string | null>;
|
||||
getCurrentContext?(): Promise<Ctx | null>;
|
||||
|
||||
/**
|
||||
* Switch to a context by name
|
||||
@@ -1842,7 +1843,7 @@ export interface ExternalDriver<C extends Constraints = Constraints> extends Dri
|
||||
*
|
||||
* @returns The list of context names
|
||||
*/
|
||||
getContexts?(): Promise<string[]>;
|
||||
getContexts?(): Promise<Ctx[]>;
|
||||
|
||||
/**
|
||||
* Get the index of an element on the page
|
||||
|
||||
@@ -72,3 +72,20 @@ export type AnyCase<T extends string> = string extends T
|
||||
: T extends `${infer F}${infer R}`
|
||||
? `${Uppercase<F> | Lowercase<F>}${AnyCase<R>}`
|
||||
: '';
|
||||
|
||||
/**
|
||||
* A W3C element.
|
||||
* @see https://www.w3.org/TR/webdriver1/#elements
|
||||
*/
|
||||
export interface Element<Id extends string = string> {
|
||||
/**
|
||||
* For backwards compatibility with JSONWP only.
|
||||
* @deprecated Use {@linkcode element-6066-11e4-a52e-4f735466cecf} instead.
|
||||
*/
|
||||
ELEMENT?: Id;
|
||||
/**
|
||||
* This property name is the string constant W3C element identifier used to identify an object as
|
||||
* a W3C element.
|
||||
*/
|
||||
'element-6066-11e4-a52e-4f735466cecf': Id;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/types",
|
||||
"version": "0.10.2",
|
||||
"version": "0.10.4",
|
||||
"description": "Various type declarations used across Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -39,11 +39,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/schema": "^0.2.6",
|
||||
"@appium/tsconfig": "^0.2.4",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/ws": "8.5.4",
|
||||
"type-fest": "3.7.1"
|
||||
"type-fest": "3.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -52,7 +52,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.ts"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.0.8](https://github.com/appium/appium-plugins/compare/@appium/universal-xml-plugin@1.0.7...@appium/universal-xml-plugin@1.0.8) (2023-04-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **universal-xml-plugin:** update dependency @xmldom/xmldom to v0.8.7 ([b9d339e](https://github.com/appium/appium-plugins/commit/b9d339eaf3527a0642f4fd904f447c80e2c2165b))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [1.0.7](https://github.com/appium/appium-plugins/compare/@appium/universal-xml-plugin@1.0.6...@appium/universal-xml-plugin@1.0.7) (2023-03-28)
|
||||
|
||||
**Note:** Version bump only for package @appium/universal-xml-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/universal-xml-plugin",
|
||||
"version": "1.0.7",
|
||||
"version": "1.0.8",
|
||||
"description": "Appium plugin for making XML source and XPath queries the same across iOS and Android",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/xmldom": "0.1.31",
|
||||
"@xmldom/xmldom": "0.8.6",
|
||||
"@xmldom/xmldom": "0.8.7",
|
||||
"fast-xml-parser": "3.21.1",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
@@ -57,7 +57,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"gitHead": "84b211330dc84849af9cc1f3a5c5ad32e15b2e72",
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02",
|
||||
"typedoc": {
|
||||
"entryPoint": "./lib/index.js"
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
"matchPackageNames": [
|
||||
"@types/wrap-ansi",
|
||||
"chalk",
|
||||
"conf",
|
||||
"del",
|
||||
"delay",
|
||||
"env-paths",
|
||||
|
||||
@@ -67,6 +67,9 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/doctor"
|
||||
},
|
||||
{
|
||||
"path": "packages/strongbox"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+7
-1
@@ -13,7 +13,13 @@
|
||||
"./packages/universal-xml-plugin",
|
||||
"./packages/relaxed-caps-plugin",
|
||||
"./packages/images-plugin",
|
||||
"./packages/execute-driver-plugin"
|
||||
"./packages/execute-driver-plugin",
|
||||
"./packages/schema",
|
||||
"./packages/driver-test-support",
|
||||
"./packages/test-support",
|
||||
"./packages/plugin-test-support",
|
||||
"./packages/opencv",
|
||||
"./packages/strongbox"
|
||||
],
|
||||
"name": "Appium",
|
||||
"out": "./packages/appium/docs/en/reference",
|
||||
|
||||
Reference in New Issue
Block a user