@appium/driver-test-support 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es6.d.ts","../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/async-lock/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/type-fest/source/primitive.d.ts","../../../node_modules/type-fest/source/typed-array.d.ts","../../../node_modules/type-fest/source/basic.d.ts","../../../node_modules/type-fest/source/observable-like.d.ts","../../../node_modules/type-fest/source/internal.d.ts","../../../node_modules/type-fest/source/except.d.ts","../../../node_modules/type-fest/source/simplify.d.ts","../../../node_modules/type-fest/source/writable.d.ts","../../../node_modules/type-fest/source/mutable.d.ts","../../../node_modules/type-fest/source/merge.d.ts","../../../node_modules/type-fest/source/merge-exclusive.d.ts","../../../node_modules/type-fest/source/require-at-least-one.d.ts","../../../node_modules/type-fest/source/require-exactly-one.d.ts","../../../node_modules/type-fest/source/require-all-or-none.d.ts","../../../node_modules/type-fest/source/remove-index-signature.d.ts","../../../node_modules/type-fest/source/partial-deep.d.ts","../../../node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../../node_modules/type-fest/source/readonly-deep.d.ts","../../../node_modules/type-fest/source/literal-union.d.ts","../../../node_modules/type-fest/source/promisable.d.ts","../../../node_modules/type-fest/source/opaque.d.ts","../../../node_modules/type-fest/source/invariant-of.d.ts","../../../node_modules/type-fest/source/set-optional.d.ts","../../../node_modules/type-fest/source/set-required.d.ts","../../../node_modules/type-fest/source/set-non-nullable.d.ts","../../../node_modules/type-fest/source/value-of.d.ts","../../../node_modules/type-fest/source/promise-value.d.ts","../../../node_modules/type-fest/source/async-return-type.d.ts","../../../node_modules/type-fest/source/conditional-keys.d.ts","../../../node_modules/type-fest/source/conditional-except.d.ts","../../../node_modules/type-fest/source/conditional-pick.d.ts","../../../node_modules/type-fest/source/union-to-intersection.d.ts","../../../node_modules/type-fest/source/stringified.d.ts","../../../node_modules/type-fest/source/fixed-length-array.d.ts","../../../node_modules/type-fest/source/multidimensional-array.d.ts","../../../node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../node_modules/type-fest/source/iterable-element.d.ts","../../../node_modules/type-fest/source/entry.d.ts","../../../node_modules/type-fest/source/entries.d.ts","../../../node_modules/type-fest/source/set-return-type.d.ts","../../../node_modules/type-fest/source/asyncify.d.ts","../../../node_modules/type-fest/source/numeric.d.ts","../../../node_modules/type-fest/source/jsonify.d.ts","../../../node_modules/type-fest/source/schema.d.ts","../../../node_modules/type-fest/source/literal-to-primitive.d.ts","../../../node_modules/type-fest/source/string-key-of.d.ts","../../../node_modules/type-fest/source/exact.d.ts","../../../node_modules/type-fest/source/readonly-tuple.d.ts","../../../node_modules/type-fest/source/optional-keys-of.d.ts","../../../node_modules/type-fest/source/has-optional-keys.d.ts","../../../node_modules/type-fest/source/required-keys-of.d.ts","../../../node_modules/type-fest/source/has-required-keys.d.ts","../../../node_modules/type-fest/source/spread.d.ts","../../../node_modules/type-fest/source/split.d.ts","../../../node_modules/type-fest/source/camel-case.d.ts","../../../node_modules/type-fest/source/camel-cased-properties.d.ts","../../../node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/delimiter-case.d.ts","../../../node_modules/type-fest/source/kebab-case.d.ts","../../../node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/pascal-case.d.ts","../../../node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/snake-case.d.ts","../../../node_modules/type-fest/source/snake-cased-properties.d.ts","../../../node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/includes.d.ts","../../../node_modules/type-fest/source/screaming-snake-case.d.ts","../../../node_modules/type-fest/source/join.d.ts","../../../node_modules/type-fest/source/trim.d.ts","../../../node_modules/type-fest/source/replace.d.ts","../../../node_modules/type-fest/source/get.d.ts","../../../node_modules/type-fest/source/last-array-element.d.ts","../../../node_modules/type-fest/source/package-json.d.ts","../../../node_modules/type-fest/source/tsconfig-json.d.ts","../../../node_modules/type-fest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../schema/build/appium-config-schema.d.ts","../../schema/build/index.d.ts","../../types/build/appium-config.d.ts","../../types/build/config.d.ts","../../../node_modules/typescript/lib/typescript.d.ts","../../../node_modules/@wdio/types/build/compiler.d.ts","../../../node_modules/@wdio/types/build/frameworks.d.ts","../../../node_modules/@wdio/types/build/services.d.ts","../../../node_modules/@wdio/types/build/reporters.d.ts","../../../node_modules/@wdio/types/build/options.d.ts","../../../node_modules/@wdio/types/build/capabilities.d.ts","../../../node_modules/@wdio/types/build/clients.d.ts","../../../node_modules/@wdio/types/build/workers.d.ts","../../../node_modules/@wdio/types/build/index.d.ts","../../types/build/capabilities.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../types/build/action.d.ts","../../types/build/driver.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../types/build/plugin.d.ts","../../types/build/index.d.ts","../../base-driver/build/lib/basedriver/device-settings.d.ts","../../base-driver/build/lib/basedriver/core.d.ts","../../base-driver/build/lib/express/server.d.ts","../../base-driver/build/lib/protocol/protocol.d.ts","../../../node_modules/es6-error/typings/index.d.ts","../../../node_modules/http-status-codes/build/cjs/utils-functions.d.ts","../../../node_modules/http-status-codes/build/cjs/status-codes.d.ts","../../../node_modules/http-status-codes/build/cjs/reason-phrases.d.ts","../../../node_modules/http-status-codes/build/cjs/legacy.d.ts","../../../node_modules/http-status-codes/build/cjs/index.d.ts","../../base-driver/build/lib/protocol/errors.d.ts","../../base-driver/build/lib/protocol/routes.d.ts","../../base-driver/build/lib/protocol/index.d.ts","../../base-driver/build/lib/express/static.d.ts","../../base-driver/build/lib/jsonwp-proxy/protocol-converter.d.ts","../../base-driver/build/lib/jsonwp-proxy/proxy.d.ts","../../base-driver/build/lib/express/websocket.d.ts","../../base-driver/build/lib/basedriver/driver.d.ts","../../base-driver/build/lib/constants.d.ts","../../base-driver/build/lib/jsonwp-status/status.d.ts","../../base-driver/build/lib/basedriver/capabilities.d.ts","../../base-driver/build/lib/index.d.ts","../../../node_modules/axios/index.d.ts","../../../node_modules/@types/bluebird/index.d.ts","../../../node_modules/get-port/index.d.ts","../lib/helpers.js","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../lib/e2e-suite.js","../lib/unit-suite.js","../lib/index.js","../../../node_modules/@types/mocha/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"1272277fe7daa738e555eb6cc45ded42cc2d0f76c07294142283145d49e96186","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6702a1cd8818cb22ee95c85dcf2c31c117bde892e1afd2bc254bd720f4c6263c","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"a53ba2a104ae0e58b2791f9cdf3ddafd747d1a0ccb5e6363c2b0ce2eb5e0e67c","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","3a0c45fe95e8f0e2c5247d48acf3a522d2ef29f1ab0effb3c59a9c4fdd5edbcd","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","20c468256fd68d3ef1fa53526e76d51d6aa91711e84d72c0343589b99238287e","0fac2b483246d890f74e4050c8651f43b4569519c386082d4c3838cd42f39a7c","8d4c16a26d59e3ce49741a7d4a6e8206b884e226cf308667c7778a0b2c0fee7f","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","d61c7c41eb1960b1285e242fd102c162b65c0522985b839fadda59874308a170",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"11c8be5993cd30dbb5310d95ba6c54dbb8724221eed0c4b2e4a7d6a4f9a032dd","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","a4210a84a82b3e7a8cec5b2f3616e46d523f4f10cc1576d8f2fb89d0987b341e",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637","a4471d2bdba495b2a6a30b8765d5e0282fa7009d88345a9528f73c37869d3b93",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","c9d70d3d7191a66a81cb554557f8ed1cf736ea8397c44a864fe52689de18865a","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"3a4c859c27b2aaedcd27173220d66590fa7da27ee45d84e365fb0fe7f2c2f72c","b4358a89fcd9c579f84a6c68e2ce44ca91b07e4db3f8f403c2b7a72c1a1e04b6","cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","4a15fc59b27b65b9894952048be2afc561865ec37606cd0f5e929ee4a102233b",{"version":"744e7c636288493667d553c8f8ebd666ccbc0e715df445a4a7c4a48812f20544","affectsGlobalScope":true},"c05dcfbd5bd0abcefa3ad7d2931424d4d8090bc55bbe4f5c8acb8d2ca5886b2e","326da4aebf555d54b995854ff8f3432f63ba067be354fa16c6e1f50daa0667de","90748076a143bbeb455f8d5e8ad1cc451424c4856d41410e491268a496165256","76e3f3a30c533bf20840d4185ce2d143dc18ca955b64400ac09670a89d388198","144dfcee38ebc38aae93a85bc47211c9268d529b099127b74d61242ec5c17f35","2cf38989b23031694f04308b6797877534a49818b2f5257f4a5d824e7ea82a5a","f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","e4ace1cf5316aa7720e58c8dd511ba86bab1c981336996fb694fa64b8231d5f0","a1c85a61ff2b66291676ab84ae03c1b1ff7139ffde1942173f6aee8dc4ee357b","f35a727758da36dd885a70dd13a74d9167691aaff662d50eaaf66ed591957702","116205156fb819f2afe33f9c6378ea11b6123fa3090f858211c23f667fff75da","8fe68442c15f8952b8816fa4e7e6bd8d5c45542832206bd7bcf3ebdc77d1c3f3","3add9402f56a60e9b379593f69729831ac0fc9eae604b6fafde5fa86d2f8a4b9","cc28c8b188905e790de427f3cd00b96734c9c662fb849d68ff9d5f0327165c0d","da2aa652d2bf03cc042e2ff31e4194f4f18f042b8344dcb2568f761daaf7869f","03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","de2b56099545de410af72a7e430ead88894e43e4f959de29663d4d0ba464944d","eec9e706eef30b4f1c6ff674738d3fca572829b7fa1715f37742863dabb3d2f2","cec67731fce8577b0a90aa67ef0522ddb9f1fd681bece50cdcb80a833b4ed06f","a14679c24962a81ef24b6f4e95bbc31601551f150d91af2dc0bce51f7961f223","3f4d43bb3f61d173a4646c19557e090a06e9a2ec9415313a6d84af388df64923","18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","d5a5025f04e7a3264ecfa3030ca9a3cb0353450f1915a26d5b84f596240a11cd","03f4449c691dd9c51e42efd51155b63c8b89a5f56b5cf3015062e2f818be8959","23b213ec3af677b3d33ec17d9526a88d5f226506e1b50e28ce4090fb7e4050a8","f0abf96437a6e57b9751a792ba2ebb765729a40d0d573f7f6800b305691b1afb","7d30aee3d35e64b4f49c235d17a09e7a7ce2961bebb3996ee1db5aa192f3feba","eb1625bab70cfed00931a1e09ecb7834b61a666b0011913b0ec24a8e219023ef","1a923815c127b27f7f375c143bb0d9313ccf3c66478d5d2965375eeb7da72a4c","4f92df9d64e5413d4b34020ae6b382edda84347daec97099e7c008a9d5c0910b","fcc438e50c00c9e865d9c1777627d3fdc1e13a4078c996fb4b04e67e462648c8","d0f07efa072420758194c452edb3f04f8eabc01cd4b3884a23e7274d4e2a7b69","7086cca41a87b3bf52c6abfc37cda0a0ec86bb7e8e5ef166b07976abec73fa5e","4571a6886b4414403eacdd1b4cdbd854453626900ece196a173e15fb2b795155","c122227064c2ebf6a5bd2800383181395b56bb71fd6683d5e92add550302e45f","60f476f1c4de44a08d6a566c6f1e1b7de6cbe53d9153c9cc2284ca0022e21fba","84315d5153613eeb4b34990fb3bc3a1261879a06812ee7ae481141e30876d8dc","4f0781ec008bb24dc1923285d25d648ea48fb5a3c36d0786e2ee82eb00eff426","8fefaef4be2d484cdfc35a1b514ee7e7bb51680ef998fb9f651f532c0b169e6b","8be5c5be3dbf0003a628f99ad870e31bebc2364c28ea3b96231089a94e09f7a6","6626bbc69c25a92f6d32e6d2f25038f156b4c2380cbf29a420f7084fb1d2f7d7","f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","5126032fe6e999f333827ee8e67f7ca1d5f3d6418025878aa5ebf13b499c2024","4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","1edc9192dfc277c60b92525cdfa1980e1bfd161ae77286c96777d10db36be73c","1573cae51ae8a5b889ec55ecb58e88978fe251fd3962efa5c4fdb69ce00b23ba","75a7db3b7ddf0ca49651629bb665e0294fda8d19ba04fddc8a14d32bb35eb248","f2d1ac34b05bb6ce326ea1702befb0216363f1d5eccdd1b4b0b2f5a7e953ed8a","789665f0cd78bc675a31140d8f133ec6a482d753a514012fe1bb7f86d0a21040","bb30fb0534dceb2e41a884c1e4e2bb7a0c668dadd148092bba9ff15aafb94790","6ef829366514e4a8f75ce55fa390ebe080810b347e6f4a87bbeecb41e612c079","8f313aa8055158f08bd75e3a57161fa473a50884c20142f3318f89f19bfc0373","e789eb929b46299187312a01ff71905222f67907e546e491952c384b6f956a63","a0147b607f8c88a5433a5313cdc10443c6a45ed430e1b0a335a413dc2b099fd5","a86492d82baf906c071536e8de073e601eaa5deed138c2d9c42d471d72395d7e","6b1071c06abcbe1c9f60638d570fdbfe944b6768f95d9f28ebc06c7eec9b4087","92eb8a98444729aa61be5e6e489602363d763da27d1bcfdf89356c1d360484da","1285ddb279c6d0bc5fe46162a893855078ae5b708d804cd93bfc4a23d1e903d9","d729b8b400507b9b51ff40d11e012379dbf0acd6e2f66bf596a3bc59444d9bf1","fc3ee92b81a6188a545cba5c15dc7c5d38ee0aaca3d8adc29af419d9bdb1fdb9","a14371dc39f95c27264f8eb02ce2f80fd84ac693a2750983ac422877f0ae586d","755bcc456b4dd032244b51a8b4fe68ee3b2d2e463cf795f3fde970bb3f269fb1","c00b402135ef36fb09d59519e34d03445fd6541c09e68b189abb64151f211b12","e08e58ac493a27b29ceee80da90bb31ec64341b520907d480df6244cdbec01f8","c0fe2b1135ca803efa203408c953e1e12645b8065e1a4c1336ad8bb11ea1101b","f3dedc92d06e0fdc43e76c2e1acca21759dd63d2572c9ec78a5188249965d944","25b1108faedaf2043a97a76218240b1b537459bbca5ae9e2207c236c40dcfdef","a1d1e49ccd2ac07ed8a49a3f98dfd2f7357cf03649b9e348b58b97bb75116f18","7ad042f7d744ccfbcf6398216203c7712f01359d6fd4348c8bd8df8164e98096","0e0b8353d6d7f7cc3344adbabf3866e64f2f2813b23477254ba51f69e8fdf0eb","8e7653c13989dca094412bc4de20d5c449457fc92735546331d5e9cdd79ac16e","189dedb255e41c8556d0d61d7f1c18506501896354d0925cbd47060bcddccab1","48f0819c2e14214770232f1ab0058125bafdde1d04c4be84339d5533098bf60a","2641aff32336e35a5b702aa2d870a0891da29dc1c19ae48602678e2050614041","e133066d15e9e860ca96220a548dee28640039a8ac33a9130d0f83c814a78605","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","7d9161ec720909c6abf2957b3f62d1ab27f2623e380a39d147715d43d8abd414","6101949945c252c5706da566e06b7be2a4cc48e73f25165add3c081d0dd37578","a983207132524290a38f8c5e3e1799c4b3372c66835ee1a9c207f42fc5220d88","8f55068da250ce5c00ce636f4c33b7e50fb15a75a84bf6092595e419e678dc2a","3fa86a2c33804b6a4221dda3714a6a2f8a2f26983ea6c63d2bf6f2839fbb778a","a47b38aac630271c68667d717c865e4c98200bd90b4a8859d3f07460da09adec","46ab84953b0abb33ae9a42af24c97883e68f1080f084ffb9436181b3f147776c","d97f055b516d74e0c0bace388e6bbe3bc386a9599a1d1862ba8a669e892a1d2a","2e97e912e078f6cea483fb096d9c49eb2b7285f9e4748e2f7723c7b55817b90b","5f9e9eee4568d2fbef66f0118381003c07c43193dd18bc86f3141726a23a386e","4d18894e559ba0ddde5d544c718dc71683f770f70b881dc697afeb0ea37ca292","db412fc192357cd4bff3e93e79030ea404b7d2cf8c089d2fe9d53ba010f1a916","7bc97e823dd70d66e9640998837ca0aad3480b415035dbd2074e3a450166e221",{"version":"1153175167a3c48f04cea09400723d11107af1c13e2f0fc858347ef085417519","affectsGlobalScope":true},"10487580175f86d0789473002b4b6e6606f9a4d7d3965f91066361aa8629297a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"101eb8b4e972b9326f39591e2e40e967e3331e8d960f81248daeb266ea1affec","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","b7e64651c85c710d82161ad78be0ff7c95e9ecc82b23ea21244b62753d549ea3","f7648bb46cef0cfd5dfad2050b96699d604e45639c95448814a1342bf3369853","df38da6685578ac3d0e4ce2d20f3d59462ee53959b8263d2532ec9cec48ae098","6f36e68c339aea454afcdd2387ed71411d727a612f1412d84530e05f74d3e963","bc26951c777570d6480caae896eb50339d87f24c5f6b267c1dc1751a5507cbb2","d0c3f69853b08d50e442522622c52e1c80fd1150eb22b96e78290f0faf8ab346","2f4094ef7d7d55ddedd0758a3d46f2c8c653e91161217bea1b772cb8350b2632","4cbe65178b3e292e082c6baafff84e98552b67b43321c2fe42ed47cbf342e6b0","1f1a1d0609e7514b711768295528b3b9b0fd67d7f2ba3f1730d2f135e6f58069","87dc4aa712e5fc14d93d1a91919b0105aac5dc6c04259fcb28a5d57a1347fba3","1bc146fb8f5cf8f67d0bb651c2237196ab42d7bae6eff9c079f254c3a4b2dc9f","fcb175cbc3a5f91152314cabe52625d495da9a3c4e9b4578dfcb1018b10b5bd1","66b458867662fd10111e8241abfd372570816317b456b712979826b0d784df37","de743c53fbbaa917b418cff186394602074f211fdeeedc27c3a2ddd83993c043","bf028cb4dfbaa3e027a2d8935a48d323ba5c98c68f8197f38bf341b64c8c467f","3516415029e294ca20490e6795dabfa219dea3fdcb3d1907a1526025f457e1ab","db0305dce175dd75214f12f534fd4fe9805a320530a08f080323c24fd490f5a6","3dcfe6b1a091adfef5bf2e3eec522083f4ff042ddb83416953c06fa1ce50e359","4947905cda1cd79956a972a2eb6844e364d5204396732bf3831a1176e08742be","d7da4a1744d9516461b0301a70f5ff5a4d9372e5dfbcb95cbb55c45ca316efa0","c8a667992ef6ad695e4ca8e2831786deb95875a49f495e1bdba4a38341fe9935","3cf55b882e251da3fac1c15ab2f02bf981c633733080b39ce7d9490f9d2a6066","55e3fa6a6c5dd25e7f255fb107026b517f8adfd616f2da3cb96f20f33f6c4bfe","7ca56e4c578c8688979ac94aaed8ee4815c9406db9b5970de232f9a99e550366","c8865994df8b62fcd7a50c958ecc8dc949240bdb5b8a9e6b99e633df587da94f","ce09862a18df8c6bccaf65ef790abe8ba1769e45b4bf0871f066cd15ef632cb0","f4488f48b65ff16aac6bfa4cff45cfdf192e78d19db661fd296dddf14ded72c8","d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","338bd7c3518b05b4c473971be0e5f8f854aca7cdb00d1b97192c14860f4ebf2f","58ca66ecec099ab769ce4fef62f4cc93718d93c9d0d4b67dfa7ba20c9a7c50ed",{"version":"6d48e64d6615ea7ad8f672c6ef1463ce1d475173b7c63bb8e5e934fb7889ce37","signature":"40faa61a9ab5e9e4259f5ebfd69c513ea0b3cee192f682fbdc52dbd02681bf64"},{"version":"127bf414ca8ced28c9738b91a935121009d03bbc136668db980bd1ba18976b2b","affectsGlobalScope":true},"f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d",{"version":"5143ee76bffb5a63def6280a7439f3630d80adc41cf8fae5f38b4fc4e5f53f8c","signature":"45324f5f085ccbd357d14f7ba508f191d08385e5108cf869cdf4f6a4af24933a"},{"version":"507f969ae42855ccd1be0ad8ae1209440756a4e6184af21f53a5914055babee6","signature":"ac3503070a3dc0abeec16ef16a183aac6f2babdcd61b85514a4fdd3bc2100d56"},{"version":"232bfa73de17aa6835b764e3b1838562f0de391f4bd089622039f116e06d9f94","signature":"4ac72a0d2f0b6f6c03b5be34270bad256d39bd1975f6d34e7bda4e8bb49f98ad"},{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":5,"outDir":"./","removeComments":false,"rootDir":"..","strictNullChecks":true,"target":2},"fileIdsList":[[104],[78,104,111,213],[104,247],[78,104,111],[75,78,104,111,208,209],[104,209,210,212,214],[46,48,49,50,51,52,53,54,55,56,57,58,104],[46,47,49,50,51,52,53,54,55,56,57,58,104],[47,48,49,50,51,52,53,54,55,56,57,58,104],[46,47,48,50,51,52,53,54,55,56,57,58,104],[46,47,48,49,51,52,53,54,55,56,57,58,104],[46,47,48,49,50,52,53,54,55,56,57,58,104],[46,47,48,49,50,51,53,54,55,56,57,58,104],[46,47,48,49,50,51,52,54,55,56,57,58,104],[46,47,48,49,50,51,52,53,55,56,57,58,104],[46,47,48,49,50,51,52,53,54,56,57,58,104],[46,47,48,49,50,51,52,53,54,55,57,58,104],[46,47,48,49,50,51,52,53,54,55,56,58,104],[46,47,48,49,50,51,52,53,54,55,56,57,104],[60,104],[63,104],[64,69,104],[65,75,76,83,92,103,104],[65,66,75,83,104],[67,104],[68,69,76,84,104],[69,92,100,104],[70,72,75,83,104],[71,104],[72,73,104],[74,75,104],[75,104],[75,76,77,92,103,104],[75,76,77,92,104],[78,83,92,103,104],[75,76,78,79,83,92,100,103,104],[78,80,92,100,103,104],[60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[75,81,104],[82,103,104],[72,75,83,92,104],[84,104],[85,104],[63,86,104],[87,102,104,108],[88,104],[89,104],[75,90,104],[90,91,104,106],[75,92,93,94,104],[92,94,104],[92,93,104],[95,104],[96,104],[75,98,99,104],[98,99,104],[69,83,100,104],[101,104],[83,102,104],[64,78,89,103,104],[69,104],[92,104,105],[104,106],[104,107],[64,69,75,77,86,92,103,104,106,108],[92,104,109],[78,104,111,211],[104,248],[75,78,80,92,100,103,104,109,111],[104,202],[104,203],[104,197],[104,199,200,201,202,203,204,205],[78,80,103,104,111,198,200,201,203],[75,76,104,111],[104,111,199,202,203],[75,104,111,202,203],[83,104,111],[104,226,227,228,229],[104,113,114,115,116,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[104,139],[104,139,152],[104,117,166],[104,167],[104,118,141],[104,141],[104,117],[104,170],[104,150],[104,117,158,166],[104,161],[104,163],[104,113],[104,133],[104,114,115,154],[104,174],[104,172],[104,118,119],[104,120],[104,131],[104,117,122],[104,176],[104,118],[104,170,179,182],[104,118,119,163],[104,203,220],[59,75,104,220,221],[104,220],[104,191,203,215,220,222],[78,104,215,220],[104,112,220],[104,221,222,223,233,234,236,237,238,239,240,241],[78,80,104,111,191,220,230,235],[104,225,230],[104,224,231,232],[104,220,223],[58,104,191,220,242,243,244,246,247,249],[58,104,245],[104,220,246,250,251],[58,104,220,244,247,249],[104,192],[104,193],[104,206],[104,194,195],[75,104,111,196,207,216,220],[78,83,104,111,112,191,195,196,207,215,216,217,218,219],[104,217,220],[191,203,220,243],[58],[220],[203,220]],"referencedMap":[[59,1],[244,1],[214,2],[254,3],[247,1],[213,4],[210,5],[215,6],[192,1],[47,7],[48,8],[46,9],[49,10],[50,11],[51,12],[52,13],[53,14],[54,15],[55,16],[56,17],[57,18],[58,19],[211,1],[253,1],[60,20],[61,20],[63,21],[64,22],[65,23],[66,24],[67,25],[68,26],[69,27],[70,28],[71,29],[72,30],[73,30],[74,31],[75,32],[76,33],[77,34],[62,1],[110,1],[78,35],[79,36],[80,37],[111,38],[81,39],[82,40],[83,41],[84,42],[85,43],[86,44],[87,45],[88,46],[89,47],[90,48],[91,49],[92,50],[94,51],[93,52],[95,53],[96,54],[97,1],[98,55],[99,56],[100,57],[101,58],[102,59],[103,60],[104,61],[105,62],[106,63],[107,64],[108,65],[109,66],[218,32],[209,1],[208,1],[212,67],[249,68],[248,1],[112,69],[203,70],[204,71],[198,72],[199,1],[206,73],[202,74],[201,75],[200,76],[205,77],[243,1],[225,1],[245,78],[230,79],[229,1],[228,1],[227,1],[226,1],[191,80],[140,81],[153,82],[115,1],[167,83],[169,84],[168,84],[142,85],[141,1],[143,86],[170,87],[174,88],[172,88],[151,89],[150,1],[159,87],[118,87],[146,1],[187,90],[162,91],[164,92],[182,87],[117,93],[134,94],[149,1],[184,1],[155,95],[171,88],[175,96],[173,97],[188,1],[157,1],[131,93],[123,1],[122,98],[147,87],[148,87],[121,99],[154,1],[116,1],[133,1],[161,1],[189,100],[128,87],[129,101],[176,84],[178,102],[177,102],[113,1],[132,1],[139,1],[130,87],[160,1],[127,1],[186,1],[126,1],[124,103],[125,1],[163,1],[156,1],[183,104],[137,98],[135,98],[136,98],[152,1],[119,1],[179,88],[181,96],[180,97],[166,1],[165,105],[158,1],[145,1],[185,1],[190,1],[114,1],[144,1],[138,1],[120,98],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[2,1],[1,1],[45,1],[12,1],[11,1],[197,1],[241,106],[222,107],[221,108],[238,109],[239,1],[223,110],[234,1],[237,111],[242,112],[235,1],[236,113],[240,1],[231,114],[233,115],[224,116],[232,108],[250,117],[246,118],[252,119],[251,120],[193,121],[194,122],[216,1],[195,1],[207,123],[196,124],[217,125],[220,126],[219,127]],"exportedModulesMap":[[59,1],[244,1],[214,2],[254,3],[247,1],[213,4],[210,5],[215,6],[192,1],[47,7],[48,8],[46,9],[49,10],[50,11],[51,12],[52,13],[53,14],[54,15],[55,16],[56,17],[57,18],[58,19],[211,1],[253,1],[60,20],[61,20],[63,21],[64,22],[65,23],[66,24],[67,25],[68,26],[69,27],[70,28],[71,29],[72,30],[73,30],[74,31],[75,32],[76,33],[77,34],[62,1],[110,1],[78,35],[79,36],[80,37],[111,38],[81,39],[82,40],[83,41],[84,42],[85,43],[86,44],[87,45],[88,46],[89,47],[90,48],[91,49],[92,50],[94,51],[93,52],[95,53],[96,54],[97,1],[98,55],[99,56],[100,57],[101,58],[102,59],[103,60],[104,61],[105,62],[106,63],[107,64],[108,65],[109,66],[218,32],[209,1],[208,1],[212,67],[249,68],[248,1],[112,69],[203,70],[204,71],[198,72],[199,1],[206,73],[202,74],[201,75],[200,76],[205,77],[243,1],[225,1],[245,78],[230,79],[229,1],[228,1],[227,1],[226,1],[191,80],[140,81],[153,82],[115,1],[167,83],[169,84],[168,84],[142,85],[141,1],[143,86],[170,87],[174,88],[172,88],[151,89],[150,1],[159,87],[118,87],[146,1],[187,90],[162,91],[164,92],[182,87],[117,93],[134,94],[149,1],[184,1],[155,95],[171,88],[175,96],[173,97],[188,1],[157,1],[131,93],[123,1],[122,98],[147,87],[148,87],[121,99],[154,1],[116,1],[133,1],[161,1],[189,100],[128,87],[129,101],[176,84],[178,102],[177,102],[113,1],[132,1],[139,1],[130,87],[160,1],[127,1],[186,1],[126,1],[124,103],[125,1],[163,1],[156,1],[183,104],[137,98],[135,98],[136,98],[152,1],[119,1],[179,88],[181,96],[180,97],[166,1],[165,105],[158,1],[145,1],[185,1],[190,1],[114,1],[144,1],[138,1],[120,98],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[2,1],[1,1],[45,1],[12,1],[11,1],[197,1],[241,106],[222,107],[221,108],[238,109],[239,1],[223,110],[234,1],[237,111],[242,112],[235,1],[236,113],[240,1],[231,114],[233,115],[224,116],[232,108],[250,128],[246,129],[252,130],[251,131],[193,121],[194,122],[216,1],[195,1],[207,123],[196,124],[217,125],[220,126],[219,127]],"semanticDiagnosticsPerFile":[59,244,214,254,247,213,210,215,192,47,48,46,49,50,51,52,53,54,55,56,57,58,211,253,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,62,110,78,79,80,111,81,82,83,84,85,86,87,88,89,90,91,92,94,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,218,209,208,212,249,248,112,203,204,198,199,206,202,201,200,205,243,225,245,230,229,228,227,226,191,140,153,115,167,169,168,142,141,143,170,174,172,151,150,159,118,146,187,162,164,182,117,134,149,184,155,171,175,173,188,157,131,123,122,147,148,121,154,116,133,161,189,128,129,176,178,177,113,132,139,130,160,127,186,126,124,125,163,156,183,137,135,136,152,119,179,181,180,166,165,158,145,185,190,114,144,138,120,9,10,14,13,3,15,16,17,18,19,20,21,22,4,5,26,23,24,25,27,28,29,6,30,31,32,33,7,34,35,36,37,8,38,43,44,39,40,41,42,2,1,45,12,11,197,241,222,221,238,239,223,234,237,242,235,236,240,231,233,224,232,250,246,252,251,193,194,216,195,207,196,217,220,219]},"version":"4.7.4"}
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./build/lib');
@@ -0,0 +1,465 @@
1
+ import _ from 'lodash';
2
+ import {server, routeConfiguringFunction, DeviceSettings} from 'appium/driver';
3
+ import axios from 'axios';
4
+ import B from 'bluebird';
5
+ import {TEST_HOST, getTestPort, createAppiumURL} from './helpers';
6
+ import chai from 'chai';
7
+ import sinon from 'sinon';
8
+
9
+ const should = chai.should();
10
+
11
+ /**
12
+ * Creates some helper functions for E2E tests to manage sessions.
13
+ * @template [CommandData=unknown]
14
+ * @template [ResponseData=any]
15
+ * @param {number} port - Port on which the server is running. Typically this will be retrieved via `get-port` beforehand
16
+ * @param {string} [address] - Address/host on which the server is running. Defaults to {@linkcode TEST_HOST}
17
+ * @returns {SessionHelpers<CommandData, ResponseData>}
18
+ */
19
+ export function createSessionHelpers(port, address = TEST_HOST) {
20
+ const createAppiumTestURL =
21
+ /** @type {import('lodash').CurriedFunction2<string,string,string>} */ (
22
+ createAppiumURL(address, port)
23
+ );
24
+
25
+ const createSessionURL = createAppiumTestURL(_, '');
26
+ const newSessionURL = createAppiumTestURL('', 'session');
27
+ return /** @type {SessionHelpers<CommandData, ResponseData>} */ ({
28
+ newSessionURL,
29
+ createAppiumTestURL,
30
+ /**
31
+ *
32
+ * @param {string} sessionId
33
+ * @param {string} cmdName
34
+ * @param {any} [data]
35
+ * @param {AxiosRequestConfig} [config]
36
+ * @returns {Promise<any>}
37
+ */
38
+ postCommand: async (sessionId, cmdName, data = {}, config = {}) => {
39
+ const url = createAppiumTestURL(sessionId, cmdName);
40
+ const response = await axios.post(url, data, config);
41
+ return response.data?.value;
42
+ },
43
+ /**
44
+ *
45
+ * @param {string} sessionIdOrCmdName
46
+ * @param {string|AxiosRequestConfig} cmdNameOrConfig
47
+ * @param {AxiosRequestConfig} [config]
48
+ * @returns {Promise<any>}
49
+ */
50
+ getCommand: async (sessionIdOrCmdName, cmdNameOrConfig, config = {}) => {
51
+ if (!_.isString(cmdNameOrConfig)) {
52
+ config = cmdNameOrConfig;
53
+ cmdNameOrConfig = sessionIdOrCmdName;
54
+ sessionIdOrCmdName = '';
55
+ }
56
+ const response = await axios({
57
+ url: createAppiumTestURL(sessionIdOrCmdName, cmdNameOrConfig),
58
+ validateStatus: null,
59
+ ...config,
60
+ });
61
+ return response.data?.value;
62
+ },
63
+ /**
64
+ *
65
+ * @param {NewSessionData} data
66
+ * @param {AxiosRequestConfig} [config]
67
+ */
68
+ startSession: async (data, config = {}) => {
69
+ data = _.defaultsDeep(data, {
70
+ capabilities: {
71
+ alwaysMatch: {},
72
+ firstMatch: [{}],
73
+ },
74
+ });
75
+ const response = await axios.post(newSessionURL, data, config);
76
+ return response.data?.value;
77
+ },
78
+ /**
79
+ *
80
+ * @param {string} sessionId
81
+ */
82
+ endSession: async (sessionId) =>
83
+ await axios.delete(createSessionURL(sessionId), {
84
+ validateStatus: null,
85
+ }),
86
+ /**
87
+ * @param {string} sessionId
88
+ * @returns {Promise<any>}
89
+ */
90
+ getSession: async (sessionId) => {
91
+ const response = await axios({
92
+ url: createSessionURL(sessionId),
93
+ validateStatus: null,
94
+ });
95
+ return response.data?.value;
96
+ },
97
+ });
98
+ }
99
+
100
+ /**
101
+ * Creates E2E test suites for a driver.
102
+ * @template {Driver} P
103
+ * @param {DriverClass<P>} DriverClass
104
+ * @param {AppiumW3CCapabilities} [defaultCaps]
105
+ */
106
+ export function driverE2ETestSuite(DriverClass, defaultCaps = {}) {
107
+ let address = defaultCaps['appium:address'] ?? TEST_HOST;
108
+ let port = defaultCaps['appium:port'];
109
+ const className = DriverClass.name || '(unknown driver)';
110
+
111
+ describe(`BaseDriver E2E (as ${className})`, function () {
112
+ let baseServer;
113
+ /** @type {P} */
114
+ let d;
115
+ /**
116
+ * This URL creates a new session
117
+ * @type {string}
118
+ **/
119
+ let newSessionURL;
120
+
121
+ /** @type {SessionHelpers['startSession']} */
122
+ let startSession;
123
+ /** @type {SessionHelpers['getSession']} */
124
+ let getSession;
125
+ /** @type {SessionHelpers['endSession']} */
126
+ let endSession;
127
+ /** @type {SessionHelpers['getCommand']} */
128
+ let getCommand;
129
+ /** @type {SessionHelpers['postCommand']} */
130
+ let postCommand;
131
+ before(async function () {
132
+ port = port ?? (await getTestPort());
133
+ defaultCaps = {...defaultCaps, 'appium:port': port};
134
+ d = new DriverClass({port, address});
135
+ baseServer = await server({
136
+ routeConfiguringFunction: routeConfiguringFunction(d),
137
+ port,
138
+ hostname: address,
139
+ // @ts-expect-error
140
+ cliArgs: {},
141
+ });
142
+ ({startSession, getSession, endSession, newSessionURL, getCommand, postCommand} =
143
+ createSessionHelpers(port, address));
144
+ });
145
+
146
+ after(async function () {
147
+ await baseServer.close();
148
+ });
149
+
150
+ describe('session handling', function () {
151
+ it('should handle idempotency while creating sessions', async function () {
152
+ const sessionIds = [];
153
+ let times = 0;
154
+ do {
155
+ const {sessionId} = await startSession(
156
+ {
157
+ capabilities: {alwaysMatch: defaultCaps},
158
+ },
159
+ {
160
+ headers: {
161
+ 'X-Idempotency-Key': '123456',
162
+ },
163
+ // XXX: I'm not sure what these are, as they are not documented axios options,
164
+ // nor are they mentioned in our source
165
+ // @ts-expect-error
166
+ simple: false,
167
+ resolveWithFullResponse: true,
168
+ }
169
+ );
170
+
171
+ sessionIds.push(sessionId);
172
+ times++;
173
+ } while (times < 2);
174
+ _.uniq(sessionIds).length.should.equal(1);
175
+
176
+ const {status, data} = await endSession(sessionIds[0]);
177
+ status.should.equal(200);
178
+ should.equal(data.value, null);
179
+ });
180
+
181
+ it('should handle idempotency while creating parallel sessions', async function () {
182
+ const reqs = [];
183
+ let times = 0;
184
+ do {
185
+ reqs.push(
186
+ startSession(
187
+ {
188
+ capabilities: {
189
+ alwaysMatch: defaultCaps,
190
+ },
191
+ },
192
+ {
193
+ headers: {
194
+ 'X-Idempotency-Key': '12345',
195
+ },
196
+ }
197
+ )
198
+ );
199
+ times++;
200
+ } while (times < 2);
201
+ const sessionIds = _.map(await B.all(reqs), 'sessionId');
202
+ _.uniq(sessionIds).length.should.equal(1);
203
+
204
+ const {status, data} = await endSession(sessionIds[0]);
205
+ status.should.equal(200);
206
+ should.equal(data.value, null);
207
+ });
208
+
209
+ it('should create session and retrieve a session id, then delete it', async function () {
210
+ let {status, data} = await axios.post(newSessionURL, {
211
+ capabilities: {
212
+ alwaysMatch: defaultCaps,
213
+ },
214
+ });
215
+
216
+ status.should.equal(200);
217
+ should.exist(data.value.sessionId);
218
+ data.value.capabilities.platformName.should.equal(defaultCaps.platformName);
219
+ data.value.capabilities.deviceName.should.equal(defaultCaps['appium:deviceName']);
220
+
221
+ ({status, data} = await endSession(/** @type {string} */ (d.sessionId)));
222
+
223
+ status.should.equal(200);
224
+ should.equal(data.value, null);
225
+ should.equal(d.sessionId, null);
226
+ });
227
+ });
228
+
229
+ it.skip('should throw NYI for commands not implemented', async function () {});
230
+
231
+ describe('command timeouts', function () {
232
+ let originalFindElement, originalFindElements;
233
+
234
+ /**
235
+ * @param {number} [timeout]
236
+ */
237
+ async function startTimeoutSession(timeout) {
238
+ const caps = _.cloneDeep(defaultCaps);
239
+ caps['appium:newCommandTimeout'] = timeout;
240
+ return await startSession({capabilities: {alwaysMatch: caps}});
241
+ }
242
+
243
+ before(function () {
244
+ originalFindElement = d.findElement;
245
+ d.findElement = function () {
246
+ return 'foo';
247
+ }.bind(d);
248
+
249
+ originalFindElements = d.findElements;
250
+ d.findElements = async function () {
251
+ await B.delay(200);
252
+ return ['foo'];
253
+ }.bind(d);
254
+ });
255
+
256
+ after(function () {
257
+ d.findElement = originalFindElement;
258
+ d.findElements = originalFindElements;
259
+ });
260
+
261
+ it('should set a default commandTimeout', async function () {
262
+ let newSession = await startTimeoutSession();
263
+ d.newCommandTimeoutMs.should.be.above(0);
264
+ await endSession(newSession.sessionId);
265
+ });
266
+
267
+ it('should timeout on commands using commandTimeout cap', async function () {
268
+ let newSession = await startTimeoutSession(0.25);
269
+ const sessionId = /** @type {string} */ (d.sessionId);
270
+ await postCommand(sessionId, 'element', {
271
+ using: 'name',
272
+ value: 'foo',
273
+ });
274
+ await B.delay(400);
275
+ const value = await getSession(sessionId);
276
+ should.equal(value.error, 'invalid session id');
277
+ should.equal(d.sessionId, null);
278
+ const resp = (await endSession(newSession.sessionId)).data.value;
279
+ should.equal(resp?.error, 'invalid session id');
280
+ });
281
+
282
+ it('should not timeout with commandTimeout of false', async function () {
283
+ let newSession = await startTimeoutSession(0.1);
284
+ let start = Date.now();
285
+ const value = await postCommand(/** @type {string} */ (d.sessionId), 'elements', {
286
+ using: 'name',
287
+ value: 'foo',
288
+ });
289
+ (Date.now() - start).should.be.above(150);
290
+ value.should.eql(['foo']);
291
+ await endSession(newSession.sessionId);
292
+ });
293
+
294
+ it('should not timeout with commandTimeout of 0', async function () {
295
+ d.newCommandTimeoutMs = 2;
296
+ let newSession = await startTimeoutSession(0);
297
+
298
+ await postCommand(/** @type {string} */ (d.sessionId), 'element', {
299
+ using: 'name',
300
+ value: 'foo',
301
+ });
302
+ await B.delay(400);
303
+ const value = await getSession(/** @type {string} */ (d.sessionId));
304
+ value.platformName?.should.equal(defaultCaps.platformName);
305
+ const resp = (await endSession(newSession.sessionId)).data.value;
306
+ should.equal(resp, null);
307
+
308
+ d.newCommandTimeoutMs = 60 * 1000;
309
+ });
310
+
311
+ it('should not timeout if its just the command taking awhile', async function () {
312
+ let newSession = await startTimeoutSession(0.25);
313
+ // XXX: race condition: we must build this URL before ...something happens...
314
+ // which causes `d.sessionId` to be missing
315
+ const {sessionId} = d;
316
+
317
+ await postCommand(/** @type {string} */ (d.sessionId), 'element', {
318
+ using: 'name',
319
+ value: 'foo',
320
+ });
321
+ await B.delay(400);
322
+ const value = await getSession(/** @type {string} */ (sessionId));
323
+ value.error.should.equal('invalid session id');
324
+ should.equal(d.sessionId, null);
325
+ const resp = (await endSession(newSession.sessionId)).data.value;
326
+ /** @type {string} */ (/** @type { {error: string} } */ (resp).error).should.equal(
327
+ 'invalid session id'
328
+ );
329
+ });
330
+
331
+ it('should not have a timer running before or after a session', async function () {
332
+ // @ts-expect-error
333
+ should.not.exist(d.noCommandTimer);
334
+ let newSession = await startTimeoutSession(0.25);
335
+ newSession.sessionId.should.equal(d.sessionId);
336
+ // @ts-expect-error
337
+ should.exist(d.noCommandTimer);
338
+ await endSession(newSession.sessionId);
339
+ // @ts-expect-error
340
+ should.not.exist(d.noCommandTimer);
341
+ });
342
+ });
343
+
344
+ describe('settings api', function () {
345
+ before(function () {
346
+ d.settings = new DeviceSettings({ignoreUnimportantViews: false});
347
+ });
348
+ it('should be able to get settings object', function () {
349
+ d.settings.getSettings().ignoreUnimportantViews.should.be.false;
350
+ });
351
+ it('should not reject when `updateSettings` method is not provided', async function () {
352
+ await d.settings.update({ignoreUnimportantViews: true}).should.not.be.rejected;
353
+ });
354
+ it('should reject for invalid update object', async function () {
355
+ await d.settings
356
+ // @ts-expect-error
357
+ .update('invalid json')
358
+ .should.be.rejectedWith('JSON');
359
+ });
360
+ });
361
+
362
+ describe('unexpected exits', function () {
363
+ /** @type {import('sinon').SinonSandbox} */
364
+ let sandbox;
365
+ beforeEach(function () {
366
+ sandbox = sinon.createSandbox();
367
+ });
368
+
369
+ afterEach(function () {
370
+ sandbox.restore();
371
+ });
372
+
373
+ it('should reject a current command when the driver crashes', async function () {
374
+ sandbox.stub(d, 'getStatus').callsFake(async function () {
375
+ await B.delay(5000);
376
+ });
377
+ const reqPromise = getCommand('status', {validateStatus: null});
378
+ // make sure that the request gets to the server before our shutdown
379
+ await B.delay(100);
380
+ const shutdownEventPromise = new B((resolve, reject) => {
381
+ setTimeout(
382
+ () =>
383
+ reject(
384
+ new Error(
385
+ 'onUnexpectedShutdown event is expected to be fired within 5 seconds timeout'
386
+ )
387
+ ),
388
+ 5000
389
+ );
390
+ d.onUnexpectedShutdown(resolve);
391
+ });
392
+ d.startUnexpectedShutdown(new Error('Crashytimes'));
393
+ const value = await reqPromise;
394
+ value.message.should.contain('Crashytimes');
395
+ await shutdownEventPromise;
396
+ });
397
+ });
398
+
399
+ describe('event timings', function () {
400
+ it('should not add timings if not using opt-in cap', async function () {
401
+ const session = await startSession({capabilities: {alwaysMatch: defaultCaps}});
402
+ const res = await getSession(session.sessionId);
403
+ should.not.exist(res.events);
404
+ await endSession(session.sessionId);
405
+ });
406
+ it('should add start session timings', async function () {
407
+ const caps = {...defaultCaps, 'appium:eventTimings': true};
408
+ const session = await startSession({capabilities: {alwaysMatch: caps}});
409
+ const res = await getSession(session.sessionId);
410
+ should.exist(res.events);
411
+ should.exist(res.events?.newSessionRequested);
412
+ should.exist(res.events?.newSessionStarted);
413
+ res.events?.newSessionRequested[0].should.be.a('number');
414
+ res.events?.newSessionStarted[0].should.be.a('number');
415
+ await endSession(session.sessionId);
416
+ });
417
+ });
418
+ });
419
+ }
420
+
421
+ /**
422
+ * A {@linkcode DriverClass}, except using the base {@linkcode Driver} type instead of `ExternalDriver`.
423
+ * This allows the suite to work for `BaseDriver`.
424
+ * @template {Driver} P
425
+ * @typedef {import('@appium/types').DriverClass<P>} DriverClass
426
+ */
427
+
428
+ /**
429
+ * @typedef {import('@appium/types').Capabilities} Capabilities
430
+ * @typedef {import('@appium/types').Driver} Driver
431
+ * @typedef {import('@appium/types').DriverStatic} DriverStatic
432
+ * @typedef {import('@appium/types').AppiumW3CCapabilities} AppiumW3CCapabilities
433
+ * @typedef {import('axios').AxiosRequestConfig} AxiosRequestConfig
434
+ * @typedef {import('@appium/types').SingularSessionData} SingularSessionData
435
+ */
436
+
437
+ /**
438
+ * @template T,D
439
+ * @typedef {import('axios').AxiosResponse<T, D>} AxiosResponse
440
+ */
441
+
442
+ /**
443
+ * @typedef NewSessionData
444
+ * @property {import('type-fest').RequireAtLeastOne<import('@appium/types').W3CCapabilities, 'firstMatch'|'alwaysMatch'>} capabilities
445
+ */
446
+
447
+ /**
448
+ * @typedef NewSessionResponse
449
+ * @property {string} sessionId,
450
+ * @property {import('@appium/types').Capabilities} capabilities
451
+ */
452
+
453
+ /**
454
+ * Some E2E helpers for making requests and managing sessions
455
+ * See {@linkcode createSessionHelpers}
456
+ * @template [CommandData=unknown]
457
+ * @template [ResponseData=any]
458
+ * @typedef SessionHelpers
459
+ * @property {string} newSessionURL - URL to create a new session. Can be used with raw `axios` requests to fully inspect raw response. Mostly, this will not be used.
460
+ * @property {(data: NewSessionData, config?: AxiosRequestConfig) => Promise<NewSessionResponse>} startSession - Begin a session
461
+ * @property {(sessionId: string) => Promise<AxiosResponse<{value: {error?: string}?}, {validateStatus: null}>>} endSession - End a session. _Note: resolves with raw response object_
462
+ * @property {(sessionId: string) => Promise<SingularSessionData>} getSession - Get info about a session
463
+ * @property {(sessionId: string, cmdName: string, data?: CommandData, config?: AxiosRequestConfig) => Promise<ResponseData>} postCommand - Send an arbitrary command via `POST`.
464
+ * @property {(sessionIdOrCmdName: string, cmdNameOrConfig: string|AxiosRequestConfig, config?: AxiosRequestConfig) => Promise<ResponseData>} getCommand - Send an arbitrary command via `GET`. Optional `sessionId`.
465
+ */
package/lib/helpers.js ADDED
@@ -0,0 +1,68 @@
1
+ import getPort from 'get-port';
2
+ import {curry} from 'lodash';
3
+
4
+ /**
5
+ * Default test host
6
+ */
7
+ const TEST_HOST = '127.0.0.1';
8
+
9
+ let testPort;
10
+
11
+ /**
12
+ * Returns a free port; one per process
13
+ * @param {boolean} [force] - If true, do not reuse the port (if it already exists)
14
+ * @returns {Promise<number>} a free port
15
+ */
16
+ async function getTestPort(force = false) {
17
+ if (force || !testPort) {
18
+ let port = await getPort();
19
+ if (!testPort) {
20
+ testPort = port;
21
+ }
22
+ return port;
23
+ }
24
+ return testPort;
25
+ }
26
+
27
+ /**
28
+ * Build an Appium URL from components.
29
+ *
30
+ * **All** parameters are required. Provide an empty string (`''`) if you don't need one.
31
+ * To rearrange arguments (if needed), use the placeholder from Lodash (`_`).
32
+ *
33
+ */
34
+ const createAppiumURL = curry(
35
+ /**
36
+ * @param {string} address - Base address (w/ optional protocol)
37
+ * @param {string|number} port - Port number
38
+ * @param {string?} session - Session ID
39
+ * @param {string} pathname - Extra path
40
+ * @returns {string} New URL
41
+ * @example
42
+ *
43
+ * import _ from 'lodash';
44
+ *
45
+ * // http://127.0.0.1:31337/session
46
+ * createAppiumURL('127.0.0.1', 31337, '', 'session')
47
+ *
48
+ * // http://127.0.0.1:31337/session/asdfgjkl
49
+ * const createSessionURL = createAppiumURL('127.0.0.1', 31337, _, 'session')
50
+ * createSessionURL('asdfgjkl')
51
+ *
52
+ * // http://127.0.0.1:31337/session/asdfgjkl/appium/execute
53
+ * const createURLWithPath = createAppiumURL('127.0.0.1', 31337, 'asdfgjkl');
54
+ * createURLWithPath('appium/execute')
55
+ */
56
+ (address, port, session, pathname) => {
57
+ if (!/^https?:\/\//.test(address)) {
58
+ address = `http://${address}`;
59
+ }
60
+ let path = session ? `session/${session}` : '';
61
+ if (pathname) {
62
+ path = `${path}/${pathname}`;
63
+ }
64
+ return new URL(path, `${address}:${port}`).href;
65
+ }
66
+ );
67
+
68
+ export {TEST_HOST, getTestPort, createAppiumURL};
package/lib/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * from './e2e-suite';
2
+ export * from './unit-suite';
3
+ export * from './helpers';
4
+
5
+ /**
6
+ * @typedef {import('@appium/types').DriverClass} DriverClass
7
+ * @typedef {import('@appium/types').W3CCapabilities} W3CCapabilities
8
+ * @typedef {import('@appium/types').AppiumW3CCapabilities} AppiumW3CCapabilities
9
+ */