diff --git a/.nvmrc b/.nvmrc index 6fa8dec..9e2934a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.13.0 +24.11.1 diff --git a/dist/ApiConfig.d.ts b/dist/ApiConfig.d.ts index fcd44eb..d9b4f2f 100644 --- a/dist/ApiConfig.d.ts +++ b/dist/ApiConfig.d.ts @@ -6,5 +6,6 @@ export type ApiConfig = { apiKey?: string; auth?: AxiosBasicCredentials; withCredentials?: boolean; + withXSRFToken?: boolean | undefined; }; export default ApiConfig; diff --git a/dist/bitbar-cloud-api-client.js b/dist/bitbar-cloud-api-client.js index 9ddee7f..d008815 100644 --- a/dist/bitbar-cloud-api-client.js +++ b/dist/bitbar-cloud-api-client.js @@ -1,11 +1,11 @@ -/* @bitbar/cloud-api-client v1.5.16 | Copyright 2025 (c) SmartBear Software and contributors | .git/blob/master/LICENSE */ +/* @bitbar/cloud-api-client v1.6.0 | Copyright 2025 (c) SmartBear Software and contributors | .git/blob/master/LICENSE */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@bitbar/finka'), require('qs'), require('node-abort-controller')) : typeof define === 'function' && define.amd ? define(['exports', '@bitbar/finka', 'qs', 'node-abort-controller'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["bitbar-cloud-api-client"] = {}, global["@bitbar/finka"], global.qs, global["node-abort-controller"])); })(this, (function (exports, finka, qs, nodeAbortController) { 'use strict'; - var version = "1.5.16"; + var version = "1.6.0"; /****************************************************************************** Copyright (c) Microsoft Corporation. @@ -276,12 +276,11 @@ return this; } formData(data) { - this.headers({ - 'Content-Type': 'multipart/form-data' - }).data(data); + this.data(data); return this; } send() { + var _a; const requestConfig = Object.deepAssign({}, this.requestConfig, { url: `/${this.stack.join('/')}`, signal: this.abortController.signal @@ -289,16 +288,17 @@ if (requestConfig.headers == null) { requestConfig.headers = {}; } - if (requestConfig.headers['Content-Type'] == null) { + if (!(requestConfig.method === 'POST' && requestConfig.data instanceof FormData) && + requestConfig.headers['Content-Type'] == null) { requestConfig.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; } if (requestConfig.method === 'POST' && - requestConfig.headers['Content-Type'].startsWith('application/x-www-form-urlencoded') && + ((_a = requestConfig.headers['Content-Type']) === null || _a === void 0 ? void 0 : _a.startsWith('application/x-www-form-urlencoded')) && requestConfig.data != null) { requestConfig.data = this.paramsSerializer(requestConfig.data); } if (requestConfig.params) { - requestConfig.paramsSerializer = this.paramsSerializer; + requestConfig.paramsSerializer = { indexes: false }; } return this.root.axios.request(requestConfig); } @@ -1802,6 +1802,7 @@ password: '' }; } + this.axiosConfig.withXSRFToken = true; this.axiosConfig.withCredentials = config.withCredentials == null ? false : config.withCredentials; this.axios = axios.create(this.axiosConfig); } diff --git a/dist/bitbar-cloud-api-client.js.map b/dist/bitbar-cloud-api-client.js.map index 2cc8ef7..177b096 100644 --- a/dist/bitbar-cloud-api-client.js.map +++ b/dist/bitbar-cloud-api-client.js.map @@ -1 +1 @@ -{"version":3,"file":"bitbar-cloud-api-client.js","sources":["../src/Filter.ts","../src/finka.ts","../src/FilterBuilder.ts","../src/api/models/HTTP.ts","../src/api/APIEntity.ts","../src/api/APIList.ts","../src/api/APIResource.ts","../src/api/APIListCleanupConfigurations.ts","../src/api/APIResourceCleanupConfiguration.ts","../src/api/APIAdminListDevices.ts","../src/api/APIAdminListRuns.ts","../src/api/APIAdminListServices.ts","../src/api/decorators/NonRequestable.ts","../src/api/APIAdminListStatistics.ts","../src/api/APIAdminResourceAccount.ts","../src/api/APIAdminResourceAccountService.ts","../src/api/APIAdminResourceCluster.ts","../src/api/APIAdminResourceDevice.ts","../src/api/APIAdminResourceDeviceModel.ts","../src/api/class/InputFileset.ts","../src/api/class/Images.filter.ts","../src/api/class/NonMedia.filter.ts","../src/api/APIListOutputFiles.ts","../src/api/class/OutputFileset.ts","../src/api/APIListScreenshots.ts","../src/api/APIResourceDeviceSessionCommon.ts","../src/api/factory/postAdminDeviceSessionChangeBillable.ts","../src/api/APIAdminResourceDeviceSessionStandalone.ts","../src/api/APIAdminResourceDeviceTime.ts","../src/api/APIAdminResourceFramework.ts","../src/api/APIAdminResourceLicense.ts","../src/api/factory/postDeviceRunIds.ts","../src/api/APIAdminResourceRunStandalone.ts","../src/api/APIAdminResourceService.ts","../src/api/APIAdminResourceUserAccount.ts","../src/api/APIResourceDeviceSessionStandalone.ts","../src/api/APIAdminResourceUser.ts","../src/api/APIResourceAccessGroup.ts","../src/api/APIResourceDeviceGroup.ts","../src/api/APIResourceFile.ts","../src/api/APIListTestCaseRuns.ts","../src/api/APIResourceDeviceSession.ts","../src/api/APIListTestRunDeviceSessions.ts","../src/api/APIResourceRunCommon.ts","../src/api/APIResourceRun.ts","../src/api/APIResourceProject.ts","../src/api/APIAdminResource.ts","../src/api/APIListDevices.ts","../src/api/APIListProperties.ts","../src/api/APIListServices.ts","../src/api/APIListUsers.ts","../src/api/APIResourceBillingPeriod.ts","../src/api/APIResourceAccount.ts","../src/api/APIResourceBroker.ts","../src/api/APIResourceDevice.ts","../src/api/APIResourceLabelGroup.ts","../src/api/APIListFiles.ts","../src/api/APIResourceChannel.ts","../src/api/APIListNotifications.ts","../src/api/APIListRuns.ts","../src/api/APIListSmartbearTunnels.ts","../src/api/APIResourceNotification.ts","../src/api/APIResourceUser.ts","../src/api/APIResourceUserSession.ts","../src/API.ts","../src/CloudAPIClient.ts","../src/api/models/AccessGroup.ts","../src/api/models/Account.ts","../src/api/models/AccountService.ts","../src/api/models/AdminDevice.ts","../src/api/models/AdminFrameworkStatistics.ts","../src/api/models/BillingPeriod.ts","../src/api/models/Broker.ts","../src/api/models/Cluster.ts","../src/api/models/Device.ts","../src/api/models/DeviceModelCriterion.ts","../src/api/models/DeviceModelPool.ts","../src/api/models/DeviceProblem.ts","../src/api/models/DeviceSession.ts","../src/api/models/Enum.ts","../src/api/models/License.ts","../src/api/models/Notification.ts","../src/api/models/Project.ts","../src/api/models/Screenshot.ts","../src/api/models/Service.ts","../src/api/models/SharedResource.ts","../src/api/models/TestCaseRun.ts","../src/api/models/TestRun.ts","../src/api/models/User.ts","../src/api/models/UserFile.ts","../src/api/models/VisualTest.ts"],"sourcesContent":["/**\n * Filter\n */\n\nexport class Filter {\n name: string;\n value: T;\n operand: string;\n\n constructor(name: string, value: T, operand: string) {\n this.name = name;\n this.value = value;\n this.operand = operand;\n }\n}\n\nexport default Filter;\n","import finka from '@bitbar/finka';\n\nfinka();\n\nexport default {};\n","import {Filter} from './Filter';\nimport './finka';\n\n/**\n * FilterBuilder\n *\n * Builds filter string according to Bitbar Cloud backend convention\n */\nexport class FilterBuilder {\n\n private readonly filters: Array = [];\n\n gt(name: string, value: number): this {\n return this.add(name, value, 'gt');\n }\n\n\n lt(name: string, value: number): this {\n return this.add(name, value, 'lt');\n }\n\n after(name: string, value: Date | number): this {\n return this.add(name, value, 'after', true);\n }\n\n afterorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'afterorequal', true);\n }\n\n before(name: string, value: Date | number): this {\n return this.add(name, value, 'before', true);\n }\n\n beforeorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'beforeorequal', true);\n }\n\n on(name: string, value: any): this {\n return this.add(name, value, 'on');\n }\n\n eq(name: string, value: any): this {\n return this.add(name, value, 'eq');\n }\n\n contains(name: string, value: string): this {\n return this.add(name, value, 'contains');\n }\n\n like(name: string, value: string): this {\n return this.add(name, value, 'like');\n }\n\n notlike(name: string, value: string): this {\n return this.add(name, value, 'notlike');\n }\n\n isnull(name: string): this {\n return this.add(name, undefined, 'isnull');\n }\n\n isnotnull(name: string): this {\n return this.add(name, undefined, 'isnotnull');\n }\n\n in(name: string, value: Array): this {\n return this.add(name, value, 'in', true);\n }\n\n notin(name: string, value: Array): this {\n return this.add(name, value, 'notin', true);\n }\n\n raw(filter: Filter | string | Filter[] | string[]): void {\n const filters = Array.wrap(filter);\n for (const filter of filters) {\n if (this.isFilterPart(filter)) {\n this.filters.push(filter);\n } else {\n throw new SyntaxError(`Filter ${filter} has invalid syntax`);\n }\n }\n }\n\n\n /**\n * Check if given string is proper filter part\n */\n isFilterPart(str: string): boolean {\n return /^[a-zA-Z0-9.]{2,12}_(?:isnull$|(?:gt|lt|(?:after|before)(?:orequal)?|on|eq|contains|like|(?:not)?in)_)/.test(str);\n }\n\n toString(): string {\n const parts: Array = [];\n\n let part: string,\n val: string;\n\n for (const filter of this.filters) {\n if (typeof filter === 'string') {\n part = filter;\n } else {\n val = '';\n if (filter.value.length > 1 || typeof filter.value[0] !== 'undefined') {\n val = `_${filter.value.join('|')}`;\n }\n part = `${filter.name}_${filter.operand}${val}`;\n }\n parts.push(part);\n }\n\n return parts.join(';');\n }\n\n /**\n * Add filter to filters list\n * @param name {string} Name\n * @param value {*} Value\n * @param operand {string} Operand\n * @param [checkNull=false] {boolean} Check null?\n * @returns {FilterBuilder}\n */\n private add(name: string, value: T, operand: string, checkNull = false): this {\n\n let _value = Array.wrap(value);\n\n if (_value.length === 0) {\n return this;\n }\n\n // auto-convert\n for (let i = 0; i < _value.length; i++) {\n const v = _value[i];\n if (typeof v === 'object' && v instanceof Date) {\n _value[i] = v.getTime();\n }\n }\n\n let isNull = false;\n if (checkNull) {\n // check null existence\n for (const v of _value) {\n if (v !== null) {\n continue;\n }\n isNull = true;\n }\n\n if (isNull) {\n _value = _value.filter((item: any) => item !== null);\n operand += 'ornull';\n }\n }\n\n if (operand.endsWith('ornull') && _value.length === 0) {\n operand = 'isnull';\n }\n\n // add filter\n this.filters.push(new Filter>(name, _value, operand));\n\n return this;\n }\n}\n\n\nexport default FilterBuilder;\n","import {Method} from 'axios';\n\n\n/**\n * Allowed methods\n *\n * @type {Array}\n * @default\n */\nexport const ALLOWED_HTTP_METHODS: Array = ['GET', 'POST', 'DELETE'];\n\nexport type QueryParam = string | number | boolean;\nexport type QueryParams = Record>;\n\nexport enum APIOrder {\n asc = 'a',\n desc = 'd'\n}\n\nexport interface CollectionQueryParams extends QueryParams {\n filter: string;\n limit: number;\n offset: number;\n sort: string;\n search: string;\n}\n\nexport type CollectionBasicQueryParams = Omit\n\nexport type NoQueryParams = {\n [key in any]: never;\n}\n\nexport type CollectionResponse = {\n data: Array;\n empty: boolean;\n id: number;\n limit: number;\n next: string;\n offset: number;\n previous: string;\n search: string;\n sort: string;\n total: number;\n}\n\nexport type SimpleCollectionResponse = Pick, 'data' | 'id'>;\nexport type NoData = void;\n","import {AxiosRequestConfig, AxiosResponse, Method} from 'axios';\nimport {stringify} from 'qs';\nimport {API} from '../API';\nimport {ALLOWED_HTTP_METHODS, QueryParams} from './models/HTTP';\nimport {AbortController} from 'node-abort-controller';\n\n\n/**\n * @typeParam RESPONSE HTTP Response return type.\n * @typeParam QUERY_PARAMS Allowed Query Params\n * @typeParam DATA Allowed Data Object\n */\nexport class APIEntity {\n\n root: API;\n\n protected stack: Array = [];\n protected requestConfig: AxiosRequestConfig = {};\n protected ALLOWED_HTTP_METHODS: Array = ALLOWED_HTTP_METHODS;\n protected abortController: AbortController;\n\n /**\n * Constructor\n * @param {APIEntity|object} [parent] - Specifies a parent from which should be inherited properties\n */\n constructor(parent: APIEntity | API) {\n if (parent instanceof APIEntity) {\n this.root = parent.root;\n\n if (Array.isArray(parent.stack)) { //???\n this.push(...parent.stack);\n }\n\n if (parent.requestConfig != null) {\n this.setRequestConfig(parent.requestConfig);\n }\n } else {\n this.root = parent;\n }\n this.abortController = new AbortController();\n }\n\n abortRequest() {\n this.abortController.abort();\n this.abortController = new AbortController();\n }\n\n push(...items: Array): this {\n this.stack = this.stack.concat(items);\n return this;\n }\n\n shift(): this {\n this.stack.shift();\n return this;\n }\n\n restack(...items: Array): this {\n this.stack = items;\n return this;\n }\n\n /**\n * Get first element of the stack\n */\n get first(): string | number {\n return this.stack[0];\n }\n\n /**\n * Get last element of the stack\n */\n get last(): string | number {\n return this.stack[this.stack.length - 1];\n }\n\n /**\n * Set last element of the stack\n */\n set last(val) {\n this.stack[this.stack.length - 1] = val;\n }\n\n toUrl(absolute = false): string {\n let url = `/${this.stack.join('/')}`;\n\n if (absolute) {\n url = this.root.baseUrl + url;\n }\n\n return url;\n }\n\n setRequestConfig(requestConfig: AxiosRequestConfig): this {\n Object.deepAssign(this.requestConfig, requestConfig);\n return this;\n }\n\n removeRequestConfig(key: keyof AxiosRequestConfig): this {\n delete this.requestConfig[key];\n return this;\n }\n\n headers(headers: Record): this {\n const _headers: Record = {};\n\n // Unify/Standarize headers keys\n for (const key in headers) {\n const newKey = key.replace(/(?:^|-)([a-z])/g, (letter) => letter.toUpperCase());\n _headers[newKey] = headers[key];\n }\n\n return this.setRequestConfig({\n headers: _headers\n });\n }\n\n /**\n * Set HTTP method\n */\n method(name: Method): this {\n const NAME: Uppercase = >name.toLocaleUpperCase();\n const isAllowed: boolean = this.ALLOWED_HTTP_METHODS.indexOf(NAME) > -1;\n\n if (!isAllowed) {\n throw new Error(`Method '${NAME}' is not allowed! You can use: ${this.ALLOWED_HTTP_METHODS.join(', ')}`);\n }\n\n return this.setRequestConfig({\n method: NAME\n });\n }\n\n /**\n * Set GET as HTTP method\n */\n get(): this {\n return this.method('GET');\n }\n\n /**\n * Set POST as HTTP method\n */\n post(): this {\n return this.method('POST');\n }\n\n /**\n * Set DELETE as HTTP method\n */\n delete(): this {\n return this.method('DELETE');\n }\n\n /**\n * Set params\n */\n params(params: Pick): this {\n this.setRequestConfig({params});\n return this;\n }\n\n getParams(): Partial {\n return this.requestConfig.params == null ? {} : this.requestConfig.params;\n }\n\n removeParam(key: keyof QUERY_PARAMS): this {\n delete this.requestConfig.params[key];\n return this;\n }\n\n /**\n * Set data\n */\n data(data: DATA): this {\n this.setRequestConfig({data});\n return this;\n }\n\n /**\n * Set JSON data\n */\n jsonData(data: DATA): this {\n this.headers({\n 'Content-Type': 'application/json'\n }).data(data);\n return this;\n }\n\n /**\n * Set form data\n */\n formData(data: DATA): this {\n this.headers({\n 'Content-Type': 'multipart/form-data'\n }).data(data);\n return this;\n }\n\n /**\n * Send request\n */\n send(): Promise> {\n const requestConfig = Object.deepAssign({}, this.requestConfig, {\n url: `/${this.stack.join('/')}`,\n signal: this.abortController.signal\n });\n\n // Set default headers\n if (requestConfig.headers == null) {\n requestConfig.headers = {};\n }\n\n // Set default Content-Type\n if (requestConfig.headers['Content-Type'] == null) {\n requestConfig.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n\n // Convert data if needed\n if (requestConfig.method === 'POST' &&\n (requestConfig.headers['Content-Type']).startsWith('application/x-www-form-urlencoded') &&\n requestConfig.data != null) {\n requestConfig.data = this.paramsSerializer(requestConfig.data);\n }\n\n if (requestConfig.params) {\n requestConfig.paramsSerializer = this.paramsSerializer;\n }\n\n // Send request\n return this.root.axios.request(requestConfig);\n }\n\n protected paramsSerializer(params: DATA | QUERY_PARAMS): string {\n return stringify(params, {\n arrayFormat: 'brackets'\n });\n }\n}\n\n\nexport default APIEntity;\n","import {AxiosResponse} from 'axios';\nimport {FilterBuilder} from '../FilterBuilder'\nimport {APIEntity} from './APIEntity'\nimport {\n APIOrder,\n CollectionBasicQueryParams,\n CollectionQueryParams,\n CollectionResponse,\n NoQueryParams,\n SimpleCollectionResponse\n} from './models/HTTP';\n\n\nexport const DEFAULT_LIMIT: number = 20;\nexport const DEFAULT_OFFSET: number = 0;\n\nexport type APIListQuery = CollectionBasicQueryParams | CollectionQueryParams | NoQueryParams;\n\nexport class APIList\n extends APIEntity | SimpleCollectionResponse, QUERY_PARAMS, DATA> {\n\n /**\n * Shortcut for sending data POST\n */\n create(data: DATA): Promise> {\n return this.post().data(data).send();\n }\n\n /**\n * Sets sorting\n *\n * @public\n * @param {string} name - Name of the column according to which the data will be sorted\n * @param {string} [order=a] - Sorting order. Possibilities: 'a', 'd'\n */\n sort(name: string, order: APIOrder = APIOrder.asc): this {\n return this.params<'sort'>({\n sort: `${name}_${order}`\n });\n }\n\n /**\n * Sets limit\n *\n * @public\n * @param {number} [limit=DEFAULT_LIMIT] - Limit to be set\n * @returns this\n */\n limit(limit = DEFAULT_LIMIT): this {\n if (!Number.isNatural(limit)) {\n throw new Error(`Limit '${limit}' is invalid!`);\n }\n\n return this.params<'limit'>({\n limit\n });\n }\n\n /**\n * Gets limit\n *\n * @public\n * @returns number\n */\n getLimit(): number {\n const params = this.getParams();\n return params.limit == null ? DEFAULT_LIMIT : params.limit;\n }\n\n /**\n * Disables limit\n *\n * @public\n * @returns this\n */\n noLimit(): this {\n return this.limit(0);\n }\n\n /**\n * Sets offset\n *\n * @public\n * @param {number} [offset=DEFAULT_OFFSET] - Offset to be set\n * @returns this\n */\n offset(offset: number = DEFAULT_OFFSET): this {\n if (!Number.isNatural(offset)) {\n throw new Error(`Offset '${offset}' is invalid!`);\n }\n\n return this.params<'offset'>({\n offset\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE records between range\n *\n * @public\n * @param {number} from - From index\n * @param {number} to - To index\n * @returns this\n */\n between(from: number, to: number): this {\n if (!Number.isNatural(from)) {\n throw new Error(`From '${from}' is invalid!`);\n }\n\n if (!Number.isNatural(to)) {\n throw new Error(`To '${to}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: from,\n limit: 1 + (to - from)\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE one record on given index\n *\n * @public\n * @param {number} idx - Index\n * @returns this\n */\n only(idx: number): this {\n if (!Number.isNatural(idx)) {\n throw new Error(`Index '${idx}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: idx,\n limit: 1\n });\n }\n\n /**\n * Gets current limit and sets offset so that will request from BE one page of records\n *\n * @public\n * @param {number} [page=1] - Page number (counted from 1)\n * @returns this\n */\n page(page = 1): this {\n if (!Number.isNatural(page) || page == 0) {\n throw new Error(`Page '${page}' is invalid!`);\n }\n\n const limit = this.getLimit();\n const offset = (page - 1) * limit;\n\n return this.params<'offset' | 'limit'>({\n offset,\n limit\n });\n }\n\n /**\n * Sets search\n *\n * query param is working like SQL LIKE. BE sets wraps around query with %, and replaces every white character\n * with %. So e.g. if query='my device', then it's searching for '%my%device%' in DB.\n *\n * @public\n * @param {string} query - Query to search for\n * @returns this\n */\n search(query: string): this {\n if (typeof query !== 'string') {\n throw new Error('Search query must be a string!');\n }\n\n return this.params<'search'>({\n search: query\n });\n }\n\n /**\n * Sets filter\n *\n * @public\n * @param {FilterBuilder|string} filter - Filter\n * @returns this\n */\n filter(filter: FilterBuilder | string): this {\n const isFilterBuilder = filter instanceof FilterBuilder;\n\n if (typeof filter !== 'string' && !isFilterBuilder) {\n throw new Error('Filter must be either string or instance of FilterBuilder');\n }\n\n return this.params<'filter'>({\n filter: filter.toString()\n });\n }\n\n /**\n * Alias for 'noLimit'\n *\n * @public\n * @see noLimit\n * @returns this\n */\n all: typeof APIList.prototype.noLimit = this.noLimit;\n\n /**\n * Alias for 'between'\n *\n * @public\n * @param {number} from - From idx\n * @param {number} to - To idx\n * @returns this\n */\n cut: typeof APIList.prototype.between = this.between;\n}\n\nexport default APIList;\n","import {APIEntity} from './APIEntity'\nimport {QueryParams} from './models/HTTP';\n\n\n/**\n * APIResource\n *\n * @class\n * @extends APIEntity\n */\nexport class APIResource\n extends APIEntity {\n}\n\n\nexport default APIResource;\n","import {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {CleanupConfigurationData, SpecificCleanupConfigurationQueryParams} from './models/CleanupConfiguration';\nimport {DeviceCleanupConfiguration} from './models/Device';\nimport {CollectionQueryParams, NoData} from './models/HTTP';\n\n\nexport class APIListCleanupConfigurations extends APIList {\n\n /**\n * /cleanup-configurations\n */\n constructor(parent: APIAdminListDevices) {\n super(parent);\n this.push('cleanup-configurations');\n }\n\n // /cleanup-configurations/specific\n specific() {\n return new APIResource, NoData>(this)\n .push('specific');\n }\n\n}\n\nexport default APIListCleanupConfigurations\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIResource} from './APIResource'\nimport {CleanupConfigurationSpecificData, DeviceCleanupConfiguration} from './models/Device';\nimport {NoData} from './models/HTTP';\nimport APIList from './APIList';\n\n\nexport class APIResourceCleanupConfiguration extends APIResource {\n //shuldn't it be APIAdminResourceCleanupConfiguration\n\n /**\n * admin/devices/cleanup-configurations/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('cleanup-configurations', id);\n }\n\n // admin/devices/cleanup-configurations/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIResourceCleanupConfiguration\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIListCleanupConfigurations} from './APIListCleanupConfigurations';\nimport {APIResourceCleanupConfiguration} from './APIResourceCleanupConfiguration';\nimport {AdminDevice, AdminDeviceData, AdminDevicesQueryParams} from './models/AdminDevice';\n\n\nexport class APIAdminListDevices extends APIList {\n\n /**\n * /admin/devices\n */\n constructor(parent: APIAdminResource | API) {\n super(parent);\n this.push('admin', 'devices');\n }\n\n // /admin/devices/cleanup-configurations\n cleanupConfigurations() {\n return new APIListCleanupConfigurations(this);\n }\n\n // /admin/devices/cleanup-configurations/{id}\n cleanupConfiguration(id: number) {\n return new APIResourceCleanupConfiguration(this, id);\n }\n\n}\n\nexport default APIAdminListDevices;\n","import {Method} from 'axios';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {RunsConfigParams, TestRunConfig} from './models/TestRun';\n\nexport class APIAdminListRuns extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /admin/runs\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'runs');\n }\n\n // /runs/config\n config() {\n const apiResource = new APIResource(this);\n apiResource.restack('runs', 'config');\n return apiResource;\n }\n\n}\n\n\nexport default APIAdminListRuns\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {AdminServicesParams, Service} from './models/Service';\n\n\nexport class APIAdminListServices extends APIList {\n\n /**\n * /admin/services\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'services');\n }\n\n active() {\n const apiList = new APIList(this);\n apiList.params<'notArchived'>({\n notArchived: true\n });\n return apiList;\n }\n\n activated() {\n const apiList = this.active();\n apiList.params<'filter' | 'limit' | 'sort'>({\n filter: 'activated_eq_true',\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n inUse() {\n const apiList = new APIList(this);\n apiList.params<'inUse' | 'limit' | 'sort'>({\n inUse: true,\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n byPrice() {\n const apiList = new APIList(this);\n apiList.params<'sort'>({\n sort: 'centPrice_a'\n })\n return apiList;\n }\n\n}\n\nexport default APIAdminListServices;\n","import {AxiosResponse} from 'axios';\n\nexport function NonRequestable(constructor: T) {\n return class extends constructor {\n send(): Promise {\n return Promise.reject();\n }\n };\n}\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AdminFrameworkStatistics, AdminStatisticsParams} from './models/AdminFrameworkStatistics';\nimport {NoData} from './models/HTTP';\n\n\n@NonRequestable\nexport class APIAdminListStatistics extends APIList {\n\n /**\n * /admin/statistics\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'statistics');\n }\n\n // /admin/statistics/frameworks\n frameworks() {\n return new APIList(this).push('frameworks');\n }\n\n\n}\n\n\nexport default APIAdminListStatistics\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {\n Account, AccountData,\n AccountUsage,\n AccountUsageParams,\n AccountUsageSummary,\n AccountUsageSummaryParams\n} from './models/Account';\nimport {NoData, NoQueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {AccountService} from './models/AccountService';\nimport {AccountPreferences, AccountPreferencesData} from './models/AccountPreference';\n\n\nexport class APIAdminResourceAccount extends APIResource {\n\n /**\n * /admin/accounts/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'accounts', id);\n }\n\n // /admin/accounts/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/accounts/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n // /admin/accounts/{id}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /admin/accounts/{id}/usage\n usage() {\n return new APIList, AccountUsageParams>(this).push('usage');\n }\n\n // /admin/accounts/{id}/usage-summary\n usageSummary() {\n return new APIResource(this).push('usage-summary');\n }\n\n}\n\nexport default APIAdminResourceAccount\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {AccountService} from './models/AccountService';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIAdminResourceAccountService extends APIResource {\n\n /**\n * /admin/account-services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'account-services', id);\n }\n\n // /account-services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /account-services/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate').post();\n }\n\n}\n\nexport default APIAdminResourceAccountService\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice} from './models/AdminDevice';\nimport {Cluster, ClusterData, ClusterParams} from './models/Cluster';\n\n\nexport class APIAdminResourceCluster extends APIResource {\n\n /**\n * /clusters/{id}\n */\n constructor(parent: API | APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('clusters', id);\n }\n\n // /clusters/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIAdminResourceCluster\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice, AdminDeviceData} from './models/AdminDevice';\nimport {AdminDeviceSession} from './models/AdminDeviceSession';\nimport {\n DeviceCleanupConfiguration,\n DeviceCleanupConfigurationData,\n DeviceLabelData,\n DeviceProperty\n} from './models/Device';\nimport {NoData, NoQueryParams, QueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDevice extends APIResource {\n\n /**\n * /admin/devices/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'devices', id);\n }\n\n // /admin/devices/{id}/cleanup-configuration\n cleanupConfiguration() {\n return new APIResource(this).push('cleanup-configuration');\n }\n\n // /admin/devices/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /admin/devices/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n // /admin/devices/{id}/queue\n queue() {\n return new APIList(this).push('queue');\n }\n\n}\n\nexport default APIAdminResourceDevice\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser, DeviceBrowserData} from './models/Browser';\nimport {DeviceModel, DeviceModelData} from './models/DeviceModel';\nimport {NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDeviceModel extends APIResource {\n\n /**\n * /admin/device-models/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'device-models', id);\n }\n\n // /admin/device-models/{id}/browsers\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIAdminResourceDeviceModel;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {NoData} from '../models/HTTP';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\n\n\n@NonRequestable\nexport class InputFileset extends APIResource {\n\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('input-file-set');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files\n */\n files() {\n return new APIList(this).push('files');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files.zip\n */\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n}\n\nexport default InputFileset\n","// Create image files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const IMAGE_FILES_FILTER = new FilterBuilder();\nIMAGE_FILES_FILTER.eq('state', 'READY');\nIMAGE_FILES_FILTER.in('mimetype', [\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif'\n]);\nIMAGE_FILES_FILTER.notlike('name', 'action-%%');\n","// Create non-media files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const NON_MEDIA_FILES_FILTER = new FilterBuilder();\nNON_MEDIA_FILES_FILTER.eq('state', 'READY');\nNON_MEDIA_FILES_FILTER.notin('mimetype', [\n // no images\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif',\n\n // no videos\n 'video/mp4', 'video/avi', 'video/webm', 'video/ogg', 'video/mpeg'\n]);\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {UserFile} from './models/UserFile';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {IMAGE_FILES_FILTER} from './class/Images.filter';\nimport {NON_MEDIA_FILES_FILTER} from './class/NonMedia.filter';\n\n\nexport class APIListOutputFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n performance(): this {\n return this.params({\n tag: ['performance']\n })\n }\n\n images(): this {\n return this.filter(IMAGE_FILES_FILTER);\n }\n\n // Filter files out by non-media\n nonMediaFiles(): this {\n return this.filter(NON_MEDIA_FILES_FILTER);\n }\n\n // Filter files out by ready videos\n videos(): this {\n return this.params({\n filter: 's_state_eq_READY',\n tag: ['video']\n });\n }\n}\n\nexport default APIListOutputFiles;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {Screenshot} from '../models/Screenshot';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\nimport APIListOutputFiles from '../APIListOutputFiles';\n\n\n@NonRequestable\nexport class OutputFileset extends APIResource {\n\n /**\n * /output-file-set\n *\n * Constructor\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('output-file-set');\n }\n\n // /output-file-set/files\n files() {\n return new APIListOutputFiles(this);\n }\n\n // /output-file-set/files/{id}\n file(id: number) {\n return new APIResource(this).push('files', id);\n }\n\n // /output-file-set/files.zip\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n\n // /output-file-set/screenshots\n screenshots() {\n return new APIList(this).push('screenshots');\n }\n\n // /output-file-set/screenshots/{id}\n screenshot(id: number) {\n return new APIResource(this).push('screenshots', id);\n }\n\n // /output-file-set/screenshots/{id}/file/{id}\n screenshotFile(id: number) {\n return this.screenshot(id).push('file');\n }\n}\n\nexport default OutputFileset\n","import {Screenshot} from './models/Screenshot';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListScreenshots extends APIList {\n\n /**\n * screenshots\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('screenshots');\n }\n}\n\nexport default APIListScreenshots\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {InputFileset} from './class/InputFileset'\nimport {OutputFileset} from './class/OutputFileset'\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\nimport {\n DeviceSession,\n DeviceSessionCommand,\n DeviceSessionStep,\n SessionRunStepQueryParams,\n SessionStepQueryParams\n} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport APIListScreenshots from './APIListScreenshots';\n\n\nexport class APIResourceDeviceSessionCommon extends APIResource implements DeviceSessionCommon {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/commands\n commands() {\n return new APIList(this).push('commands');\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/screenshots\n screenshots() {\n return new APIListScreenshots(this);\n }\n\n // /device-sessions/{id}/screenshots/{id}\n screenshot(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('screenshots', id);\n }\n\n // /device-sessions/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n // /device-sessions/{id}/steps/{id}\n step(id: number | 'current') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('steps', id);\n }\n\n // /device-sessions/{id}/steps/current\n currentStep() {\n return this.step('current');\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n logs() {\n return new APIResource(this).push('logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n clusterLogs() {\n return new APIResource(this).push('cluster-logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n}\n\nexport default APIResourceDeviceSessionCommon\n","import {APIResource} from '../APIResource';\nimport APIResourceDeviceSessionCommon from '../APIResourceDeviceSessionCommon';\nimport {DeviceSession} from '../models/DeviceSession';\n\nexport function postAdminDeviceSessionChangeBillable(parent: APIResourceDeviceSessionCommon, billable: boolean) {\n const apiResource = new APIResource(parent);\n const deviceSessionId = apiResource.last;\n\n return apiResource.restack('admin', 'device-sessions', deviceSessionId, 'changebillable').params({\n billable\n }).post();\n}\n\nexport default postAdminDeviceSessionChangeBillable;\n","import {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {postAdminDeviceSessionChangeBillable} from './factory/postAdminDeviceSessionChangeBillable';\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\n\n\n/**\n * APIAdminResourceDevice\n *\n *\n * It will require more work to decouple from regular session\n */\nexport class APIAdminResourceDeviceSessionStandalone extends APIResourceDeviceSessionCommon implements DeviceSessionCommon {\n\n // /admin/device-sessions/{id}/changebillable\n changeBillable(billable: boolean) {\n return postAdminDeviceSessionChangeBillable(this, billable);\n }\n}\n\nexport default APIAdminResourceDeviceSessionStandalone;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NoData} from './models/HTTP';\nimport {DeviceTimeParams, UserDeviceTime} from './models/UserDeviceTime';\n\nexport class APIAdminResourceDeviceTime extends APIList {\n\n /**\n * /admin/device-time\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'device-time');\n }\n}\n\nexport default APIAdminResourceDeviceTime\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Framework, FrameworkConfigData, FrameworkEditData} from './models/Framework';\nimport {NoQueryParams} from './models/HTTP';\nimport {ProjectJobConfig} from './models/ProjectJobConfig';\nimport {Role} from './models/Role';\n\nexport class APIAdminResourceFramework extends APIResource {\n\n /**\n * /admin/frameworks/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'frameworks', id);\n }\n\n // /admin/frameworks/{id}/config\n config() {\n return new APIResource(this).push('config');\n }\n\n // /admin/frameworks/{id}/required-roles\n requiredRoles() {\n return new APIList(this).push('required-roles');\n }\n\n}\n\nexport default APIAdminResourceFramework\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\n\nexport class APIAdminResourceLicense extends APIResource {\n\n /**\n * /licenses/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'licenses', id);\n }\n\n // /licenses/{id}/activate\n activate() {\n return new APIResource(this).push('activate');\n }\n\n // /licenses/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate');\n }\n\n // /licenses/{id}/resend\n resend() {\n return new APIResource(this).push('resend');\n }\n\n // /licenses/{id}/download\n download() {\n return new APIResource(this).push('download');\n }\n\n}\n\nexport default APIAdminResourceLicense\n","import {APIEntity} from '../APIEntity';\nimport {APIResource} from '../APIResource';\nimport {BuildLogsData, BuildLogsParams} from '../models/UserFile';\n\nexport function postDeviceRunIds(parent: APIEntity, name: string, ids?: Array) {\n const a = new APIResource(parent).push(name);\n\n if (ids != null) {\n a.params<'deviceRunIds'>({\n deviceRunIds: ids\n });\n }\n\n return a.post();\n}\n\nexport default postDeviceRunIds;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun, RunChangeBillableParams, RunChangePriorityParams} from './models/AdminTestRun';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceRunStandalone extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/changebillable\n changeBillable(billable: boolean) {\n return new APIResource(this).push('changebillable').post().params({\n billable\n });\n }\n\n // /runs/{id}/changepriority\n changePriority(priority?: number) {\n const resource = new APIResource(this).push('changepriority');\n if (priority) {\n resource.post().data({\n priority\n });\n }\n return resource;\n }\n\n // /admin/runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n}\n\nexport default APIAdminResourceRunStandalone;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceActivateData} from './models/Service';\n\n\nexport class APIAdminResourceService extends APIResource {\n\n /**\n * /services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'services', id);\n }\n\n // /services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n}\n\nexport default APIAdminResourceService\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccountService, AccountServiceData} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Role, RoleData} from './models/Role';\nimport {User, UserUpdateAccount} from './models/User';\n\n@NonRequestable\nexport class APIAdminResourceUserAccount extends APIResource {\n\n /**\n * /account\n */\n constructor(parent: APIAdminResourceUser) {\n super(parent);\n this.push('account');\n }\n\n // /account/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /account/roles/{id}\n role(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('roles', id);\n }\n\n // /account-services\n services() {\n const a = new APIList(this);\n a.last += '-services';\n return a;\n }\n\n // /update-account\n update() {\n const a = new APIResource(this);\n a.last = 'update-account';\n return a.post();\n }\n\n}\n\nexport default APIAdminResourceUserAccount\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {InputFileset} from './class/InputFileset';\nimport {OutputFileset} from './class/OutputFileset';\nimport {DeviceSessionStandalone} from './interface/DeviceSessionStandalone';\nimport {Connection, ConnectionData} from './models/Connection';\nimport {DeviceSession, DeviceSessionRelease} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {VisualTest} from './models/VisualTest';\n\nexport class APIResourceDeviceSessionStandalone extends APIResource implements DeviceSessionStandalone {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIResourceUser | APIAdminResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n // /device-sessions/{id}/connections/{id}\n connection(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('connections', id);\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/visual-tests/images\n visualTestsImages() {\n return new APIList(this).push('visual-tests', 'images');\n }\n\n}\n\nexport default APIResourceDeviceSessionStandalone\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIAdminResourceUserAccount} from './APIAdminResourceUserAccount';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {User} from './models/User';\n\n\n@NonRequestable\nexport class APIAdminResourceUser extends APIResource {\n\n /**\n * /admin/users/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'users', id);\n }\n\n // /admin/users/{id}/disable\n disable() {\n return new APIResource(this).push('disable');\n }\n\n // /admin/users/{id}/enable\n enable() {\n return new APIResource(this).push('enable');\n }\n\n // /admin/users/{id}/licenses\n licenses() {\n return new APIList(this).push('licenses');\n }\n\n // /admin/users/{id}/resend-activation\n resendActivation() {\n return new APIResource(this).push('resend-activation').post();\n }\n\n // /admin/users/{id}/account\n account() {\n return new APIAdminResourceUserAccount(this);\n }\n\n // /admin/users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /admin/users/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/users/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n}\n\nexport default APIAdminResourceUser;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccessGroup} from './models/AccessGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {SharedResource} from './models/SharedResource';\nimport {User, UserData} from './models/User';\n\nexport class APIResourceAccessGroup extends APIResource {\n\n /**\n * /access-groups/{id}\n *\n */\n constructor(parent: APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('access-groups', id);\n }\n\n // /access-groups/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /access-groups/{id}/users/{id}\n user(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('users', id);\n }\n\n // /access-groups/{id}/resources\n resources() {\n return new APIList(this).push('resources');\n }\n\n // /access-groups/{id}/resources/{id}\n resource(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('resources', id);\n }\n\n}\n\nexport default APIResourceAccessGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport APIResourceUser from './APIResourceUser';\nimport {Device, DeviceProperty} from './models/Device';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupParams, DeviceGroupSelectorData} from './models/DeviceGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {ShareData, SharedResource} from './models/SharedResource';\n\nexport class APIResourceDeviceGroup extends APIResource {\n\n /**\n * /device-groups/{id}\n */\n constructor(parent: APIAdminResource | APIResourceUser | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-groups', id);\n }\n\n // /device-groups/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n // /device-groups/{id}/devices/{id}\n device(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('devices', id);\n }\n\n // /device-groups/{id}/selectors\n selectors() {\n return new APIList(this).push('selectors');\n }\n\n // /device-groups/{id}/selectors/{id}\n selector(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('selectors', id);\n }\n\n // /device-groups/{id}/share\n share() {\n return new APIList(this).push('share');\n }\n\n}\n\nexport default APIResourceDeviceGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport {Property} from './models/Property';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {FileSizeData, UserFile, UserFileTag} from './models/UserFile';\n\n\nexport class APIResourceFile extends APIResource {\n\n /**\n * /files/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('files', id);\n }\n\n // use this to download file content\n // /files/{id}/file\n file() {\n return new APIResource(this).push('file');\n }\n\n // /files/{id}/icon\n icon() {\n return new APIResource(this).push('icon');\n }\n\n // /files/{id}/tags\n tags() {\n return new APIList(this).push('tags');\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n property(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('properties', id);\n }\n\n}\n\nexport default APIResourceFile\n","import {NoData} from './models/HTTP';\nimport {TestCaseRun} from './models/TestCaseRun';\nimport APIList, {APIListQuery} from './APIList';\nimport {SessionQueryParams} from './models/DeviceSession';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListTestCaseRuns extends APIList {\n\n /**\n * /test-case-runs\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('test-case-runs');\n }\n}\n\nexport default APIListTestCaseRuns\n","import {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {DeviceSession as DeviceSessionModel, SessionQueryParams} from './models/DeviceSession';\nimport APIListTestCaseRuns from './APIListTestCaseRuns';\nimport {APIListQuery} from './APIList';\n\nexport class APIResourceDeviceSession extends APIResourceDeviceSessionCommon {\n\n // /device-sessions/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /device-sessions/{id}/retry\n retry() {\n return new APIResource(this).push('retry').post();\n }\n\n // /device-sessions/{id}/test-case-runs\n testCaseRuns() {\n return new APIListTestCaseRuns(this);\n }\n}\n\nexport default APIResourceDeviceSession\n","import {DeviceSession} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceRunCommon from './APIResourceRunCommon';\n\n\nexport class APIListTestRunDeviceSessions extends APIList {\n\n /**\n * device-sessions\n */\n constructor(parent: APIResourceRunCommon) {\n super(parent);\n this.push('device-sessions');\n }\n}\n\nexport default APIListTestRunDeviceSessions\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {DeviceSessionStep} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {RunData, RunQueryParam, TestRun, TestRunData} from './models/TestRun';\nimport {TestRunDataAvailability, TestRunDataAvailabilityQueryParams} from './models/TestRunDataAvailability';\nimport {UserFile} from './models/UserFile';\nimport APIListTestRunDeviceSessions from './APIListTestRunDeviceSessions';\n\n\nexport class APIResourceRunCommon extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/build-logs.zip\n buildLogsZip(ids?: Array) {\n return postDeviceRunIds(this, 'build-logs.zip', ids);\n }\n\n // /runs/{id}/data-availability\n dataAvailability() {\n return new APIResource(this).push('data-availability');\n }\n\n // /runs/{id}/device-sessions\n deviceSessions() {\n return new APIListTestRunDeviceSessions(this);\n }\n\n // /runs/{id}/files.zip\n filesZip(ids?: Array) {\n return postDeviceRunIds(this, 'files.zip', ids);\n }\n\n // /runs/{id}/logs.zip\n logsZip(ids?: Array) {\n return postDeviceRunIds(this, 'logs.zip', ids);\n }\n\n // /runs/{id}/performance.zip\n performanceZip(ids?: Array) {\n return postDeviceRunIds(this, 'performance.zip', ids);\n }\n\n // /runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n // /runs/{id}/screenshots.zip\n screenshotsZip(ids?: Array) {\n return postDeviceRunIds(this, 'screenshots.zip', ids);\n }\n\n // /runs/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n}\n\nexport default APIResourceRunCommon\n","import {APIResourceDeviceSession} from './APIResourceDeviceSession'\nimport {APIResourceRunCommon} from './APIResourceRunCommon'\nimport {CollectionQueryParams} from './models/HTTP';\n\nexport class APIResourceRun extends APIResourceRunCommon {\n\n // /runs/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n}\n\nexport default APIResourceRun\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceRun} from './APIResourceRun'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Project} from './models/Project';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {TestRun} from './models/TestRun';\n\nexport class APIResourceProject extends APIResource {\n\n /**\n * /projects/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('projects', id);\n }\n\n // /projects/{id}/runs\n runs() {\n return new APIList(this).push('runs');\n }\n\n // /projects/{id}/runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n // /unarchive\n unarchive() {\n return new APIResource(this).push('unarchive');\n }\n\n}\n\nexport default APIResourceProject\n","import {API} from '../API';\nimport {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIAdminListRuns} from './APIAdminListRuns';\nimport {APIAdminListServices} from './APIAdminListServices';\nimport {APIAdminListStatistics} from './APIAdminListStatistics';\nimport APIAdminResourceAccount from './APIAdminResourceAccount';\nimport {APIAdminResourceAccountService} from './APIAdminResourceAccountService';\nimport {APIAdminResourceCluster} from './APIAdminResourceCluster';\nimport {APIAdminResourceDevice} from './APIAdminResourceDevice';\nimport {APIAdminResourceDeviceModel} from './APIAdminResourceDeviceModel';\nimport {APIAdminResourceDeviceSessionStandalone} from './APIAdminResourceDeviceSessionStandalone';\nimport {APIAdminResourceDeviceTime} from './APIAdminResourceDeviceTime';\nimport {APIAdminResourceFramework} from './APIAdminResourceFramework';\nimport {APIAdminResourceLicense} from './APIAdminResourceLicense';\nimport {APIAdminResourceRunStandalone} from './APIAdminResourceRunStandalone';\nimport {APIAdminResourceService} from './APIAdminResourceService';\nimport {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceFile} from './APIResourceFile'\nimport {APIResourceProject} from './APIResourceProject';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccessGroup, AccessGroupData} from './models/AccessGroup';\nimport {Account} from './models/Account';\nimport {AccountService} from './models/AccountService';\nimport {Activity} from './models/Activity';\nimport {AdminDeviceSession, AdminInteractiveDeviceSession} from './models/AdminDeviceSession';\nimport {AdminDeviceType, DeviceTypeData} from './models/AdminDeviceType';\nimport {AdminEmail} from './models/AdminEmail';\nimport {Administrator} from './models/Administrator';\nimport {AdminOverview} from './models/AdminOverview';\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {Browser, BrowserData} from './models/Browser';\nimport {DeviceModelCriterion, DeviceModelCriterionData} from './models/DeviceModelCriterion';\nimport {DeviceModelPool, DeviceModelPoolData} from './models/DeviceModelPool';\nimport {Framework, FrameworkData} from './models/Framework';\nimport {License, LicenseData} from './models/License';\nimport {Maintenance, MaintenanceData} from './models/Maintenance';\nimport {Project} from './models/Project';\nimport {Role, RoleParams} from './models/Role';\nimport {Settings, SettingsParams} from './models/Settings';\nimport {User, UserData, UserParams} from './models/User';\nimport {DeviceTimeSummaryParams, UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {UserFile, UserFileData, UserFileParams} from './models/UserFile';\nimport {Cluster} from './models/Cluster';\nimport {DeviceProperty} from './models/Device';\nimport {DeviceGroup} from './models/DeviceGroup';\nimport {DeviceModel} from './models/DeviceModel';\nimport {DeviceProblem} from './models/DeviceProblem';\nimport {DeviceStatus} from './models/DeviceStatus';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n@NonRequestable\nexport class APIAdminResource extends APIResource {\n\n /**\n * /admin\n */\n constructor(parent: API) {\n super(parent);\n }\n\n // /access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /admin/accounts\n accounts() {\n return new APIList(this).push('admin', 'accounts');\n }\n\n // /admin/accounts/{id}\n account(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIAdminResourceAccount(this, id);\n }\n\n // /admin/account-services\n accountServices() {\n return new APIList(this).push('admin', 'account-services');\n }\n\n // /admin/account-services/{id}\n accountService(id: number) {\n return new APIAdminResourceAccountService(this, id);\n }\n\n // activities\n activities() {\n return new APIList(this).push('admin', 'activities');\n }\n\n // admin/administrators\n administrators() {\n return new APIList(this).push('admin', 'administrators');\n }\n\n // /admin/billing-periods\n billingPeriods() {\n return new APIList(this).push('admin', 'billing-periods');\n }\n\n // /admin/billing-periods/{id}\n billingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'billing-periods', id);\n }\n\n // /admin/browsers\n browsers() {\n return new APIList(this).push('admin', 'browsers');\n }\n\n // /admin/browsers/{id}\n browser(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'browsers', id);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /admin/devices\n devices() {\n return new APIAdminListDevices(this);\n }\n\n // /admin/devices/{id}\n device(id: number) {\n return new APIAdminResourceDevice(this, id);\n }\n\n devicesForModel(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n const apiList = this.devices();\n apiList.params({\n filter: 'deviceModelId_eq_' + id\n });\n return apiList;\n }\n\n // /admin/device/statuses\n deviceStatuses() {\n return new APIList(this).push('admin', 'device', 'statuses');\n }\n\n // /admin/device-models\n deviceModels() {\n return new APIList(this).push('admin', 'device-models');\n }\n\n // /admin/device-models/{id}\n deviceModel(id: number) {\n return new APIAdminResourceDeviceModel(this, id);\n }\n\n // /admin/device-problems\n deviceProblems() {\n return new APIList(this).push('admin', 'device-problems');\n }\n\n // /admin/device-model-criteria\n deviceModelCriterias() {\n return new APIList(this).push('admin', 'device-model-criteria');\n }\n\n // /admin/device-model-criteria/{id}\n deviceModelCriteria(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'device-model-criteria', id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('admin', 'device-sessions');\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIAdminResourceDeviceSessionStandalone(this, id);\n }\n\n // /device-time\n deviceTime() {\n return new APIAdminResourceDeviceTime(this);\n }\n\n // /device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('admin', 'device-time-summary');\n }\n\n // /device-types\n deviceTypes() {\n return new APIList(this).push('admin', 'device-types');\n }\n\n // /device-types/{id}\n deviceType(id: number) {\n return new APIResource(this).push('admin', 'device-types', id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /admin/emails\n emails() {\n return new APIList(this).push('admin', 'emails');\n }\n\n // /admin/emails/{id}/resend\n resendEmail(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'emails', id, 'resend').post();\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /admin/frameworks\n frameworks() {\n return new APIList(this).push('admin', 'frameworks');\n }\n\n // /admin/frameworks/{id}\n framework(id: number) {\n return new APIAdminResourceFramework(this, id);\n }\n\n // /admin/frameworks/available-labels\n frameworkAvailableLabels() {\n const apiList = this.frameworks();\n apiList.push('available-labels');\n return apiList;\n }\n\n // /admin/interactive-queue\n interactiveQueue() {\n return new APIList(this).push('admin', 'interactive-queue');\n }\n\n // /admin/licenses\n licenses() {\n return new APIList(this).push('admin', 'licenses');\n }\n\n // /admin/licenses/{id}\n license(id: number) {\n return new APIAdminResourceLicense(this, id);\n }\n\n // /admin/maintenance\n maintenance() {\n return new APIResource(this).push('admin', 'maintenance');\n }\n\n // /admin/overview\n overview() {\n return new APIResource(this).push('admin', 'overview');\n }\n\n pools() {\n return new APIList(this).push('admin', 'pools');\n }\n\n pool(id: number) {\n return new APIResource(this).push('admin', 'pools', id);\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /admin/roles\n roles() {\n return new APIList(this).push('admin', 'roles');\n }\n\n // /admin/runs\n runs() {\n return new APIAdminListRuns(this);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIAdminResourceRunStandalone(this, id);\n }\n\n // /admin/samples\n samples() {\n return new APIList>(this).push('admin', 'samples');\n }\n\n // /admin/samples/{id}\n sample(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'samples', id);\n }\n\n // /admin/services\n services() {\n return new APIAdminListServices(this);\n }\n\n // /admin/services/{id}\n service(id: number) {\n return new APIAdminResourceService(this, id);\n }\n\n // /admin/settings\n settings() {\n return new APIResource(this).push('admin', 'settings');\n }\n\n // /admin/statistics\n statistics() {\n return new APIAdminListStatistics(this);\n }\n\n // /users\n users() {\n return new APIList(this).push('users');\n }\n\n // /admin/users\n createUser() {\n return new APIList(this).push('admin', 'users').post();\n }\n\n // /users/{id}\n user(id: number) {\n return new APIAdminResourceUser(this, id);\n }\n\n}\n\nexport default APIAdminResource;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {DesktopBrowserCapabilities} from './models/DesktopBrowserCapabilities';\nimport {Device, DevicesQueryParams} from './models/Device';\nimport {DevicePicker} from './models/DeviceFilter';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIListDevices extends APIList {\n\n /**\n * /devices\n */\n constructor(parent: API) {\n super(parent);\n this.push('devices');\n }\n\n // /devices/filters\n filters() {\n return new APIResource>(this).push('filters');\n }\n\n // /devices/desktop-browser-capabilities\n desktopBrowserCapabilities() {\n return new APIResource(this).push('desktop-browser-capabilities');\n }\n\n}\n\nexport default APIListDevices;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {CollectionQueryParams} from './models/HTTP';\nimport {Property, PropertyData} from './models/Property';\n\n\nexport class APIListProperties extends APIList {\n\n /**\n * /properties\n */\n constructor(parent: API) {\n super(parent);\n this.push('properties');\n }\n\n maintenance() {\n return new APIList(this).params({\n filter: 'name_eq_CLOUD_HEADER_ANNOUNCEMENT',\n limit: 1,\n sort: 'updateTime_d'\n });\n }\n\n}\n\nexport default APIListProperties\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceData} from './models/Service';\n\n\nexport class APIListServices extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['POST'];\n\n /**\n * /services\n */\n constructor(parent: API | APIResourceUser) {\n super(parent);\n this.push('services');\n }\n\n // /services/available\n available() {\n return new APIList(this).push('available');\n }\n\n active() {\n const apiList = new APIList(this);\n if (this.first === 'me') {\n apiList.push('active');\n } else {\n apiList.params({\n notArchived: true\n });\n }\n return apiList;\n }\n\n byPrice() {\n return new APIList(this).sort('centPrice');\n }\n\n availableByPrice() {\n return new APIList(this).push('available').sort('centPrice');\n }\n\n}\n\nexport default APIListServices\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {\n User,\n UserActivateData,\n UserData,\n UserPasswordData,\n UserRecoveryQueryParams,\n} from './models/User';\n\n\nexport class APIListUsers extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET', 'POST'];\n\n /**\n * /users\n */\n constructor(parent: API) {\n super(parent);\n this.push('users');\n }\n\n // /users/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /users/recoveries\n recoveries() {\n return new APIResource(this).push('recoveries');\n }\n\n // /users/passwordRecovery\n passwordRecovery() {\n return new APIResource(this).push('password-recovery');\n }\n\n}\n\nexport default APIListUsers;\n","import {APIResource} from './APIResource'\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {APIResourceAccount} from './APIResourceAccount';\n\n\n\n\nexport class APIResourceBillingPeriod extends APIResource {\n\n /**\n * /billing-periods/{id}\n */\n constructor(parent: APIResourceAccount, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('billing-periods', id);\n }\n\n // /billing-periods/{id}/receipt\n receipt() {\n return new APIResource(this).push('receipt').setRequestConfig({\n responseType: 'arraybuffer'\n });\n }\n\n}\n\nexport default APIResourceBillingPeriod\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceBillingPeriod} from './APIResourceBillingPeriod';\nimport {\n Account,\n AccountData,\n AccountSessionUsage,\n AccountSessionUsageSummary,\n AccountUserSessionUsage\n} from './models/Account';\nimport {AccountConcurrencyStatusMap} from './models/AccountConcurrencyStatusMap';\nimport {AccountPreferences} from './models/AccountPreference';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {AccountServicePayment} from './models/AccountServicePayment';\nimport {BillingPeriod, BillingPeriodQueryParams} from './models/BillingPeriod';\nimport {DeviceTimeSummaryQueryParams} from './models/Device';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {User, UserData} from './models/User';\nimport {DeviceTimeQueryParams, UserDeviceTime} from './models/UserDeviceTime';\nimport {UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {VisualTestAccess} from './models/VisualTest';\n\n\nexport class APIResourceAccount extends APIResource {\n\n /**\n * /accounts/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('accounts', id);\n }\n\n // /accounts/{id}/concurrency-status\n concurrencyStatus() {\n return new APIResource(this).push('concurrency-status');\n }\n\n // /accounts/{id}/device-time\n deviceTime() {\n return new APIList(this).push('device-time');\n }\n\n // /accounts/{id}/device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('device-time-summary');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource>(this).push('preferences');\n }\n\n // /accounts/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /accounts/{accountId}/users/{userId}\n removeUser(id: number) {\n return new APIResource(this).push('users', id);\n }\n\n // /accounts/{accountId}/users/{userId}/disable\n disableUser(id: number) {\n return new APIResource(this).push('users', id, 'disable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/enable\n enableUser(id: number) {\n return new APIResource(this).push('users', id, 'enable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/resend-activation\n resendActivation(id: number) {\n return new APIResource(this).push('users', id, 'resend-activation').post();\n }\n\n // /accounts/{accountId}/billing-periods\n billingPeriods() {\n return new APIList(this).push('billing-periods');\n }\n\n // /accounts/{accountId}/billing-periods/{id}\n billingPeriod(id: number) {\n return new APIResourceBillingPeriod(this, id);\n }\n\n // /account-services/{id}/billing-period\n serviceBillingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('account-services', id, 'billing-period');\n }\n\n // /accounts/{accountId}/visual-test/access\n visualTestAccess() {\n return new APIResource(this).push('visual-tests', 'access');\n }\n\n // /accounts/{accountId}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{accountId}/account-services/{id}\n accountService(id: number) {\n return new APIList(this).push('account-services', id);\n }\n\n // /accounts/{accountId}/services\n services() {\n return new APIResource(this).push('services');\n }\n\n // /accounts/{accountId}/user-usage-details\n userUsageDetails() {\n return new APIList(this).push('user-usage-details');\n }\n\n // /accounts/{accountId}/usage-details\n usageDetails() {\n return new APIList(this).push('usage-details');\n }\n\n // /accounts/{accountId}/usage-details-summary\n usageDetailsSummary() {\n return new APIResource(this).push('usage-details-summary');\n }\n\n}\n\nexport default APIResourceAccount;\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Broker} from './models/Broker';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIResourceBroker extends APIResource {\n\n /**\n * /broker\n */\n constructor(parent: API) {\n\n super(parent);\n this.push('broker');\n }\n\n // /broker/hubs\n hubs() {\n return new APIList(this).push('hubs');\n }\n\n}\n\nexport default APIResourceBroker\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser} from './models/Browser';\nimport {Device, DeviceProperiesData, DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams} from './models/HTTP';\n\n\nexport class APIResourceDevice extends APIResource {\n\n /**\n * /devices/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('devices', id);\n }\n\n // /devices/{id}/properties\n properties() {\n return new APIList(this).push('properties');\n }\n\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIResourceDevice\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams, NoQueryParams} from './models/HTTP';\nimport {LabelData, LabelGroup} from './models/LabelGroup';\n\nexport class APIResourceLabelGroup extends APIResource {\n\n /**\n * /label-groups/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('label-groups', id);\n }\n\n // /label-groups/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /label-groups/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n}\n\nexport default APIResourceLabelGroup\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {FileData, UploadObj, UserFile} from './models/UserFile';\n\n\nexport class APIListFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n /**\n * Simplifies process of uploading\n * /files\n */\n upload(obj: UploadObj): this {\n // For NodeJS\n // @ts-ignore\n if (global.isNodeJs) {\n return this.nodeUpload(obj);\n } else {\n /**\n * Browser\n * @todo\n */\n throw new Error('Not supported yet!');\n }\n }\n\n private nodeUpload(file: UploadObj): this {\n const fs = require('fs');\n const FormData = require('form-data');\n const form = new FormData();\n form.append('file', fs.createReadStream(file.dir + '/' + file.filename), {\n filename: file.filename\n });\n return this.post().headers(form.getHeaders()).data(form);\n }\n\n}\n\nexport default APIListFiles\n","import {APIList} from './APIList'\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIResource} from './APIResource'\n\n\nexport class APIResourceChannel extends APIResource {\n\n /**\n * /users/{id}/notifications/channels/{type}\n */\n constructor(parent: APIListNotifications, type: string) {\n if (type == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('channels', type);\n }\n\n // /channels/{type}/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n}\n\nexport default APIResourceChannel;\n","import {APIList} from './APIList';\nimport {APIResourceChannel} from './APIResourceChannel';\nimport {APIResourceUser} from './APIResourceUser';\nimport {Enum} from './models/Enum';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Notification, NotificationsData} from './models/Notification';\n\n\nexport class APIListNotifications extends APIList {\n\n /**\n * /notifications\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('notifications');\n }\n\n // /notifications/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n // /notifications/channels\n channels() {\n return new APIList(this).push('channels');\n }\n\n channel(type: string) {\n return new APIResourceChannel(this, type);\n }\n\n}\n\nexport default APIListNotifications\n","import {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {\n RunsConfigParams,\n TestRun,\n TestRunConfig,\n TestRunsQueryParams\n} from './models/TestRun';\n\n\nexport class APIListRuns extends APIList {\n\n /**\n * /runs\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('runs');\n }\n\n // /runs/config\n config() {\n return new APIResource(this).push('config');\n }\n\n}\n\nexport default APIListRuns\n","import {Method} from 'axios';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData} from './models/HTTP';\nimport {SmartbearTunnel, TunnelQueryParams} from './models/SmartbearTunnel';\n\n\nexport class APIListSmartbearTunnels extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /tunnels\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('tunnels');\n }\n\n /**\n * Sets tunnel activity parameter\n */\n active(active: boolean): this {\n return this.params({active: active});\n }\n}\n\nexport default APIListSmartbearTunnels;\n","\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {Notification, NotificationData} from './models/Notification';\n\nexport class APIResourceNotification extends APIResource {\n\n /**\n * /notifications/{id}\n */\n constructor(parent: APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('notifications', id);\n }\n\n // /notifications/{id}/test\n test() {\n return new APIResource(this).push('test');\n }\n\n}\n\nexport default APIResourceNotification\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIListFiles} from './APIListFiles';\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIListRuns} from './APIListRuns';\nimport {APIListServices} from './APIListServices';\nimport {APIListSmartbearTunnels} from './APIListSmartbearTunnels';\nimport {APIResource} from './APIResource';\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {APIResourceFile} from './APIResourceFile';\nimport {APIResourceNotification} from './APIResourceNotification';\nimport {APIResourceProject} from './APIResourceProject';\nimport {AccessGroup, AccessGroupsData} from './models/AccessGroup';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupIdsData, DeviceGroupWithPublicParams} from './models/DeviceGroup';\nimport {DeviceStatistics} from './models/DeviceStatistics';\nimport {DeviceUsage} from './models/DeviceUsage';\nimport {Framework} from './models/Framework';\nimport {Project, UserProjectData, UserProjectQueryParams} from './models/Project';\nimport {User, UserDeleteData} from './models/User';\nimport {UiPreferencesData, UserPreference, UserPreferenceData} from './models/UserPreference';\nimport {StatisticQueryParams, UserStatistics} from './models/UserStatistics';\nimport {DeviceSession, DeviceSessionData, DeviceSessionQueryParams} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams} from './models/HTTP';\nimport {DeviceStatisticQueryParam, DeviceUsageQueryParams} from './models/Device';\n\nexport class APIResourceUser extends APIResource {\n\n /**\n * /users/{id} | /me\n */\n constructor(parent: API, id: number | 'me') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n\n if (id === 'me') {\n this.push('me');\n } else if (typeof id === 'number') {\n this.push('users', id);\n } else {\n throw new TypeError('id is not a number');\n }\n }\n\n // /users/{id}/services\n services() {\n return new APIListServices(this);\n }\n\n // /users/{id}/device-groups\n deviceGroups() {\n return new APIList>(this).push('device-groups');\n }\n\n // /users/{id}/device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /users/{id}/device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /users/{id}/mark-account-owner\n markAccountOwner() {\n return new APIResource(this).push('mark-account-owner').post();\n }\n\n // /users/{id}/projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /users/{id}/projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /users/{id}/files\n files() {\n return new APIListFiles(this);\n }\n\n // /users/{id}/files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /users/{id}/runs\n runs() {\n return new APIListRuns(this);\n }\n\n // /users/{id}/available-frameworks\n availableFrameworks() {\n return new APIList(this).push('available-frameworks');\n }\n\n /**\n * /users/{id}/reset-api-key\n */\n resetApiKey() {\n return new APIResource(this).push('reset-api-key');\n }\n\n // /users/{id}/restore\n restore() {\n return new APIResource(this).push('restore');\n }\n\n // /users/{id}/feedback\n feedback() {\n return new APIResource(this).push('feedback');\n }\n\n // /users/{id}/notifications\n notifications() {\n return new APIListNotifications(this);\n }\n\n // /users/{id}/notifications/{id}\n notification(id: number) {\n return new APIResourceNotification(this, id);\n }\n\n // /users/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /users/{id}/ui-preferences\n uiPreferences() {\n return new APIResource(this).push('ui-preferences');\n }\n\n // /users/{id}/device-usage\n deviceUsage() {\n return new APIList(this).push('device-usage');\n }\n\n // /users/{id}/statistics\n statistics() {\n return new APIResource(this).push('statistics');\n }\n\n // /users/{id}/device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /users/{id}/access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /users/{id}/access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /users/{id}/tunnels/{id}\n smartbearTunnel(id: number) {\n return new APIResource(this).push('tunnels', id);\n }\n\n // /users/{id}/tunnels\n smartbearTunnels() {\n return new APIListSmartbearTunnels(this);\n }\n\n deleteAccount() {\n return new APIResource(this).push('delete');\n }\n}\n\nexport default APIResourceUser\n","import {API} from '../API';\nimport {APIResource} from './APIResource'\nimport {NoQueryParams} from './models/HTTP';\nimport {LoginData, User} from './models/User';\n\nexport class APIResourceUserSession extends APIResource {\n\n // /user-sessions\n constructor(parent: API) {\n super(parent);\n this.push('user-sessions');\n }\n\n // /user-sessions/login\n login(data: LoginData) {\n return new APIResource(this).push('login').post().data(data);\n }\n\n // /user-sessions/logout\n logout() {\n return new APIResource(this).push('logout').post();\n }\n\n // /user-sessions/oauth/authorize/{name}-login\n sso(name: string) {\n return new APIResource(this).push('oauth', 'authorize', name + '-login');\n }\n\n // /user-sessions/oauth/authorize/sbid-login\n sbidCallbackUrl() {\n return new APIResource(this).push('oauth', 'authorize', 'sbid-login').toUrl(true);\n }\n\n}\n\nexport default APIResourceUserSession\n","import {AxiosInstance} from 'axios';\n// this version of axios has some issue paired with rollup and is not handling default import correctly\n// as a workaround we need to use require instead of import until migrating to newer axios version\nconst axios = require('axios').default;\n// @ts-ignore\nimport {version} from '../package.json';\nimport {APIAdminResource} from './api/APIAdminResource';\nimport {APIAdminResourceCluster} from './api/APIAdminResourceCluster';\nimport {APIList} from './api/APIList';\nimport {APIListDevices} from './api/APIListDevices';\nimport {APIListProperties} from './api/APIListProperties';\nimport {APIListServices} from './api/APIListServices';\nimport {APIListUsers} from './api/APIListUsers';\nimport {APIResource} from './api/APIResource';\nimport {APIResourceAccount} from './api/APIResourceAccount';\nimport {APIResourceBroker} from './api/APIResourceBroker';\nimport {APIResourceDevice} from './api/APIResourceDevice';\nimport {APIResourceDeviceGroup} from './api/APIResourceDeviceGroup';\nimport {APIResourceDeviceSession} from './api/APIResourceDeviceSession';\nimport {APIResourceFile} from './api/APIResourceFile';\nimport {APIResourceLabelGroup} from './api/APIResourceLabelGroup';\nimport {APIResourceProject} from './api/APIResourceProject';\nimport {APIResourceRun} from './api/APIResourceRun';\nimport {APIResourceUser} from './api/APIResourceUser';\nimport {APIResourceUserSession} from './api/APIResourceUserSession';\nimport {Cluster} from './api/models/Cluster';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './api/models/HTTP';\nimport {License} from './api/models/License';\nimport {Project} from './api/models/Project';\nimport {Property} from './api/models/Property';\nimport {UserFile, UserFileData, UserFileParams} from './api/models/UserFile';\nimport {ApiConfig} from './ApiConfig';\nimport './finka';\nimport {LabelGroup} from './api/models/LabelGroup';\n\n// @ts-ignore\nif (globalThis.isNodeJs) {\n // Set User-Agent\n axios.defaults.headers.common['User-Agent'] = `Bitbar Cloud API Client for JavaScript v${version}`;\n}\n\n// Disable max content length\naxios.defaults.maxContentLength = 1073741824; // 1GB\n\n\n/**\n * API\n * Root for other API resources\n */\nexport class API {\n axios: AxiosInstance;\n\n private axiosConfig: ApiConfig = {};\n\n get baseUrl(): string {\n return this.axiosConfig.baseURL;\n }\n\n\n constructor(private config: ApiConfig) {\n if (config == null) {\n throw new Error('config cannot be empty');\n } else if (this.config.cloudUrl == null) {\n throw new TypeError('cloudUrl cannot be empty');\n } else if (typeof this.config.cloudUrl !== 'string') {\n throw new TypeError('cloudUrl must be a string');\n } else if (!/^https?:\\/\\/.{2,}/.test(this.config.cloudUrl)) {\n throw new Error(`cloudUrl doesn't look like a URL`);\n }\n\n // Validate and correct cloudUrl if needed\n this.axiosConfig.baseURL = this.config.cloudUrl.replace(/\\/+$/, '') + '/api'\n\n // Check v2\n this.config.v2 = !!this.config.v2;\n if (this.config.v2) {\n this.axiosConfig.baseURL += '/v2';\n }\n\n // Check if apiKey is set\n if (this.config.apiKey) {\n if (typeof this.config.apiKey !== 'string') {\n throw new TypeError('apiKey must be a string');\n } else if (!/^[A-Za-z0-9]{32}$/.test(this.config.apiKey)) {\n throw new Error('apiKey is in the wrong format');\n }\n\n this.axiosConfig.auth = {\n username: this.config.apiKey,\n password: ''\n };\n }\n\n // With credentials\n this.axiosConfig.withCredentials = config.withCredentials == null ? false : config.withCredentials;\n\n // Create axios instance\n this.axios = axios.create(this.axiosConfig);\n }\n\n\n // --- Resources starts here --- //\n\n // /account/{id}\n account(id: number) {\n return new APIResourceAccount(this, id);\n }\n\n // /admin\n admin() {\n return new APIAdminResource(this);\n }\n\n // /broker\n broker() {\n return new APIResourceBroker(this);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /devices/{id}\n device(id: number) {\n return new APIResourceDevice(this, id);\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /devices\n devices() {\n return new APIListDevices(this);\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /enums\n enums() {\n return new APIResource(this).push('enums');\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /label-groups\n labelGroups() {\n return new APIList(this).push('label-groups');\n }\n\n // /label-groups/{id}\n labelGroup(id: number) {\n return new APIResourceLabelGroup(this, id);\n }\n\n // /labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /licenses\n licenses() {\n return new APIResource(this).push('licenses');\n }\n\n // /license\n license() {\n return new APIResource(this).push('license');\n }\n\n /*\n /me or /admin\n Requires prototype extension covering ACL check\n */\n ma(): APIAdminResource | APIResourceUser {\n throw new Error('Requires prototype extension covering ACL check');\n }\n\n // /me\n me() {\n return this.user('me');\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /properties\n properties() {\n return new APIListProperties(this);\n }\n\n // /properties/{id}\n property(id: number) {\n return new APIResource(this).push('properties', id);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n // /services\n services() {\n return new APIListServices(this);\n }\n\n // /user/{id}\n user(id: number | 'me') {\n return new APIResourceUser(this, id);\n }\n\n // /users\n users() {\n return new APIListUsers(this);\n }\n\n // /user-sessions\n userSession() {\n return new APIResourceUserSession(this);\n }\n\n}\n\n\nexport default API;\n","/* istanbul ignore file */\n\nimport {API} from './API';\nimport {FilterBuilder} from './FilterBuilder';\n\nexport {API} from './API';\nexport {FilterBuilder} from './FilterBuilder';\n\n/**\n * Cloud API Client\n */\nexport const CloudAPIClient = {\n API,\n FilterBuilder\n}\n\nexport default CloudAPIClient;\n","export enum AccessGroupScope {\n USER = 'USER',\n ACCOUNT = 'ACCOUNT',\n GLOBAL = 'GLOBAL'\n}\n\nexport type AccessGroup = {\n id: number;\n name: string;\n scope: AccessGroupScope;\n userEmail: string;\n userId: number;\n}\n\nexport type AccessGroupData = Pick;\n\nexport type AccessGroupsData = Omit;\n","import {CollectionQueryParams} from './HTTP';\n\n\nexport type Account = {\n activeServiceName: string,\n comment: string,\n createTime: number,\n dedicatedDevicesConcurrency: number,\n dedicatedDevicesCount: number,\n dedicatedDevicesRatio: number,\n dedicatedDevicesUsage: number,\n id: number,\n invoiceDetails: Invoice,\n name: string,\n publicDevicesConcurrency: number,\n publicDevicesRatio: number,\n publicDevicesUsage: number,\n slmOrganizationId: string,\n userName: string\n}\n\nexport type Invoice = {\n address: string,\n city: string,\n code: string,\n country: string,\n state: string\n}\n\nexport type AccountData = Partial<{\n comment: string,\n invoiceDetails: Invoice,\n name: string,\n slmOrganizationId: string;\n userName: string\n}>\n\nexport type AccountUsageSummary = {\n sessionsCount: number,\n duration: number,\n deviceModelsCount: number,\n tunnelEnabledCount: number,\n osVersionsCount: number,\n projectsCount: number,\n usersCount: number,\n}\n\nexport type AccountUsage = {\n timestamp: number,\n timestampLabel: string,\n sessionsCount: number,\n automatedConcurrency: number,\n automatedUsage: number,\n dedicatedConcurrency: number,\n dedicatedUsage: number,\n manualConcurrency: number,\n manualUsage: number\n}\n\nexport type AccountUserSessionUsage = {\n devices: number,\n duration: number,\n osVersions: number,\n sessions: number,\n sessionShare: number\n userId: number,\n userName: string,\n}\n\nexport type AccountSessionUsage = {\n createTime: number,\n deviceModelName: string,\n duration: number,\n osVersion: string,\n type: SessionUsageType,\n userId: number,\n userName: string\n}\n\nexport type AccountSessionUsageSummary = {\n totalTime: number,\n usage: Record\n}\n\nexport enum SessionUsageType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL = 'MANUAL',\n DEDICATED_AUTOMATIC = 'DEDICATED_AUTOMATIC',\n DEDICATED_MANUAL = 'DEDICATED_MANUAL'\n}\n\nexport enum UtilizationType {\n ALL = 'all',\n PUBLIC = 'public',\n DEDICATED = 'dedicated'\n}\n\nexport enum SessionType {\n ALL = 'all',\n AUTOMATED = 'automated',\n MANUAL = 'manual'\n}\n\nexport enum TimeResolution {\n HOUR = 'hour',\n DAY = 'day'\n}\n\nexport type AccountUsageParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n sessionType?: SessionType,\n utilizationType?: UtilizationType,\n}\n\nexport type AccountUsageSummaryParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n}\n","import {ServiceUnit} from './Service';\n\nexport enum PaymentStatus {\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n REDIRECTED = 'REDIRECTED'\n}\n\nexport enum PaymentMethod {\n PAYPAL = 'PAYPAL',\n BRAINTREE = 'BRAINTREE',\n STRIPE = 'STRIPE',\n INVOICE = 'INVOICE',\n PROMOTION = 'PROMOTION',\n AWS = 'AWS'\n}\n\nexport enum DeactivateReason {\n INITIAL_FAILURE = 'INITIAL_FAILURE',\n SCA_FAILURE = 'SCA_FAILURE',\n CHARGE_FAILURE = 'CHARGE_FAILURE',\n CANCEL = 'CANCEL',\n SUSPENDED = 'SUSPENDED',\n ANOTHER_PURCHASE = 'ANOTHER_PURCHASE'\n}\n\nexport type ServicePaymentStatus = {\n accountService: AccountService;\n message: string;\n redirectUrl: string;\n status: PaymentStatus;\n}\n\nexport type AccountService = {\n accountId: number;\n accountName: string;\n activatedById: number;\n activatedByName: string;\n active: boolean;\n braintreeId: string;\n createTime: number;\n deactivateReason: DeactivateReason;\n deactivatedById: number;\n deactivatedByName: string;\n endTime: number;\n finished: boolean;\n id: number;\n lastPaymentTime: number;\n paymentMethod: PaymentMethod;\n price: number;\n serviceCount: number;\n serviceId: number;\n serviceName: string;\n slmLicenseId: string;\n startTime: number;\n subscriptionManagementURL: string;\n unit: ServiceUnit;\n unitCount: number;\n vatRate: number;\n}\n\nexport type AccountServiceData = Pick & {count: number};\n","import {DevicesQueryParams, Platform, SoftwareVersion} from './Device';\nimport {OsType} from './Enum';\nimport {CollectionQueryParams} from './HTTP';\nimport {Cluster} from './Cluster';\n\n\nexport enum InitStep {\n SKIP = 'SKIP',\n REBOOT = 'REBOOT',\n REBOOT_WITH_UNLOCK = 'REBOOT_WITH_UNLOCK',\n UNLOCK_ONLY = 'UNLOCK_ONLY'\n}\n\nexport enum DeviceState {\n OFFLINE_CLEANING = 'OFFLINE_CLEANING',\n OFFLINE_DIRTY = 'OFFLINE_DIRTY',\n OFFLINE_FREE = 'OFFLINE_FREE',\n OFFLINE_TESTING = 'OFFLINE_TESTING',\n ONLINE_CLEANING = 'ONLINE_CLEANING',\n ONLINE_DIRTY = 'ONLINE_DIRTY',\n ONLINE_FREE = 'ONLINE_FREE',\n ONLINE_TESTING = 'ONLINE_TESTING'\n}\n\nexport type AdminDevice = {\n accountId: number | null;\n accountName: string | null;\n cluster: Cluster;\n comment: string;\n dedicationEndTime: number | null;\n deviceModelId: number;\n deviceModelName: string;\n enabled: boolean;\n fingerprint: string;\n forceRestore: boolean;\n id: number;\n initStep: InitStep;\n ipAddress: string;\n lastOnlineTime: number;\n location: string;\n locked: boolean;\n manufacturer: string;\n name: string;\n osType: OsType;\n ownerHasAccountService: boolean;\n platform: Platform;\n serialId: string;\n softwareVersion: SoftwareVersion;\n state: DeviceState;\n stateChangeTime: number;\n stateTime: number;\n testTimeLimit: number;\n unlockGesture: string;\n}\n\nexport type AdminDevicesQueryParams = Pick & CollectionQueryParams;\n\nexport type AdminDeviceData = Pick & {\n apiLevel: number;\n releaseVersion: string;\n};\n","import {CollectionQueryParams} from './HTTP';\nimport {DeviceSessionState} from './DeviceSession';\nimport {OsType} from './Enum';\n\nexport enum FrameworkType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB',\n REMOTE = 'REMOTE'\n}\n\nexport type AdminFrameworkStatistics = {\n cloudName: string;\n count: number;\n day: number;\n deviceModelId: number;\n deviceModelName: string;\n frameworkId: number;\n frameworkName: string;\n id: number;\n osType: OsType;\n releaseVersion: string;\n state: DeviceSessionState;\n type: FrameworkType;\n userEmail: string;\n userId: number;\n}\n\nexport interface AdminStatisticsParams extends CollectionQueryParams {\n days: number;\n}\n","import {PaymentMethod} from './AccountService';\nimport {DeviceSessionType} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {QueryParams} from './HTTP';\n\nexport enum BillingType {\n BUY = 'BUY',\n CHARGE = 'CHARGE',\n CANCEL = 'CANCEL'\n}\n\nexport type BillingPeriod = {\n accountId: number;\n accountName: string;\n accountServiceId: number;\n additionalHours: number;\n additionalHoursPrice: number;\n apiBillingPeriodType: BillingType;\n createTime: number;\n endBillingPeriod: number;\n id: number;\n lastPaymentDate: number;\n paid: boolean;\n paymentMethod: PaymentMethod;\n plan: string;\n servicePrice: number;\n startBillingPeriod: number;\n subscriptionEnd: number;\n subscriptionStart: number;\n totalPrice: number;\n usages: Array;\n}\n\nexport type BillingPeriodUsage = {\n duration: number;\n id: number;\n osType: OsType;\n type: DeviceSessionType;\n}\n\nexport interface BillingPeriodQueryParams extends QueryParams {\n onDate: number;\n}\n","export enum BrokerType {\n MOBILE = 'MOBILE',\n DESKTOP = 'DESKTOP'\n}\n\nexport type Broker = {\n id: number;\n location: string;\n type: BrokerType;\n url: string;\n}\n","\nimport {AdminDevice} from './AdminDevice';\nimport {CollectionResponse, QueryParams} from './HTTP';\n\nexport type Cluster = {\n devices: CollectionResponse;\n enabled: boolean;\n id: number;\n ipAddress: string;\n jenkinsUrl: string;\n jenkinsVersion: string;\n location: string;\n name: string;\n pluginVersion: string;\n region: string;\n state: ClusterState;\n stateChangeTime: number;\n stateTime: number;\n type: ClusterType;\n url: string;\n}\n\nexport enum ClusterState {\n 'OFFLINE',\n ONLINE = 'ONLINE',\n RESTARTING = 'RESTARTING',\n QUIET_DOWN = 'QUIET_DOWN',\n MAINTENANCE = 'MAINTENANCE'\n}\n\nexport enum ClusterType {\n BARE_METAL = 'BARE_METAL',\n EC2 = 'EC2',\n VM = 'VM'\n}\n\nexport interface ClusterParams extends QueryParams {\n withDevices: boolean;\n}\n\nexport type ClusterData = Pick & {\n quietDown: boolean;\n restart: boolean;\n turnMaintenance: boolean;\n}\n","import {Browser} from './Browser';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, CollectionQueryParams, CollectionResponse, QueryParams} from './HTTP';\nimport {TestRunsQueryParams} from './TestRun';\n\n\nexport enum DeviceGroupOrigin {\n STATIC = 'STATIC',\n DYNAMIC = 'DYNAMIC',\n HYBRID = 'HYBRID'\n}\n\nexport enum Platform {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n WINDOWS = 'WINDOWS',\n MAC = 'MAC',\n LINUX = 'LINUX',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport enum SupportedCreators {\n MANUAL = 'MANUAL',\n ROBOT = 'ROBOT',\n AUTOMATIC = 'AUTOMATIC'\n}\n\nexport enum PoolSize {\n XL= 'XL',\n L = 'L',\n M = 'M',\n S = 'S'\n}\n\nexport enum Code {\n HIGH = 'HIGH',\n MODERATE = 'MODERATE',\n LOW = 'LOW',\n NONE = 'NONE',\n}\n\nexport type DeviceAvailability = {\n poolSize: PoolSize,\n code: Code\n}\n\nexport type DeviceProperty = {\n displayName: string;\n id: number;\n labelGroupName: string;\n name: string;\n propertyGroupId: number;\n propertyGroupName: string;\n}\n\nexport type SoftwareVersion = {\n apiLevel: number;\n id: number;\n releaseVersion: string;\n}\n\nexport enum LockReason {\n TESTING = 'TESTING',\n CLEANING = 'CLEANING',\n NOT_OPERATIONAL = 'NOT_OPERATIONAL'\n}\n\nexport type Device = {\n accountId: number;\n accountName: string;\n available: boolean;\n availability: DeviceAvailability;\n browsers: CollectionResponse;\n creditsPrice: number;\n deviceGroupOrigin: DeviceGroupOrigin;\n displayName: string;\n enabled: boolean;\n frame100Url: string;\n frame160Url: string;\n frame400Url: string;\n frame80Url: string;\n frameExtraWidth: number;\n id: number;\n imageCornerRadius: number;\n imageHeight: number;\n imageLeft: number;\n imagePrefix: string;\n imageTop: number;\n imageWidth: number;\n locked: boolean;\n lockReason: LockReason;\n manufacturer: string;\n online: boolean;\n osType: OsType;\n platform: Platform;\n properties: CollectionResponse;\n softwareVersion: SoftwareVersion;\n supportedCreators: Array;\n}\n\nexport type DeviceCleanupConfiguration = {\n content: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n description: string;\n name: string;\n enabled: boolean;\n global: boolean;\n example: true;\n id: number;\n lastModificationTime: number;\n osType: OsType;\n}\n\nexport type DeviceCleanupConfigurationData = {\n deviceCleanupConfigurationId: number;\n}\n\nexport type DeviceLabelData = {\n labelId: number;\n}\n\nexport interface DeviceProperiesData extends QueryParams {\n labelId: number;\n}\n\nexport interface CleanupConfigurationSpecificData extends QueryParams {\n serialId: string;\n}\n\nexport interface DeviceTimeSummaryQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n}\nexport interface DeviceUsageQueryParams extends TestRunsQueryParams {\n startTime: number;\n}\n\nexport interface DeviceStatisticQueryParam extends TestRunsQueryParams {\n mode: string;\n}\n\nexport interface DevicesQueryParams extends CollectionQueryParams {\n labelIds: Array;\n liveTestingOnly: boolean;\n withBrowsers: boolean;\n withDedicated: boolean;\n withDisabled: boolean;\n withProperties: boolean;\n withSupportedCreators: boolean;\n}\n","export enum CriterionField {\n NAME = 'NAME',\n FINGERPRINT = 'FINGERPRINT',\n SERIAL_ID = 'SERIAL_ID',\n UNLOCK_GESTURE = 'UNLOCK_GESTURE',\n SOFTWARE_VERSION = 'SOFTWARE_VERSION',\n INIT_STEP = 'INIT_STEP',\n ACCOUNT = 'ACCOUNT',\n BROWSERS = 'BROWSERS'\n}\n\nexport type DeviceModelCriterion = {\n createTime: number;\n field: CriterionField;\n id: number;\n labelGroupDisplayName: string;\n labelGroupId: number;\n labelGroupName: string;\n}\n\nexport type DeviceModelCriterionData = Pick;\n","export enum RetentionStrategy {\n CLUSTER_ON_OFF = 'CLUSTER_ON_OFF',\n MIN_FREE_MAX_TOTAL = 'MIN_FREE_MAX_TOTAL',\n POOL_MANAGER_AWARE = 'POOL_MANAGER_AWARE'\n}\n\nexport type DeviceModelPool = {\n createTime: number;\n enabled: boolean;\n id: number;\n location: string;\n maxTotal: number;\n minAvailable: number;\n name: string;\n numberOfBrowsers: number;\n osVersion: string;\n retentionStrategy: RetentionStrategy;\n running: number;\n}\n\nexport type DeviceModelPoolData = Pick;\n","export enum ProblemType {\n CLEANING = 'CLEANING',\n DIRTY = 'DIRTY',\n OFFLINE = 'OFFLINE',\n LOW_BATTERY = 'LOW_BATTERY',\n HIGH_FAIL_RATE = 'HIGH_FAIL_RATE',\n NO_INTERNET_CONNECTION = 'NO_INTERNET_CONNECTION'\n}\n\nexport type DeviceProblem = {\n clusterId: number;\n clusterName: string;\n deviceId: number;\n deviceModelId: number;\n deviceModelName: string;\n deviceName: string;\n id: number;\n problems: Array;\n location: string;\n}\n\nexport type DeviceProblemPair = {\n id: number;\n type: ProblemType;\n value: any;\n}\n","import {Device} from './Device';\nimport {CollectionBasicQueryParams} from './HTTP';\n\nexport type TunnelSettings = {\n domain: string;\n email: string;\n}\n\nexport enum DeviceSessionType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB'\n}\n\nexport enum RetryState {\n NONE = 'NONE',\n MANUAL = 'MANUAL',\n AUTO = 'AUTO'\n}\n\nexport enum DeviceSessionState {\n ABORTED = 'ABORTED',\n EXCLUDED = 'EXCLUDED',\n FAILED = 'FAILED',\n RUNNING = 'RUNNING',\n SUCCEEDED = 'SUCCEEDED',\n TIMEOUT = 'TIMEOUT',\n WAITING = 'WAITING',\n WARNING = 'WARNING'\n}\n\nexport enum DeviceSessionStepType {\n WAITING = 'WAITING',\n PREPARING = 'PREPARING',\n UNINSTALL = 'UNINSTALL',\n INSTALL = 'INSTALL',\n RUNNING = 'RUNNING',\n SENDING_RESULTS = 'SENDING_RESULTS',\n PROCESSING_RESULTS = 'PROCESSING_RESULTS'\n}\n\nexport type DeviceSessionConfig = {\n adbVersion: string;\n browserName: string;\n browserVersion: string;\n deviceModelId: number;\n id: number;\n screenResolution: string;\n tunnelSettings: TunnelSettings;\n type: DeviceSessionConfig;\n url: string;\n}\n\nexport type DeviceSession = {\n accountId: number;\n autoRetriesLeftCount: number;\n biometricInstrumentation: boolean;\n config: DeviceSessionConfig;\n createTime: number;\n clientSideId: string;\n device: Device;\n deviceInstanceId: number;\n deviceRunId: number;\n duration: number;\n endTime: number;\n excludeReason: string;\n externalId: string;\n id: number;\n installTime: number;\n name: string;\n projectId: number;\n projectName: string;\n retryable: boolean;\n retryState: RetryState;\n startTime: number;\n state: DeviceSessionState;\n successRatio: number;\n testCaseAllCount: number;\n testCaseFailedCount: number;\n testCasePassedCount: number;\n testCaseSkippedCount: number;\n testCaseSuccessCount: number;\n testRunId: number;\n testRunName: string;\n timeLimit: number;\n type: DeviceSessionType;\n uiLink: string;\n userEmail: string;\n userId: number;\n}\n\nexport type DeviceSessionCommand = {\n duration: number;\n httpMethod: string;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n\nexport type DeviceSessionStep = {\n deviceSessionId: number;\n excludeReason: string;\n failReason: string;\n finishTimeMS: number;\n id: number;\n startTimeMS: number;\n type: DeviceSessionStepType;\n}\n\nexport type DeviceSessionConnection = {\n createTime: number;\n deviceSessionId: number;\n endTime: number;\n externalId: string;\n host: string;\n id: number;\n password: string;\n path: string;\n port: number;\n type: string;\n urlSchema: string;\n}\n\nexport type DeviceSessionData = Omit & {configuration: DeviceSessionConfig};\n\nexport interface DeviceSessionQueryParams extends CollectionBasicQueryParams {\n withProperties: boolean;\n}\n\nexport interface SessionQueryParams extends CollectionBasicQueryParams {\n projectId: number;\n testRunId: number;\n}\n\nexport interface SessionRunStepQueryParams extends CollectionBasicQueryParams {\n runId: number;\n}\n\nexport interface SessionStepQueryParams extends SessionRunStepQueryParams {\n projectId: number;\n}\n\nexport enum SessionReleaseReason {\n INACTIVITY = 'INACTIVITY',\n TIMEOUT = 'TIMEOUT',\n USER_ACTION = 'USER_ACTION',\n CHANGE_DEVICE = 'CHANGE_DEVICE',\n WEBSOCKET_CLOSED = 'WEBSOCKET_CLOSED'\n}\n\nexport type DeviceSessionRelease = {\n reason: SessionReleaseReason;\n}\n","export enum OsType {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n DESKTOP = 'DESKTOP',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport type Enum = {\n id: number;\n value: string;\n}\n","export enum LicenseStatus {\n ACTIVE = 'ACTIVE',\n EXPIRED = 'EXPIRED',\n INACTIVE = 'INACTIVE',\n CLOSED = 'CLOSED'\n}\n\nexport type BaseLicense = {\n enabled: boolean;\n};\n\nexport type FeatureLicense = {\n deviceLimit: number;\n deviceLimited: boolean;\n projectLimit: number;\n projectLimited: boolean;\n};\n\nexport type AndroidLicense = BaseLicense & FeatureLicense & {\n cts: CTSLicense;\n uiAutomator: UIAutomatorLicense;\n};\n\nexport type BuildLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type DesktopLicense = BaseLicense & FeatureLicense;\n\nexport type GlobalLicense = FeatureLicense;\n\nexport type InspectorLicense = BaseLicense;\n\nexport type IOSLicense = BaseLicense & FeatureLicense;\n\nexport type RecorderLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type ServerLicense = BaseLicense & {\n androidEnabled: boolean;\n iosEnabled: boolean;\n};\n\nexport type CTSLicense = BaseLicense;\n\nexport type UIAutomatorLicense = BaseLicense;\n\nexport type License = {\n activateTime: number;\n android: AndroidLicense;\n build: BuildLicense;\n closeTime: number;\n desktop: DesktopLicense;\n expireTime: number;\n global: GlobalLicense;\n id: number;\n inspector: InspectorLicense;\n ios: IOSLicense;\n privateInstance: boolean;\n recorder: RecorderLicense;\n server: ServerLicense;\n status: LicenseStatus;\n userEmail: string;\n userId: number;\n}\n\nexport type LicenseData = Pick & {\n androidDeviceLimit: number;\n androidEnabled: boolean;\n androidProjectLimit: number;\n buildEnabled: boolean;\n buildLimit: number;\n desktopDeviceLimit: number;\n desktopEnabled: boolean;\n desktopProjectLimit: number;\n globalDeviceLimit: number;\n globalProjectLimit: number;\n inspectorEnabled: boolean;\n iosDeviceLimit: number;\n iosEnabled: boolean;\n iosProjectLimit: number;\n privateInstance: boolean;\n unit: string;\n unitCount: number;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum NotificationChannel {\n SLACK = 'SLACK',\n EMAIL = 'EMAIL',\n WEBHOOK = 'WEBHOOK'\n}\n\nexport enum NotificationScope {\n ALL = 'ALL',\n TEST_RUN = 'TEST_RUN',\n TEST_RUN_FAILURE = 'TEST_RUN_FAILURE',\n TEST_RUN_SUCCEEDED = 'TEST_RUN_SUCCEEDED',\n SYSTEM = 'SYSTEM',\n CHECK = 'CHECK',\n}\n\nexport type Notification = {\n channel: NotificationChannel;\n destination: string;\n id: number;\n projectId?: number;\n projectName?: string;\n scope: NotificationScope;\n userEmail: string;\n userId: number;\n}\n\nexport interface NotificationData extends QueryParams {\n scope: NotificationScope;\n}\n\nexport type NotificationsData = Pick;\n","import {OsType} from './Enum';\nimport {TestRunConfig, TestRunsQueryParams} from './TestRun';\n\nexport enum ArchivingStrategy {\n NEVER = 'NEVER',\n DAYS = 'DAYS',\n RUNS = 'RUNS'\n}\n\nexport type Project = {\n archiveTime: number;\n archivingItemCount: number;\n archivingStrategy: ArchivingStrategy;\n common: boolean;\n createTime: number;\n description: string;\n id: number;\n name: string;\n osType: OsType;\n readOnly: boolean;\n rowIndex: number;\n shared: boolean;\n sharedWithCaller: boolean;\n successRatio: number;\n testRunConfig: TestRunConfig;\n userEmail: string;\n userId: number;\n}\n\nexport type UserProjectData = Pick;\n\nexport interface UserProjectQueryParams extends TestRunsQueryParams {\n showStatistics: boolean;\n}\n","import {CollectionBasicQueryParams} from './HTTP';\n\nexport enum ScreenshotType {\n LANDSCAPE = 'LANDSCAPE',\n PORTRAIT = 'PORTRAIT'\n}\n\nexport type Screenshot = {\n fail: boolean;\n id: number;\n originalName: string;\n takeTimestamp: number;\n type: ScreenshotType;\n}\n\nexport interface ScreenshotQueryParams extends CollectionBasicQueryParams {\n name: string;\n}\n","import {PaymentMethod} from './AccountService';\nimport {CollectionQueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport type Service = {\n activateTime: number;\n activated: boolean;\n archiveTime: number;\n centPrice: number;\n commonId: string;\n customPlan: boolean;\n defaultConcurrences: Array;\n description: string;\n externalId: string;\n features: string;\n id: number;\n name: string;\n priceString: string;\n roles: Array;\n unit: ServiceUnit;\n}\n\nexport enum ServiceUnit {\n DAY = 'DAY',\n HOUR = 'HOUR',\n MONTH = 'MONTH',\n PROJECT = 'PROJECT',\n RUN = 'RUN',\n YEAR = 'YEAR'\n}\n\nexport interface AdminServicesParams extends CollectionQueryParams {\n activeOnly: boolean;\n inUse: boolean;\n notArchive: boolean;\n}\n\nexport type ServiceActivateData = {\n activateTime: number;\n}\n\nexport interface ServiceData {\n address?: string;\n cardNumber?: string;\n city?: string;\n count?: number;\n country?: string;\n cvv?: string;\n email?: string;\n expirationDate?: string;\n firstName?: string;\n lastName?: string;\n organization?: string;\n paymentMethod: PaymentMethod;\n phone?: string;\n serviceId: number;\n state?: string;\n stripeToken?: string;\n vatId?: string;\n zip?: string;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum SharedResourceType {\n DEVICE_GROUP = 'DEVICE_GROUP',\n FILE = 'FILE',\n PROJECT = 'PROJECT',\n}\n\nexport type SharedResource = {\n id: number;\n name: string;\n resourceId: number;\n type: SharedResourceType;\n}\n\nexport interface ShareWithGroup extends QueryParams {\n accessGroupId: number;\n}\n\nexport interface ShareWithEmail extends QueryParams {\n email: string;\n}\n\nexport type ShareData = ShareWithGroup | ShareWithEmail;\n","import {Method} from 'axios';\nimport {CollectionResponse} from './HTTP';\n\n\nexport enum TestResult {\n PASSED = 'PASSED',\n FAILED = 'FAILED',\n SKIPPED = 'SKIPPED',\n NOT_AVAILABLE = 'NOT_AVAILABLE'\n}\n\nexport type TestCaseRun = {\n className: string;\n createTime: number;\n duration: number;\n errorMessage: string;\n id: number;\n methodName: string;\n result: TestResult;\n stacktrace: string;\n steps: CollectionResponse;\n suiteName: string;\n}\n\nexport type TestCaseRunStep = {\n description: string;\n duration: number;\n httpMethod: Uppercase;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n","import {Device} from './Device';\nimport {TunnelSettings} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, QueryParams} from './HTTP';\nimport {UserFile} from './UserFile';\nimport {DeviceGroup} from './DeviceGroup';\nimport {Framework} from './Framework';\n\n\nexport enum LimitationType {\n PACKAGE = 'PACKAGE',\n CLASS = 'CLASS'\n}\n\nexport enum TestScheduler {\n PARALLEL = 'PARALLEL',\n SERIAL = 'SERIAL',\n SINGLE = 'SINGLE',\n ALL_INSTANCES = 'ALL_INSTANCES'\n}\n\nexport enum TestState {\n WAITING = 'WAITING',\n RUNNING = 'RUNNING',\n FINISHED = 'FINISHED'\n}\n\n\nexport type TestRun = {\n abortedDeviceCount: number;\n config: TestRunConfig;\n createTime: number;\n deviceCount: number;\n displayName: string;\n errorsDeviceCount: number;\n excludedDeviceCount: number;\n executedTestCaseCount: number;\n executionRatio: number;\n failedTestCaseCount: number;\n finishedDeviceCount: number;\n frameworkId: number;\n frameworkName: string;\n id: number;\n logsFileId: number;\n message: string;\n 'number': number;\n projectId: number;\n projectName: string;\n retryable: boolean;\n rowIndex: number;\n runningDeviceCount: number;\n screenshotsFileId: number;\n startTime: number;\n startedByDisplayName: string;\n startedById: number;\n state: TestState;\n succeededDeviceCount: number;\n successRatio: number;\n successfulTestCaseCount: number;\n testCaseCount: number;\n timeoutedDeviceCount: number;\n uiLink: string;\n userId: number;\n waitingDeviceCount: number;\n warningDeviceCount: number;\n}\n\nexport enum TestRunConfigFileAction {\n COPY_TO_DEVICE = 'COPY_TO_DEVICE',\n INSTALL = 'INSTALL',\n RUN_TEST = 'RUN_TEST',\n}\n\nexport type TestRunConfigFile = {\n action: TestRunConfigFileAction;\n availableActions: Array;\n file: UserFile;\n id: number;\n};\n\nexport type TestRunParameter = {\n name?: string;\n key: string;\n value: string;\n label?: string;\n}\n\nexport type TRCDefaultSettings = {\n deviceLanguageCode: string;\n disableResigning: boolean;\n hookURL: string;\n instrumentationRunner: string;\n limitationType: string;\n limitationValue: string;\n scheduler: string;\n screenshotDir: string;\n withAnnotation: string;\n withoutAnnotation: string;\n timeout: string;\n projectName: string;\n testRunName: string;\n testRunParameters?: TestRunParameter[];\n biometricInstrumentation: boolean;\n}\n\nexport type TestRunConfig = TRCDefaultSettings & {\n appCrawlerRun: boolean;\n appiumBrokerAddress: string;\n appiumBrokerQueueName: string;\n applicationPassword: string;\n applicationUsername: string;\n availableDeviceGroups: DeviceGroup[];\n availableDevices: Array;\n availableFrameworks: Framework[];\n availableOsTypes: Array;\n clientSideTestConfig: any;\n computedDevices: Array;\n creditsPrice: number;\n deviceGroupId?: number;\n deviceIds: any;\n deviceNamePattern: string;\n files: Array | null;\n frameworkId: number;\n id: number;\n loadedPrevious: boolean;\n maxAutoRetriesCount: number;\n maxTestTimeout: any;\n maxWaitTime: number;\n osType: OsType;\n projectId: number;\n resignFiles: boolean;\n runAvailable: boolean;\n status: string;\n statusCode: number;\n testRunId: number;\n testRunNameGrouping: string;\n tunnelSettings: TunnelSettings;\n useSamples: boolean;\n usedDeviceGroupId: number;\n usedDeviceGroupName: string;\n videoRecordingEnabled: boolean;\n withAnnotation: string;\n}\n\nexport interface TestRunData extends QueryParams {\n displayName: string;\n}\n\nexport interface RunData extends TestRunData {\n projectId: number;\n}\n\nexport interface RunQueryParam extends QueryParams {\n projectId: number;\n}\n\n\nexport type TestRunsIncludes = {\n includeDeviceGroups: boolean;\n includeDevices: boolean;\n includeFrameworks: boolean;\n}\n\nexport type RunsConfigParams = TestRunsIncludes & QueryParams;\n\n// for users/{userid}/runs\nexport interface TestRunsQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n skipCommonProject: boolean;\n skipShared: boolean;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport enum UserStatus {\n INACTIVE = 'INACTIVE',\n DISABLED = 'DISABLED',\n ENABLED = 'ENABLED'\n}\n\nexport type User = {\n accountId: number;\n accountName: string;\n userAccountName: string;\n accountServiceIds: Array;\n address: string;\n apiKey: string;\n city: string;\n code: string;\n country: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n deleteTime: number;\n email: string;\n enabled: boolean;\n firstName: string;\n id: number;\n isAccountOwner: boolean;\n lastLaunchedTestTime: number;\n lastLoginTime: number;\n lastName: string;\n organization: string;\n phone: string;\n registrationIP: string;\n roles: Array;\n serviceIds: Array;\n state: string;\n status: UserStatus;\n timeZone: string;\n}\n\nexport type UserData = Pick;\n\nexport interface UserParams extends CollectionQueryParams {\n WITH_ADDRESS: boolean;\n WITH_USER_INFO: boolean;\n onlyMainUsers: boolean;\n onlyWithDisabledServices: boolean;\n withRole: string;\n withRoles: boolean;\n}\n\nexport type UserUpdateAccount = Pick;\n\nexport type UserDeleteData = {\n password: string;\n}\n\nexport interface LoginData {\n username: string;\n password: string;\n}\n\n\nexport type UserPasswordData = {\n key: string;\n password: string;\n};\nexport type UserActivateData = {\n zip: string;\n} & UserPasswordData\n & Pick;\n\nexport interface UserRecoveryQueryParams extends QueryParams {\n recoveryKey: string;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\n\n\nexport enum FileDirection {\n INPUT = 'INPUT',\n OUTPUT = 'OUTPUT'\n}\n\nexport enum FileInputType {\n APPLICATION = 'APPLICATION',\n TEST = 'TEST',\n DATA = 'DATA'\n}\n\nexport enum FileState {\n PREPARING = 'PREPARING',\n READY = 'READY'\n}\n\nexport type FileProperty = {\n id: number;\n key: string;\n value: string;\n};\n\nexport type UserFileTag = {\n id: number;\n name: string;\n}\n\nexport type UserFile = {\n createTime: number;\n directUrl: string;\n direction: FileDirection;\n duplicate: boolean;\n fileProperties: Array;\n iconDirectUrl: string;\n id: number;\n inputType: FileInputType;\n mimetype: string;\n name: string;\n shared: boolean;\n size: number;\n state: FileState;\n userEmail: string;\n userId: number;\n};\n\nexport interface UserFileParams extends CollectionQueryParams {\n tag: Array;\n}\n\nexport type UserFileData = {\n file: FormData;\n global: boolean;\n}\n\nexport type BuildLogsData = {\n deviceRunIds: Array;\n projectId: number;\n userId: number;\n}\n\nexport type BuildLogsParams = BuildLogsData;\n\nexport interface FileSizeData extends QueryParams {\n height: number;\n width: number;\n}\n\nexport type UploadObj = {\n dir: string;\n filename: string;\n}\n\nexport interface FileData {\n file: Blob;\n global: boolean;\n}\n","export enum VisualTestImageType {\n FULL_PAGE = 'FULL_PAGE',\n VIEWPORT = 'VIEWPORT',\n ELEMENT_SCREENSHOT = 'ELEMENT_SCREENSHOT'\n}\n\nexport type VisualTestAccess = {\n enabled: boolean;\n apiKey: string | null;\n}\n\nexport type VisualTest = {\n comparisonStatus:\tstring;\n appUrl:\tstring;\n createdAt:\tstring;\n id: number;\n imageName:\tstring;\n imageThumbnailUrl:\tstring;\n imageType:\tVisualTestImageType;\n imageUrl:\tstring;\n sessionId:\tstring;\n testUrl:\tstring;\n}\n"],"names":["APIOrder","AbortController","stringify","InputFileset","OutputFileset","AccessGroupScope","SessionUsageType","UtilizationType","SessionType","TimeResolution","PaymentStatus","PaymentMethod","DeactivateReason","InitStep","DeviceState","FrameworkType","BillingType","BrokerType","ClusterState","ClusterType","DeviceGroupOrigin","Platform","SupportedCreators","PoolSize","Code","LockReason","CriterionField","RetentionStrategy","ProblemType","DeviceSessionType","RetryState","DeviceSessionState","DeviceSessionStepType","SessionReleaseReason","OsType","LicenseStatus","NotificationChannel","NotificationScope","ArchivingStrategy","ScreenshotType","ServiceUnit","SharedResourceType","TestResult","LimitationType","TestScheduler","TestState","TestRunConfigFileAction","UserStatus","FileDirection","FileInputType","FileState","VisualTestImageType"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bitbar-cloud-api-client.js","sources":["../src/Filter.ts","../src/finka.ts","../src/FilterBuilder.ts","../src/api/models/HTTP.ts","../src/api/APIEntity.ts","../src/api/APIList.ts","../src/api/APIResource.ts","../src/api/APIListCleanupConfigurations.ts","../src/api/APIResourceCleanupConfiguration.ts","../src/api/APIAdminListDevices.ts","../src/api/APIAdminListRuns.ts","../src/api/APIAdminListServices.ts","../src/api/decorators/NonRequestable.ts","../src/api/APIAdminListStatistics.ts","../src/api/APIAdminResourceAccount.ts","../src/api/APIAdminResourceAccountService.ts","../src/api/APIAdminResourceCluster.ts","../src/api/APIAdminResourceDevice.ts","../src/api/APIAdminResourceDeviceModel.ts","../src/api/class/InputFileset.ts","../src/api/class/Images.filter.ts","../src/api/class/NonMedia.filter.ts","../src/api/APIListOutputFiles.ts","../src/api/class/OutputFileset.ts","../src/api/APIListScreenshots.ts","../src/api/APIResourceDeviceSessionCommon.ts","../src/api/factory/postAdminDeviceSessionChangeBillable.ts","../src/api/APIAdminResourceDeviceSessionStandalone.ts","../src/api/APIAdminResourceDeviceTime.ts","../src/api/APIAdminResourceFramework.ts","../src/api/APIAdminResourceLicense.ts","../src/api/factory/postDeviceRunIds.ts","../src/api/APIAdminResourceRunStandalone.ts","../src/api/APIAdminResourceService.ts","../src/api/APIAdminResourceUserAccount.ts","../src/api/APIResourceDeviceSessionStandalone.ts","../src/api/APIAdminResourceUser.ts","../src/api/APIResourceAccessGroup.ts","../src/api/APIResourceDeviceGroup.ts","../src/api/APIResourceFile.ts","../src/api/APIListTestCaseRuns.ts","../src/api/APIResourceDeviceSession.ts","../src/api/APIListTestRunDeviceSessions.ts","../src/api/APIResourceRunCommon.ts","../src/api/APIResourceRun.ts","../src/api/APIResourceProject.ts","../src/api/APIAdminResource.ts","../src/api/APIListDevices.ts","../src/api/APIListProperties.ts","../src/api/APIListServices.ts","../src/api/APIListUsers.ts","../src/api/APIResourceBillingPeriod.ts","../src/api/APIResourceAccount.ts","../src/api/APIResourceBroker.ts","../src/api/APIResourceDevice.ts","../src/api/APIResourceLabelGroup.ts","../src/api/APIListFiles.ts","../src/api/APIResourceChannel.ts","../src/api/APIListNotifications.ts","../src/api/APIListRuns.ts","../src/api/APIListSmartbearTunnels.ts","../src/api/APIResourceNotification.ts","../src/api/APIResourceUser.ts","../src/api/APIResourceUserSession.ts","../src/API.ts","../src/CloudAPIClient.ts","../src/api/models/AccessGroup.ts","../src/api/models/Account.ts","../src/api/models/AccountService.ts","../src/api/models/AdminDevice.ts","../src/api/models/AdminFrameworkStatistics.ts","../src/api/models/BillingPeriod.ts","../src/api/models/Broker.ts","../src/api/models/Cluster.ts","../src/api/models/Device.ts","../src/api/models/DeviceModelCriterion.ts","../src/api/models/DeviceModelPool.ts","../src/api/models/DeviceProblem.ts","../src/api/models/DeviceSession.ts","../src/api/models/Enum.ts","../src/api/models/License.ts","../src/api/models/Notification.ts","../src/api/models/Project.ts","../src/api/models/Screenshot.ts","../src/api/models/Service.ts","../src/api/models/SharedResource.ts","../src/api/models/TestCaseRun.ts","../src/api/models/TestRun.ts","../src/api/models/User.ts","../src/api/models/UserFile.ts","../src/api/models/VisualTest.ts"],"sourcesContent":["/**\n * Filter\n */\n\nexport class Filter {\n name: string;\n value: T;\n operand: string;\n\n constructor(name: string, value: T, operand: string) {\n this.name = name;\n this.value = value;\n this.operand = operand;\n }\n}\n\nexport default Filter;\n","import finka from '@bitbar/finka';\n\nfinka();\n\nexport default {};\n","import {Filter} from './Filter';\nimport './finka';\n\n/**\n * FilterBuilder\n *\n * Builds filter string according to Bitbar Cloud backend convention\n */\nexport class FilterBuilder {\n\n private readonly filters: Array = [];\n\n gt(name: string, value: number): this {\n return this.add(name, value, 'gt');\n }\n\n\n lt(name: string, value: number): this {\n return this.add(name, value, 'lt');\n }\n\n after(name: string, value: Date | number): this {\n return this.add(name, value, 'after', true);\n }\n\n afterorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'afterorequal', true);\n }\n\n before(name: string, value: Date | number): this {\n return this.add(name, value, 'before', true);\n }\n\n beforeorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'beforeorequal', true);\n }\n\n on(name: string, value: any): this {\n return this.add(name, value, 'on');\n }\n\n eq(name: string, value: any): this {\n return this.add(name, value, 'eq');\n }\n\n contains(name: string, value: string): this {\n return this.add(name, value, 'contains');\n }\n\n like(name: string, value: string): this {\n return this.add(name, value, 'like');\n }\n\n notlike(name: string, value: string): this {\n return this.add(name, value, 'notlike');\n }\n\n isnull(name: string): this {\n return this.add(name, undefined, 'isnull');\n }\n\n isnotnull(name: string): this {\n return this.add(name, undefined, 'isnotnull');\n }\n\n in(name: string, value: Array): this {\n return this.add(name, value, 'in', true);\n }\n\n notin(name: string, value: Array): this {\n return this.add(name, value, 'notin', true);\n }\n\n raw(filter: Filter | string | Filter[] | string[]): void {\n const filters = Array.wrap(filter);\n for (const filter of filters) {\n if (this.isFilterPart(filter)) {\n this.filters.push(filter);\n } else {\n throw new SyntaxError(`Filter ${filter} has invalid syntax`);\n }\n }\n }\n\n\n /**\n * Check if given string is proper filter part\n */\n isFilterPart(str: string): boolean {\n return /^[a-zA-Z0-9.]{2,12}_(?:isnull$|(?:gt|lt|(?:after|before)(?:orequal)?|on|eq|contains|like|(?:not)?in)_)/.test(str);\n }\n\n toString(): string {\n const parts: Array = [];\n\n let part: string,\n val: string;\n\n for (const filter of this.filters) {\n if (typeof filter === 'string') {\n part = filter;\n } else {\n val = '';\n if (filter.value.length > 1 || typeof filter.value[0] !== 'undefined') {\n val = `_${filter.value.join('|')}`;\n }\n part = `${filter.name}_${filter.operand}${val}`;\n }\n parts.push(part);\n }\n\n return parts.join(';');\n }\n\n /**\n * Add filter to filters list\n * @param name {string} Name\n * @param value {*} Value\n * @param operand {string} Operand\n * @param [checkNull=false] {boolean} Check null?\n * @returns {FilterBuilder}\n */\n private add(name: string, value: T, operand: string, checkNull = false): this {\n\n let _value = Array.wrap(value);\n\n if (_value.length === 0) {\n return this;\n }\n\n // auto-convert\n for (let i = 0; i < _value.length; i++) {\n const v = _value[i];\n if (typeof v === 'object' && v instanceof Date) {\n _value[i] = v.getTime();\n }\n }\n\n let isNull = false;\n if (checkNull) {\n // check null existence\n for (const v of _value) {\n if (v !== null) {\n continue;\n }\n isNull = true;\n }\n\n if (isNull) {\n _value = _value.filter((item: any) => item !== null);\n operand += 'ornull';\n }\n }\n\n if (operand.endsWith('ornull') && _value.length === 0) {\n operand = 'isnull';\n }\n\n // add filter\n this.filters.push(new Filter>(name, _value, operand));\n\n return this;\n }\n}\n\n\nexport default FilterBuilder;\n","import {Method} from 'axios';\n\n\n/**\n * Allowed methods\n *\n * @type {Array}\n * @default\n */\nexport const ALLOWED_HTTP_METHODS: Array = ['GET', 'POST', 'DELETE'];\n\nexport type QueryParam = string | number | boolean;\nexport type QueryParams = Record>;\n\nexport enum APIOrder {\n asc = 'a',\n desc = 'd'\n}\n\nexport interface CollectionQueryParams extends QueryParams {\n filter: string;\n limit: number;\n offset: number;\n sort: string;\n search: string;\n}\n\nexport type CollectionBasicQueryParams = Omit\n\nexport type NoQueryParams = {\n [key in any]: never;\n}\n\nexport type CollectionResponse = {\n data: Array;\n empty: boolean;\n id: number;\n limit: number;\n next: string;\n offset: number;\n previous: string;\n search: string;\n sort: string;\n total: number;\n}\n\nexport type SimpleCollectionResponse = Pick, 'data' | 'id'>;\nexport type NoData = void;\n","import {AxiosRequestConfig, AxiosResponse, Method} from 'axios';\nimport {stringify} from 'qs';\nimport {API} from '../API';\nimport {ALLOWED_HTTP_METHODS, QueryParams} from './models/HTTP';\nimport {AbortController} from 'node-abort-controller';\n\n\n/**\n * @typeParam RESPONSE HTTP Response return type.\n * @typeParam QUERY_PARAMS Allowed Query Params\n * @typeParam DATA Allowed Data Object\n */\nexport class APIEntity {\n\n root: API;\n\n protected stack: Array = [];\n protected requestConfig: AxiosRequestConfig = {};\n protected ALLOWED_HTTP_METHODS: Array = ALLOWED_HTTP_METHODS;\n protected abortController: AbortController;\n\n /**\n * Constructor\n * @param {APIEntity|object} [parent] - Specifies a parent from which should be inherited properties\n */\n constructor(parent: APIEntity | API) {\n if (parent instanceof APIEntity) {\n this.root = parent.root;\n\n if (Array.isArray(parent.stack)) { //???\n this.push(...parent.stack);\n }\n\n if (parent.requestConfig != null) {\n this.setRequestConfig(parent.requestConfig);\n }\n } else {\n this.root = parent;\n }\n this.abortController = new AbortController();\n }\n\n abortRequest() {\n this.abortController.abort();\n this.abortController = new AbortController();\n }\n\n push(...items: Array): this {\n this.stack = this.stack.concat(items);\n return this;\n }\n\n shift(): this {\n this.stack.shift();\n return this;\n }\n\n restack(...items: Array): this {\n this.stack = items;\n return this;\n }\n\n /**\n * Get first element of the stack\n */\n get first(): string | number {\n return this.stack[0];\n }\n\n /**\n * Get last element of the stack\n */\n get last(): string | number {\n return this.stack[this.stack.length - 1];\n }\n\n /**\n * Set last element of the stack\n */\n set last(val) {\n this.stack[this.stack.length - 1] = val;\n }\n\n toUrl(absolute = false): string {\n let url = `/${this.stack.join('/')}`;\n\n if (absolute) {\n url = this.root.baseUrl + url;\n }\n\n return url;\n }\n\n setRequestConfig(requestConfig: AxiosRequestConfig): this {\n Object.deepAssign(this.requestConfig, requestConfig);\n return this;\n }\n\n removeRequestConfig(key: keyof AxiosRequestConfig): this {\n delete this.requestConfig[key];\n return this;\n }\n\n headers(headers: Record): this {\n const _headers: Record = {};\n\n // Unify/Standarize headers keys\n for (const key in headers) {\n const newKey = key.replace(/(?:^|-)([a-z])/g, (letter) => letter.toUpperCase());\n _headers[newKey] = headers[key];\n }\n\n return this.setRequestConfig({\n headers: _headers\n });\n }\n\n /**\n * Set HTTP method\n */\n method(name: Method): this {\n const NAME: Uppercase = >name.toLocaleUpperCase();\n const isAllowed: boolean = this.ALLOWED_HTTP_METHODS.indexOf(NAME) > -1;\n\n if (!isAllowed) {\n throw new Error(`Method '${NAME}' is not allowed! You can use: ${this.ALLOWED_HTTP_METHODS.join(', ')}`);\n }\n\n return this.setRequestConfig({\n method: NAME\n });\n }\n\n /**\n * Set GET as HTTP method\n */\n get(): this {\n return this.method('GET');\n }\n\n /**\n * Set POST as HTTP method\n */\n post(): this {\n return this.method('POST');\n }\n\n /**\n * Set DELETE as HTTP method\n */\n delete(): this {\n return this.method('DELETE');\n }\n\n /**\n * Set params\n */\n params(params: Pick): this {\n this.setRequestConfig({params});\n return this;\n }\n\n getParams(): Partial {\n return this.requestConfig.params == null ? {} : this.requestConfig.params;\n }\n\n removeParam(key: keyof QUERY_PARAMS): this {\n delete this.requestConfig.params[key];\n return this;\n }\n\n /**\n * Set data\n */\n data(data: DATA): this {\n this.setRequestConfig({data});\n return this;\n }\n\n /**\n * Set JSON data\n */\n jsonData(data: DATA): this {\n this.headers({\n 'Content-Type': 'application/json'\n }).data(data);\n return this;\n }\n\n /**\n * Set form data\n */\n formData(data: DATA): this {\n this.data(data);\n return this;\n }\n\n /**\n * Send request\n */\n send(): Promise> {\n const requestConfig = Object.deepAssign({}, this.requestConfig, {\n url: `/${this.stack.join('/')}`,\n signal: this.abortController.signal\n });\n\n // Set default headers\n if (requestConfig.headers == null) {\n requestConfig.headers = {};\n }\n\n if (!(requestConfig.method === 'POST' && requestConfig.data instanceof FormData) &&\n requestConfig.headers['Content-Type'] == null) {\n requestConfig.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n\n // Convert data if needed\n if (requestConfig.method === 'POST' &&\n (requestConfig.headers['Content-Type'])?.startsWith('application/x-www-form-urlencoded') &&\n requestConfig.data != null) {\n requestConfig.data = this.paramsSerializer(requestConfig.data);\n }\n\n if (requestConfig.params) {\n requestConfig.paramsSerializer = {indexes: false};\n }\n\n // Send request\n return this.root.axios.request(requestConfig);\n }\n\n protected paramsSerializer(params: DATA | QUERY_PARAMS): string {\n return stringify(params, {\n arrayFormat: 'brackets'\n });\n }\n}\n\n\nexport default APIEntity;\n","import {AxiosResponse} from 'axios';\nimport {FilterBuilder} from '../FilterBuilder'\nimport {APIEntity} from './APIEntity'\nimport {\n APIOrder,\n CollectionBasicQueryParams,\n CollectionQueryParams,\n CollectionResponse,\n NoQueryParams,\n SimpleCollectionResponse\n} from './models/HTTP';\n\n\nexport const DEFAULT_LIMIT: number = 20;\nexport const DEFAULT_OFFSET: number = 0;\n\nexport type APIListQuery = CollectionBasicQueryParams | CollectionQueryParams | NoQueryParams;\n\nexport class APIList\n extends APIEntity | SimpleCollectionResponse, QUERY_PARAMS, DATA> {\n\n /**\n * Shortcut for sending data POST\n */\n create(data: DATA): Promise> {\n return this.post().data(data).send();\n }\n\n /**\n * Sets sorting\n *\n * @public\n * @param {string} name - Name of the column according to which the data will be sorted\n * @param {string} [order=a] - Sorting order. Possibilities: 'a', 'd'\n */\n sort(name: string, order: APIOrder = APIOrder.asc): this {\n return this.params<'sort'>({\n sort: `${name}_${order}`\n });\n }\n\n /**\n * Sets limit\n *\n * @public\n * @param {number} [limit=DEFAULT_LIMIT] - Limit to be set\n * @returns this\n */\n limit(limit = DEFAULT_LIMIT): this {\n if (!Number.isNatural(limit)) {\n throw new Error(`Limit '${limit}' is invalid!`);\n }\n\n return this.params<'limit'>({\n limit\n });\n }\n\n /**\n * Gets limit\n *\n * @public\n * @returns number\n */\n getLimit(): number {\n const params = this.getParams();\n return params.limit == null ? DEFAULT_LIMIT : params.limit;\n }\n\n /**\n * Disables limit\n *\n * @public\n * @returns this\n */\n noLimit(): this {\n return this.limit(0);\n }\n\n /**\n * Sets offset\n *\n * @public\n * @param {number} [offset=DEFAULT_OFFSET] - Offset to be set\n * @returns this\n */\n offset(offset: number = DEFAULT_OFFSET): this {\n if (!Number.isNatural(offset)) {\n throw new Error(`Offset '${offset}' is invalid!`);\n }\n\n return this.params<'offset'>({\n offset\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE records between range\n *\n * @public\n * @param {number} from - From index\n * @param {number} to - To index\n * @returns this\n */\n between(from: number, to: number): this {\n if (!Number.isNatural(from)) {\n throw new Error(`From '${from}' is invalid!`);\n }\n\n if (!Number.isNatural(to)) {\n throw new Error(`To '${to}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: from,\n limit: 1 + (to - from)\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE one record on given index\n *\n * @public\n * @param {number} idx - Index\n * @returns this\n */\n only(idx: number): this {\n if (!Number.isNatural(idx)) {\n throw new Error(`Index '${idx}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: idx,\n limit: 1\n });\n }\n\n /**\n * Gets current limit and sets offset so that will request from BE one page of records\n *\n * @public\n * @param {number} [page=1] - Page number (counted from 1)\n * @returns this\n */\n page(page = 1): this {\n if (!Number.isNatural(page) || page == 0) {\n throw new Error(`Page '${page}' is invalid!`);\n }\n\n const limit = this.getLimit();\n const offset = (page - 1) * limit;\n\n return this.params<'offset' | 'limit'>({\n offset,\n limit\n });\n }\n\n /**\n * Sets search\n *\n * query param is working like SQL LIKE. BE sets wraps around query with %, and replaces every white character\n * with %. So e.g. if query='my device', then it's searching for '%my%device%' in DB.\n *\n * @public\n * @param {string} query - Query to search for\n * @returns this\n */\n search(query: string): this {\n if (typeof query !== 'string') {\n throw new Error('Search query must be a string!');\n }\n\n return this.params<'search'>({\n search: query\n });\n }\n\n /**\n * Sets filter\n *\n * @public\n * @param {FilterBuilder|string} filter - Filter\n * @returns this\n */\n filter(filter: FilterBuilder | string): this {\n const isFilterBuilder = filter instanceof FilterBuilder;\n\n if (typeof filter !== 'string' && !isFilterBuilder) {\n throw new Error('Filter must be either string or instance of FilterBuilder');\n }\n\n return this.params<'filter'>({\n filter: filter.toString()\n });\n }\n\n /**\n * Alias for 'noLimit'\n *\n * @public\n * @see noLimit\n * @returns this\n */\n all: typeof APIList.prototype.noLimit = this.noLimit;\n\n /**\n * Alias for 'between'\n *\n * @public\n * @param {number} from - From idx\n * @param {number} to - To idx\n * @returns this\n */\n cut: typeof APIList.prototype.between = this.between;\n}\n\nexport default APIList;\n","import {APIEntity} from './APIEntity'\nimport {QueryParams} from './models/HTTP';\n\n\n/**\n * APIResource\n *\n * @class\n * @extends APIEntity\n */\nexport class APIResource\n extends APIEntity {\n}\n\n\nexport default APIResource;\n","import {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {CleanupConfigurationData, SpecificCleanupConfigurationQueryParams} from './models/CleanupConfiguration';\nimport {DeviceCleanupConfiguration} from './models/Device';\nimport {CollectionQueryParams, NoData} from './models/HTTP';\n\n\nexport class APIListCleanupConfigurations extends APIList {\n\n /**\n * /cleanup-configurations\n */\n constructor(parent: APIAdminListDevices) {\n super(parent);\n this.push('cleanup-configurations');\n }\n\n // /cleanup-configurations/specific\n specific() {\n return new APIResource, NoData>(this)\n .push('specific');\n }\n\n}\n\nexport default APIListCleanupConfigurations\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIResource} from './APIResource'\nimport {CleanupConfigurationSpecificData, DeviceCleanupConfiguration} from './models/Device';\nimport {NoData} from './models/HTTP';\nimport APIList from './APIList';\n\n\nexport class APIResourceCleanupConfiguration extends APIResource {\n //shuldn't it be APIAdminResourceCleanupConfiguration\n\n /**\n * admin/devices/cleanup-configurations/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('cleanup-configurations', id);\n }\n\n // admin/devices/cleanup-configurations/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIResourceCleanupConfiguration\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIListCleanupConfigurations} from './APIListCleanupConfigurations';\nimport {APIResourceCleanupConfiguration} from './APIResourceCleanupConfiguration';\nimport {AdminDevice, AdminDeviceData, AdminDevicesQueryParams} from './models/AdminDevice';\n\n\nexport class APIAdminListDevices extends APIList {\n\n /**\n * /admin/devices\n */\n constructor(parent: APIAdminResource | API) {\n super(parent);\n this.push('admin', 'devices');\n }\n\n // /admin/devices/cleanup-configurations\n cleanupConfigurations() {\n return new APIListCleanupConfigurations(this);\n }\n\n // /admin/devices/cleanup-configurations/{id}\n cleanupConfiguration(id: number) {\n return new APIResourceCleanupConfiguration(this, id);\n }\n\n}\n\nexport default APIAdminListDevices;\n","import {Method} from 'axios';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {RunsConfigParams, TestRunConfig} from './models/TestRun';\n\nexport class APIAdminListRuns extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /admin/runs\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'runs');\n }\n\n // /runs/config\n config() {\n const apiResource = new APIResource(this);\n apiResource.restack('runs', 'config');\n return apiResource;\n }\n\n}\n\n\nexport default APIAdminListRuns\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {AdminServicesParams, Service} from './models/Service';\n\n\nexport class APIAdminListServices extends APIList {\n\n /**\n * /admin/services\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'services');\n }\n\n active() {\n const apiList = new APIList(this);\n apiList.params<'notArchived'>({\n notArchived: true\n });\n return apiList;\n }\n\n activated() {\n const apiList = this.active();\n apiList.params<'filter' | 'limit' | 'sort'>({\n filter: 'activated_eq_true',\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n inUse() {\n const apiList = new APIList(this);\n apiList.params<'inUse' | 'limit' | 'sort'>({\n inUse: true,\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n byPrice() {\n const apiList = new APIList(this);\n apiList.params<'sort'>({\n sort: 'centPrice_a'\n })\n return apiList;\n }\n\n}\n\nexport default APIAdminListServices;\n","import {AxiosResponse} from 'axios';\n\nexport function NonRequestable(constructor: T) {\n return class extends constructor {\n send(): Promise {\n return Promise.reject();\n }\n };\n}\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AdminFrameworkStatistics, AdminStatisticsParams} from './models/AdminFrameworkStatistics';\nimport {NoData} from './models/HTTP';\n\n\n@NonRequestable\nexport class APIAdminListStatistics extends APIList {\n\n /**\n * /admin/statistics\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'statistics');\n }\n\n // /admin/statistics/frameworks\n frameworks() {\n return new APIList(this).push('frameworks');\n }\n\n\n}\n\n\nexport default APIAdminListStatistics\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {\n Account, AccountData,\n AccountUsage,\n AccountUsageParams,\n AccountUsageSummary,\n AccountUsageSummaryParams\n} from './models/Account';\nimport {NoData, NoQueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {AccountService} from './models/AccountService';\nimport {AccountPreferences, AccountPreferencesData} from './models/AccountPreference';\n\n\nexport class APIAdminResourceAccount extends APIResource {\n\n /**\n * /admin/accounts/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'accounts', id);\n }\n\n // /admin/accounts/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/accounts/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n // /admin/accounts/{id}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /admin/accounts/{id}/usage\n usage() {\n return new APIList, AccountUsageParams>(this).push('usage');\n }\n\n // /admin/accounts/{id}/usage-summary\n usageSummary() {\n return new APIResource(this).push('usage-summary');\n }\n\n}\n\nexport default APIAdminResourceAccount\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {AccountService} from './models/AccountService';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIAdminResourceAccountService extends APIResource {\n\n /**\n * /admin/account-services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'account-services', id);\n }\n\n // /account-services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /account-services/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate').post();\n }\n\n}\n\nexport default APIAdminResourceAccountService\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice} from './models/AdminDevice';\nimport {Cluster, ClusterData, ClusterParams} from './models/Cluster';\n\n\nexport class APIAdminResourceCluster extends APIResource {\n\n /**\n * /clusters/{id}\n */\n constructor(parent: API | APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('clusters', id);\n }\n\n // /clusters/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIAdminResourceCluster\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice, AdminDeviceData} from './models/AdminDevice';\nimport {AdminDeviceSession} from './models/AdminDeviceSession';\nimport {\n DeviceCleanupConfiguration,\n DeviceCleanupConfigurationData,\n DeviceLabelData,\n DeviceProperty\n} from './models/Device';\nimport {NoData, NoQueryParams, QueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDevice extends APIResource {\n\n /**\n * /admin/devices/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'devices', id);\n }\n\n // /admin/devices/{id}/cleanup-configuration\n cleanupConfiguration() {\n return new APIResource(this).push('cleanup-configuration');\n }\n\n // /admin/devices/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /admin/devices/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n // /admin/devices/{id}/queue\n queue() {\n return new APIList(this).push('queue');\n }\n\n}\n\nexport default APIAdminResourceDevice\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser, DeviceBrowserData} from './models/Browser';\nimport {DeviceModel, DeviceModelData} from './models/DeviceModel';\nimport {NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDeviceModel extends APIResource {\n\n /**\n * /admin/device-models/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'device-models', id);\n }\n\n // /admin/device-models/{id}/browsers\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIAdminResourceDeviceModel;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {NoData} from '../models/HTTP';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\n\n\n@NonRequestable\nexport class InputFileset extends APIResource {\n\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('input-file-set');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files\n */\n files() {\n return new APIList(this).push('files');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files.zip\n */\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n}\n\nexport default InputFileset\n","// Create image files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const IMAGE_FILES_FILTER = new FilterBuilder();\nIMAGE_FILES_FILTER.eq('state', 'READY');\nIMAGE_FILES_FILTER.in('mimetype', [\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif'\n]);\nIMAGE_FILES_FILTER.notlike('name', 'action-%%');\n","// Create non-media files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const NON_MEDIA_FILES_FILTER = new FilterBuilder();\nNON_MEDIA_FILES_FILTER.eq('state', 'READY');\nNON_MEDIA_FILES_FILTER.notin('mimetype', [\n // no images\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif',\n\n // no videos\n 'video/mp4', 'video/avi', 'video/webm', 'video/ogg', 'video/mpeg'\n]);\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {UserFile} from './models/UserFile';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {IMAGE_FILES_FILTER} from './class/Images.filter';\nimport {NON_MEDIA_FILES_FILTER} from './class/NonMedia.filter';\n\n\nexport class APIListOutputFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n performance(): this {\n return this.params({\n tag: ['performance']\n })\n }\n\n images(): this {\n return this.filter(IMAGE_FILES_FILTER);\n }\n\n // Filter files out by non-media\n nonMediaFiles(): this {\n return this.filter(NON_MEDIA_FILES_FILTER);\n }\n\n // Filter files out by ready videos\n videos(): this {\n return this.params({\n filter: 's_state_eq_READY',\n tag: ['video']\n });\n }\n}\n\nexport default APIListOutputFiles;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {Screenshot} from '../models/Screenshot';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\nimport APIListOutputFiles from '../APIListOutputFiles';\n\n\n@NonRequestable\nexport class OutputFileset extends APIResource {\n\n /**\n * /output-file-set\n *\n * Constructor\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('output-file-set');\n }\n\n // /output-file-set/files\n files() {\n return new APIListOutputFiles(this);\n }\n\n // /output-file-set/files/{id}\n file(id: number) {\n return new APIResource(this).push('files', id);\n }\n\n // /output-file-set/files.zip\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n\n // /output-file-set/screenshots\n screenshots() {\n return new APIList(this).push('screenshots');\n }\n\n // /output-file-set/screenshots/{id}\n screenshot(id: number) {\n return new APIResource(this).push('screenshots', id);\n }\n\n // /output-file-set/screenshots/{id}/file/{id}\n screenshotFile(id: number) {\n return this.screenshot(id).push('file');\n }\n}\n\nexport default OutputFileset\n","import {Screenshot} from './models/Screenshot';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListScreenshots extends APIList {\n\n /**\n * screenshots\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('screenshots');\n }\n}\n\nexport default APIListScreenshots\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {InputFileset} from './class/InputFileset'\nimport {OutputFileset} from './class/OutputFileset'\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\nimport {\n DeviceSession,\n DeviceSessionCommand,\n DeviceSessionStep,\n SessionRunStepQueryParams,\n SessionStepQueryParams\n} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport APIListScreenshots from './APIListScreenshots';\n\n\nexport class APIResourceDeviceSessionCommon extends APIResource implements DeviceSessionCommon {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/commands\n commands() {\n return new APIList(this).push('commands');\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/screenshots\n screenshots() {\n return new APIListScreenshots(this);\n }\n\n // /device-sessions/{id}/screenshots/{id}\n screenshot(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('screenshots', id);\n }\n\n // /device-sessions/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n // /device-sessions/{id}/steps/{id}\n step(id: number | 'current') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('steps', id);\n }\n\n // /device-sessions/{id}/steps/current\n currentStep() {\n return this.step('current');\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n logs() {\n return new APIResource(this).push('logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n clusterLogs() {\n return new APIResource(this).push('cluster-logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n}\n\nexport default APIResourceDeviceSessionCommon\n","import {APIResource} from '../APIResource';\nimport APIResourceDeviceSessionCommon from '../APIResourceDeviceSessionCommon';\nimport {DeviceSession} from '../models/DeviceSession';\n\nexport function postAdminDeviceSessionChangeBillable(parent: APIResourceDeviceSessionCommon, billable: boolean) {\n const apiResource = new APIResource(parent);\n const deviceSessionId = apiResource.last;\n\n return apiResource.restack('admin', 'device-sessions', deviceSessionId, 'changebillable').params({\n billable\n }).post();\n}\n\nexport default postAdminDeviceSessionChangeBillable;\n","import {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {postAdminDeviceSessionChangeBillable} from './factory/postAdminDeviceSessionChangeBillable';\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\n\n\n/**\n * APIAdminResourceDevice\n *\n *\n * It will require more work to decouple from regular session\n */\nexport class APIAdminResourceDeviceSessionStandalone extends APIResourceDeviceSessionCommon implements DeviceSessionCommon {\n\n // /admin/device-sessions/{id}/changebillable\n changeBillable(billable: boolean) {\n return postAdminDeviceSessionChangeBillable(this, billable);\n }\n}\n\nexport default APIAdminResourceDeviceSessionStandalone;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NoData} from './models/HTTP';\nimport {DeviceTimeParams, UserDeviceTime} from './models/UserDeviceTime';\n\nexport class APIAdminResourceDeviceTime extends APIList {\n\n /**\n * /admin/device-time\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'device-time');\n }\n}\n\nexport default APIAdminResourceDeviceTime\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Framework, FrameworkConfigData, FrameworkEditData} from './models/Framework';\nimport {NoQueryParams} from './models/HTTP';\nimport {ProjectJobConfig} from './models/ProjectJobConfig';\nimport {Role} from './models/Role';\n\nexport class APIAdminResourceFramework extends APIResource {\n\n /**\n * /admin/frameworks/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'frameworks', id);\n }\n\n // /admin/frameworks/{id}/config\n config() {\n return new APIResource(this).push('config');\n }\n\n // /admin/frameworks/{id}/required-roles\n requiredRoles() {\n return new APIList(this).push('required-roles');\n }\n\n}\n\nexport default APIAdminResourceFramework\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\n\nexport class APIAdminResourceLicense extends APIResource {\n\n /**\n * /licenses/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'licenses', id);\n }\n\n // /licenses/{id}/activate\n activate() {\n return new APIResource(this).push('activate');\n }\n\n // /licenses/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate');\n }\n\n // /licenses/{id}/resend\n resend() {\n return new APIResource(this).push('resend');\n }\n\n // /licenses/{id}/download\n download() {\n return new APIResource(this).push('download');\n }\n\n}\n\nexport default APIAdminResourceLicense\n","import {APIEntity} from '../APIEntity';\nimport {APIResource} from '../APIResource';\nimport {BuildLogsData, BuildLogsParams} from '../models/UserFile';\n\nexport function postDeviceRunIds(parent: APIEntity, name: string, ids?: Array) {\n const a = new APIResource(parent).push(name);\n\n if (ids != null) {\n a.params<'deviceRunIds'>({\n deviceRunIds: ids\n });\n }\n\n return a.post();\n}\n\nexport default postDeviceRunIds;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun, RunChangeBillableParams, RunChangePriorityParams} from './models/AdminTestRun';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceRunStandalone extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/changebillable\n changeBillable(billable: boolean) {\n return new APIResource(this).push('changebillable').post().params({\n billable\n });\n }\n\n // /runs/{id}/changepriority\n changePriority(priority?: number) {\n const resource = new APIResource(this).push('changepriority');\n if (priority) {\n resource.post().data({\n priority\n });\n }\n return resource;\n }\n\n // /admin/runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n}\n\nexport default APIAdminResourceRunStandalone;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceActivateData} from './models/Service';\n\n\nexport class APIAdminResourceService extends APIResource {\n\n /**\n * /services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'services', id);\n }\n\n // /services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n}\n\nexport default APIAdminResourceService\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccountService, AccountServiceData} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Role, RoleData} from './models/Role';\nimport {User, UserUpdateAccount} from './models/User';\n\n@NonRequestable\nexport class APIAdminResourceUserAccount extends APIResource {\n\n /**\n * /account\n */\n constructor(parent: APIAdminResourceUser) {\n super(parent);\n this.push('account');\n }\n\n // /account/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /account/roles/{id}\n role(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('roles', id);\n }\n\n // /account-services\n services() {\n const a = new APIList(this);\n a.last += '-services';\n return a;\n }\n\n // /update-account\n update() {\n const a = new APIResource(this);\n a.last = 'update-account';\n return a.post();\n }\n\n}\n\nexport default APIAdminResourceUserAccount\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {InputFileset} from './class/InputFileset';\nimport {OutputFileset} from './class/OutputFileset';\nimport {DeviceSessionStandalone} from './interface/DeviceSessionStandalone';\nimport {Connection, ConnectionData} from './models/Connection';\nimport {DeviceSession, DeviceSessionRelease} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {VisualTest} from './models/VisualTest';\n\nexport class APIResourceDeviceSessionStandalone extends APIResource implements DeviceSessionStandalone {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIResourceUser | APIAdminResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n // /device-sessions/{id}/connections/{id}\n connection(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('connections', id);\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/visual-tests/images\n visualTestsImages() {\n return new APIList(this).push('visual-tests', 'images');\n }\n\n}\n\nexport default APIResourceDeviceSessionStandalone\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIAdminResourceUserAccount} from './APIAdminResourceUserAccount';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {User} from './models/User';\n\n\n@NonRequestable\nexport class APIAdminResourceUser extends APIResource {\n\n /**\n * /admin/users/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'users', id);\n }\n\n // /admin/users/{id}/disable\n disable() {\n return new APIResource(this).push('disable');\n }\n\n // /admin/users/{id}/enable\n enable() {\n return new APIResource(this).push('enable');\n }\n\n // /admin/users/{id}/licenses\n licenses() {\n return new APIList(this).push('licenses');\n }\n\n // /admin/users/{id}/resend-activation\n resendActivation() {\n return new APIResource(this).push('resend-activation').post();\n }\n\n // /admin/users/{id}/account\n account() {\n return new APIAdminResourceUserAccount(this);\n }\n\n // /admin/users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /admin/users/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/users/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n}\n\nexport default APIAdminResourceUser;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccessGroup} from './models/AccessGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {SharedResource} from './models/SharedResource';\nimport {User, UserData} from './models/User';\n\nexport class APIResourceAccessGroup extends APIResource {\n\n /**\n * /access-groups/{id}\n *\n */\n constructor(parent: APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('access-groups', id);\n }\n\n // /access-groups/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /access-groups/{id}/users/{id}\n user(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('users', id);\n }\n\n // /access-groups/{id}/resources\n resources() {\n return new APIList(this).push('resources');\n }\n\n // /access-groups/{id}/resources/{id}\n resource(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('resources', id);\n }\n\n}\n\nexport default APIResourceAccessGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport APIResourceUser from './APIResourceUser';\nimport {Device, DeviceProperty} from './models/Device';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupParams, DeviceGroupSelectorData} from './models/DeviceGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {ShareData, SharedResource} from './models/SharedResource';\n\nexport class APIResourceDeviceGroup extends APIResource {\n\n /**\n * /device-groups/{id}\n */\n constructor(parent: APIAdminResource | APIResourceUser | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-groups', id);\n }\n\n // /device-groups/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n // /device-groups/{id}/devices/{id}\n device(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('devices', id);\n }\n\n // /device-groups/{id}/selectors\n selectors() {\n return new APIList(this).push('selectors');\n }\n\n // /device-groups/{id}/selectors/{id}\n selector(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('selectors', id);\n }\n\n // /device-groups/{id}/share\n share() {\n return new APIList(this).push('share');\n }\n\n}\n\nexport default APIResourceDeviceGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport {Property} from './models/Property';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {FileSizeData, UserFile, UserFileTag} from './models/UserFile';\n\n\nexport class APIResourceFile extends APIResource {\n\n /**\n * /files/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('files', id);\n }\n\n // use this to download file content\n // /files/{id}/file\n file() {\n return new APIResource(this).push('file');\n }\n\n // /files/{id}/icon\n icon() {\n return new APIResource(this).push('icon');\n }\n\n // /files/{id}/tags\n tags() {\n return new APIList(this).push('tags');\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n property(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('properties', id);\n }\n\n}\n\nexport default APIResourceFile\n","import {NoData} from './models/HTTP';\nimport {TestCaseRun} from './models/TestCaseRun';\nimport APIList, {APIListQuery} from './APIList';\nimport {SessionQueryParams} from './models/DeviceSession';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListTestCaseRuns extends APIList {\n\n /**\n * /test-case-runs\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('test-case-runs');\n }\n}\n\nexport default APIListTestCaseRuns\n","import {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {DeviceSession as DeviceSessionModel, SessionQueryParams} from './models/DeviceSession';\nimport APIListTestCaseRuns from './APIListTestCaseRuns';\nimport {APIListQuery} from './APIList';\n\nexport class APIResourceDeviceSession extends APIResourceDeviceSessionCommon {\n\n // /device-sessions/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /device-sessions/{id}/retry\n retry() {\n return new APIResource(this).push('retry').post();\n }\n\n // /device-sessions/{id}/test-case-runs\n testCaseRuns() {\n return new APIListTestCaseRuns(this);\n }\n}\n\nexport default APIResourceDeviceSession\n","import {DeviceSession} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceRunCommon from './APIResourceRunCommon';\n\n\nexport class APIListTestRunDeviceSessions extends APIList {\n\n /**\n * device-sessions\n */\n constructor(parent: APIResourceRunCommon) {\n super(parent);\n this.push('device-sessions');\n }\n}\n\nexport default APIListTestRunDeviceSessions\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {DeviceSessionStep} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {RunData, RunQueryParam, TestRun, TestRunData} from './models/TestRun';\nimport {TestRunDataAvailability, TestRunDataAvailabilityQueryParams} from './models/TestRunDataAvailability';\nimport {UserFile} from './models/UserFile';\nimport APIListTestRunDeviceSessions from './APIListTestRunDeviceSessions';\n\n\nexport class APIResourceRunCommon extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/build-logs.zip\n buildLogsZip(ids?: Array) {\n return postDeviceRunIds(this, 'build-logs.zip', ids);\n }\n\n // /runs/{id}/data-availability\n dataAvailability() {\n return new APIResource(this).push('data-availability');\n }\n\n // /runs/{id}/device-sessions\n deviceSessions() {\n return new APIListTestRunDeviceSessions(this);\n }\n\n // /runs/{id}/files.zip\n filesZip(ids?: Array) {\n return postDeviceRunIds(this, 'files.zip', ids);\n }\n\n // /runs/{id}/logs.zip\n logsZip(ids?: Array) {\n return postDeviceRunIds(this, 'logs.zip', ids);\n }\n\n // /runs/{id}/performance.zip\n performanceZip(ids?: Array) {\n return postDeviceRunIds(this, 'performance.zip', ids);\n }\n\n // /runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n // /runs/{id}/screenshots.zip\n screenshotsZip(ids?: Array) {\n return postDeviceRunIds(this, 'screenshots.zip', ids);\n }\n\n // /runs/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n}\n\nexport default APIResourceRunCommon\n","import {APIResourceDeviceSession} from './APIResourceDeviceSession'\nimport {APIResourceRunCommon} from './APIResourceRunCommon'\nimport {CollectionQueryParams} from './models/HTTP';\n\nexport class APIResourceRun extends APIResourceRunCommon {\n\n // /runs/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n}\n\nexport default APIResourceRun\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceRun} from './APIResourceRun'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Project} from './models/Project';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {TestRun} from './models/TestRun';\n\nexport class APIResourceProject extends APIResource {\n\n /**\n * /projects/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('projects', id);\n }\n\n // /projects/{id}/runs\n runs() {\n return new APIList(this).push('runs');\n }\n\n // /projects/{id}/runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n // /unarchive\n unarchive() {\n return new APIResource(this).push('unarchive');\n }\n\n}\n\nexport default APIResourceProject\n","import {API} from '../API';\nimport {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIAdminListRuns} from './APIAdminListRuns';\nimport {APIAdminListServices} from './APIAdminListServices';\nimport {APIAdminListStatistics} from './APIAdminListStatistics';\nimport APIAdminResourceAccount from './APIAdminResourceAccount';\nimport {APIAdminResourceAccountService} from './APIAdminResourceAccountService';\nimport {APIAdminResourceCluster} from './APIAdminResourceCluster';\nimport {APIAdminResourceDevice} from './APIAdminResourceDevice';\nimport {APIAdminResourceDeviceModel} from './APIAdminResourceDeviceModel';\nimport {APIAdminResourceDeviceSessionStandalone} from './APIAdminResourceDeviceSessionStandalone';\nimport {APIAdminResourceDeviceTime} from './APIAdminResourceDeviceTime';\nimport {APIAdminResourceFramework} from './APIAdminResourceFramework';\nimport {APIAdminResourceLicense} from './APIAdminResourceLicense';\nimport {APIAdminResourceRunStandalone} from './APIAdminResourceRunStandalone';\nimport {APIAdminResourceService} from './APIAdminResourceService';\nimport {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceFile} from './APIResourceFile'\nimport {APIResourceProject} from './APIResourceProject';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccessGroup, AccessGroupData} from './models/AccessGroup';\nimport {Account} from './models/Account';\nimport {AccountService} from './models/AccountService';\nimport {Activity} from './models/Activity';\nimport {AdminDeviceSession, AdminInteractiveDeviceSession} from './models/AdminDeviceSession';\nimport {AdminDeviceType, DeviceTypeData} from './models/AdminDeviceType';\nimport {AdminEmail} from './models/AdminEmail';\nimport {Administrator} from './models/Administrator';\nimport {AdminOverview} from './models/AdminOverview';\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {Browser, BrowserData} from './models/Browser';\nimport {DeviceModelCriterion, DeviceModelCriterionData} from './models/DeviceModelCriterion';\nimport {DeviceModelPool, DeviceModelPoolData} from './models/DeviceModelPool';\nimport {Framework, FrameworkData} from './models/Framework';\nimport {License, LicenseData} from './models/License';\nimport {Maintenance, MaintenanceData} from './models/Maintenance';\nimport {Project} from './models/Project';\nimport {Role, RoleParams} from './models/Role';\nimport {Settings, SettingsParams} from './models/Settings';\nimport {User, UserData, UserParams} from './models/User';\nimport {DeviceTimeSummaryParams, UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {UserFile, UserFileData, UserFileParams} from './models/UserFile';\nimport {Cluster} from './models/Cluster';\nimport {DeviceProperty} from './models/Device';\nimport {DeviceGroup} from './models/DeviceGroup';\nimport {DeviceModel} from './models/DeviceModel';\nimport {DeviceProblem} from './models/DeviceProblem';\nimport {DeviceStatus} from './models/DeviceStatus';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n@NonRequestable\nexport class APIAdminResource extends APIResource {\n\n /**\n * /admin\n */\n constructor(parent: API) {\n super(parent);\n }\n\n // /access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /admin/accounts\n accounts() {\n return new APIList(this).push('admin', 'accounts');\n }\n\n // /admin/accounts/{id}\n account(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIAdminResourceAccount(this, id);\n }\n\n // /admin/account-services\n accountServices() {\n return new APIList(this).push('admin', 'account-services');\n }\n\n // /admin/account-services/{id}\n accountService(id: number) {\n return new APIAdminResourceAccountService(this, id);\n }\n\n // activities\n activities() {\n return new APIList(this).push('admin', 'activities');\n }\n\n // admin/administrators\n administrators() {\n return new APIList(this).push('admin', 'administrators');\n }\n\n // /admin/billing-periods\n billingPeriods() {\n return new APIList(this).push('admin', 'billing-periods');\n }\n\n // /admin/billing-periods/{id}\n billingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'billing-periods', id);\n }\n\n // /admin/browsers\n browsers() {\n return new APIList(this).push('admin', 'browsers');\n }\n\n // /admin/browsers/{id}\n browser(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'browsers', id);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /admin/devices\n devices() {\n return new APIAdminListDevices(this);\n }\n\n // /admin/devices/{id}\n device(id: number) {\n return new APIAdminResourceDevice(this, id);\n }\n\n devicesForModel(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n const apiList = this.devices();\n apiList.params({\n filter: 'deviceModelId_eq_' + id\n });\n return apiList;\n }\n\n // /admin/device/statuses\n deviceStatuses() {\n return new APIList(this).push('admin', 'device', 'statuses');\n }\n\n // /admin/device-models\n deviceModels() {\n return new APIList(this).push('admin', 'device-models');\n }\n\n // /admin/device-models/{id}\n deviceModel(id: number) {\n return new APIAdminResourceDeviceModel(this, id);\n }\n\n // /admin/device-problems\n deviceProblems() {\n return new APIList(this).push('admin', 'device-problems');\n }\n\n // /admin/device-model-criteria\n deviceModelCriterias() {\n return new APIList(this).push('admin', 'device-model-criteria');\n }\n\n // /admin/device-model-criteria/{id}\n deviceModelCriteria(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'device-model-criteria', id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('admin', 'device-sessions');\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIAdminResourceDeviceSessionStandalone(this, id);\n }\n\n // /device-time\n deviceTime() {\n return new APIAdminResourceDeviceTime(this);\n }\n\n // /device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('admin', 'device-time-summary');\n }\n\n // /device-types\n deviceTypes() {\n return new APIList(this).push('admin', 'device-types');\n }\n\n // /device-types/{id}\n deviceType(id: number) {\n return new APIResource(this).push('admin', 'device-types', id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /admin/emails\n emails() {\n return new APIList(this).push('admin', 'emails');\n }\n\n // /admin/emails/{id}/resend\n resendEmail(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'emails', id, 'resend').post();\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /admin/frameworks\n frameworks() {\n return new APIList(this).push('admin', 'frameworks');\n }\n\n // /admin/frameworks/{id}\n framework(id: number) {\n return new APIAdminResourceFramework(this, id);\n }\n\n // /admin/frameworks/available-labels\n frameworkAvailableLabels() {\n const apiList = this.frameworks();\n apiList.push('available-labels');\n return apiList;\n }\n\n // /admin/interactive-queue\n interactiveQueue() {\n return new APIList(this).push('admin', 'interactive-queue');\n }\n\n // /admin/licenses\n licenses() {\n return new APIList(this).push('admin', 'licenses');\n }\n\n // /admin/licenses/{id}\n license(id: number) {\n return new APIAdminResourceLicense(this, id);\n }\n\n // /admin/maintenance\n maintenance() {\n return new APIResource(this).push('admin', 'maintenance');\n }\n\n // /admin/overview\n overview() {\n return new APIResource(this).push('admin', 'overview');\n }\n\n pools() {\n return new APIList(this).push('admin', 'pools');\n }\n\n pool(id: number) {\n return new APIResource(this).push('admin', 'pools', id);\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /admin/roles\n roles() {\n return new APIList(this).push('admin', 'roles');\n }\n\n // /admin/runs\n runs() {\n return new APIAdminListRuns(this);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIAdminResourceRunStandalone(this, id);\n }\n\n // /admin/samples\n samples() {\n return new APIList>(this).push('admin', 'samples');\n }\n\n // /admin/samples/{id}\n sample(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'samples', id);\n }\n\n // /admin/services\n services() {\n return new APIAdminListServices(this);\n }\n\n // /admin/services/{id}\n service(id: number) {\n return new APIAdminResourceService(this, id);\n }\n\n // /admin/settings\n settings() {\n return new APIResource(this).push('admin', 'settings');\n }\n\n // /admin/statistics\n statistics() {\n return new APIAdminListStatistics(this);\n }\n\n // /users\n users() {\n return new APIList(this).push('users');\n }\n\n // /admin/users\n createUser() {\n return new APIList(this).push('admin', 'users').post();\n }\n\n // /users/{id}\n user(id: number) {\n return new APIAdminResourceUser(this, id);\n }\n\n}\n\nexport default APIAdminResource;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {DesktopBrowserCapabilities} from './models/DesktopBrowserCapabilities';\nimport {Device, DevicesQueryParams} from './models/Device';\nimport {DevicePicker} from './models/DeviceFilter';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIListDevices extends APIList {\n\n /**\n * /devices\n */\n constructor(parent: API) {\n super(parent);\n this.push('devices');\n }\n\n // /devices/filters\n filters() {\n return new APIResource>(this).push('filters');\n }\n\n // /devices/desktop-browser-capabilities\n desktopBrowserCapabilities() {\n return new APIResource(this).push('desktop-browser-capabilities');\n }\n\n}\n\nexport default APIListDevices;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {CollectionQueryParams} from './models/HTTP';\nimport {Property, PropertyData} from './models/Property';\n\n\nexport class APIListProperties extends APIList {\n\n /**\n * /properties\n */\n constructor(parent: API) {\n super(parent);\n this.push('properties');\n }\n\n maintenance() {\n return new APIList(this).params({\n filter: 'name_eq_CLOUD_HEADER_ANNOUNCEMENT',\n limit: 1,\n sort: 'updateTime_d'\n });\n }\n\n}\n\nexport default APIListProperties\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceData} from './models/Service';\n\n\nexport class APIListServices extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['POST'];\n\n /**\n * /services\n */\n constructor(parent: API | APIResourceUser) {\n super(parent);\n this.push('services');\n }\n\n // /services/available\n available() {\n return new APIList(this).push('available');\n }\n\n active() {\n const apiList = new APIList(this);\n if (this.first === 'me') {\n apiList.push('active');\n } else {\n apiList.params({\n notArchived: true\n });\n }\n return apiList;\n }\n\n byPrice() {\n return new APIList(this).sort('centPrice');\n }\n\n availableByPrice() {\n return new APIList(this).push('available').sort('centPrice');\n }\n\n}\n\nexport default APIListServices\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {\n User,\n UserActivateData,\n UserData,\n UserPasswordData,\n UserRecoveryQueryParams,\n} from './models/User';\n\n\nexport class APIListUsers extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET', 'POST'];\n\n /**\n * /users\n */\n constructor(parent: API) {\n super(parent);\n this.push('users');\n }\n\n // /users/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /users/recoveries\n recoveries() {\n return new APIResource(this).push('recoveries');\n }\n\n // /users/passwordRecovery\n passwordRecovery() {\n return new APIResource(this).push('password-recovery');\n }\n\n}\n\nexport default APIListUsers;\n","import {APIResource} from './APIResource'\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {APIResourceAccount} from './APIResourceAccount';\n\n\n\n\nexport class APIResourceBillingPeriod extends APIResource {\n\n /**\n * /billing-periods/{id}\n */\n constructor(parent: APIResourceAccount, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('billing-periods', id);\n }\n\n // /billing-periods/{id}/receipt\n receipt() {\n return new APIResource(this).push('receipt').setRequestConfig({\n responseType: 'arraybuffer'\n });\n }\n\n}\n\nexport default APIResourceBillingPeriod\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceBillingPeriod} from './APIResourceBillingPeriod';\nimport {\n Account,\n AccountData,\n AccountSessionUsage,\n AccountSessionUsageSummary,\n AccountUserSessionUsage\n} from './models/Account';\nimport {AccountConcurrencyStatusMap} from './models/AccountConcurrencyStatusMap';\nimport {AccountPreferences} from './models/AccountPreference';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {AccountServicePayment} from './models/AccountServicePayment';\nimport {BillingPeriod, BillingPeriodQueryParams} from './models/BillingPeriod';\nimport {DeviceTimeSummaryQueryParams} from './models/Device';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {User, UserData} from './models/User';\nimport {DeviceTimeQueryParams, UserDeviceTime} from './models/UserDeviceTime';\nimport {UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {VisualTestAccess} from './models/VisualTest';\n\n\nexport class APIResourceAccount extends APIResource {\n\n /**\n * /accounts/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('accounts', id);\n }\n\n // /accounts/{id}/concurrency-status\n concurrencyStatus() {\n return new APIResource(this).push('concurrency-status');\n }\n\n // /accounts/{id}/device-time\n deviceTime() {\n return new APIList(this).push('device-time');\n }\n\n // /accounts/{id}/device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('device-time-summary');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource>(this).push('preferences');\n }\n\n // /accounts/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /accounts/{accountId}/users/{userId}\n removeUser(id: number) {\n return new APIResource(this).push('users', id);\n }\n\n // /accounts/{accountId}/users/{userId}/disable\n disableUser(id: number) {\n return new APIResource(this).push('users', id, 'disable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/enable\n enableUser(id: number) {\n return new APIResource(this).push('users', id, 'enable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/resend-activation\n resendActivation(id: number) {\n return new APIResource(this).push('users', id, 'resend-activation').post();\n }\n\n // /accounts/{accountId}/billing-periods\n billingPeriods() {\n return new APIList(this).push('billing-periods');\n }\n\n // /accounts/{accountId}/billing-periods/{id}\n billingPeriod(id: number) {\n return new APIResourceBillingPeriod(this, id);\n }\n\n // /account-services/{id}/billing-period\n serviceBillingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('account-services', id, 'billing-period');\n }\n\n // /accounts/{accountId}/visual-test/access\n visualTestAccess() {\n return new APIResource(this).push('visual-tests', 'access');\n }\n\n // /accounts/{accountId}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{accountId}/account-services/{id}\n accountService(id: number) {\n return new APIList(this).push('account-services', id);\n }\n\n // /accounts/{accountId}/services\n services() {\n return new APIResource(this).push('services');\n }\n\n // /accounts/{accountId}/user-usage-details\n userUsageDetails() {\n return new APIList(this).push('user-usage-details');\n }\n\n // /accounts/{accountId}/usage-details\n usageDetails() {\n return new APIList(this).push('usage-details');\n }\n\n // /accounts/{accountId}/usage-details-summary\n usageDetailsSummary() {\n return new APIResource(this).push('usage-details-summary');\n }\n\n}\n\nexport default APIResourceAccount;\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Broker} from './models/Broker';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIResourceBroker extends APIResource {\n\n /**\n * /broker\n */\n constructor(parent: API) {\n\n super(parent);\n this.push('broker');\n }\n\n // /broker/hubs\n hubs() {\n return new APIList(this).push('hubs');\n }\n\n}\n\nexport default APIResourceBroker\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser} from './models/Browser';\nimport {Device, DeviceProperiesData, DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams} from './models/HTTP';\n\n\nexport class APIResourceDevice extends APIResource {\n\n /**\n * /devices/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('devices', id);\n }\n\n // /devices/{id}/properties\n properties() {\n return new APIList(this).push('properties');\n }\n\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIResourceDevice\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams, NoQueryParams} from './models/HTTP';\nimport {LabelData, LabelGroup} from './models/LabelGroup';\n\nexport class APIResourceLabelGroup extends APIResource {\n\n /**\n * /label-groups/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('label-groups', id);\n }\n\n // /label-groups/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /label-groups/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n}\n\nexport default APIResourceLabelGroup\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {FileData, UploadObj, UserFile} from './models/UserFile';\n\n\nexport class APIListFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n /**\n * Simplifies process of uploading\n * /files\n */\n upload(obj: UploadObj): this {\n // For NodeJS\n // @ts-ignore\n if (global.isNodeJs) {\n return this.nodeUpload(obj);\n } else {\n /**\n * Browser\n * @todo\n */\n throw new Error('Not supported yet!');\n }\n }\n\n private nodeUpload(file: UploadObj): this {\n const fs = require('fs');\n const FormData = require('form-data');\n const form = new FormData();\n form.append('file', fs.createReadStream(file.dir + '/' + file.filename), {\n filename: file.filename\n });\n return this.post().headers(form.getHeaders()).data(form);\n }\n\n}\n\nexport default APIListFiles\n","import {APIList} from './APIList'\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIResource} from './APIResource'\n\n\nexport class APIResourceChannel extends APIResource {\n\n /**\n * /users/{id}/notifications/channels/{type}\n */\n constructor(parent: APIListNotifications, type: string) {\n if (type == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('channels', type);\n }\n\n // /channels/{type}/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n}\n\nexport default APIResourceChannel;\n","import {APIList} from './APIList';\nimport {APIResourceChannel} from './APIResourceChannel';\nimport {APIResourceUser} from './APIResourceUser';\nimport {Enum} from './models/Enum';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Notification, NotificationsData} from './models/Notification';\n\n\nexport class APIListNotifications extends APIList {\n\n /**\n * /notifications\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('notifications');\n }\n\n // /notifications/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n // /notifications/channels\n channels() {\n return new APIList(this).push('channels');\n }\n\n channel(type: string) {\n return new APIResourceChannel(this, type);\n }\n\n}\n\nexport default APIListNotifications\n","import {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {\n RunsConfigParams,\n TestRun,\n TestRunConfig,\n TestRunsQueryParams\n} from './models/TestRun';\n\n\nexport class APIListRuns extends APIList {\n\n /**\n * /runs\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('runs');\n }\n\n // /runs/config\n config() {\n return new APIResource(this).push('config');\n }\n\n}\n\nexport default APIListRuns\n","import {Method} from 'axios';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData} from './models/HTTP';\nimport {SmartbearTunnel, TunnelQueryParams} from './models/SmartbearTunnel';\n\n\nexport class APIListSmartbearTunnels extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /tunnels\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('tunnels');\n }\n\n /**\n * Sets tunnel activity parameter\n */\n active(active: boolean): this {\n return this.params({active: active});\n }\n}\n\nexport default APIListSmartbearTunnels;\n","\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {Notification, NotificationData} from './models/Notification';\n\nexport class APIResourceNotification extends APIResource {\n\n /**\n * /notifications/{id}\n */\n constructor(parent: APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('notifications', id);\n }\n\n // /notifications/{id}/test\n test() {\n return new APIResource(this).push('test');\n }\n\n}\n\nexport default APIResourceNotification\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIListFiles} from './APIListFiles';\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIListRuns} from './APIListRuns';\nimport {APIListServices} from './APIListServices';\nimport {APIListSmartbearTunnels} from './APIListSmartbearTunnels';\nimport {APIResource} from './APIResource';\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {APIResourceFile} from './APIResourceFile';\nimport {APIResourceNotification} from './APIResourceNotification';\nimport {APIResourceProject} from './APIResourceProject';\nimport {AccessGroup, AccessGroupsData} from './models/AccessGroup';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupIdsData, DeviceGroupWithPublicParams} from './models/DeviceGroup';\nimport {DeviceStatistics} from './models/DeviceStatistics';\nimport {DeviceUsage} from './models/DeviceUsage';\nimport {Framework} from './models/Framework';\nimport {Project, UserProjectData, UserProjectQueryParams} from './models/Project';\nimport {User, UserDeleteData} from './models/User';\nimport {UiPreferencesData, UserPreference, UserPreferenceData} from './models/UserPreference';\nimport {StatisticQueryParams, UserStatistics} from './models/UserStatistics';\nimport {DeviceSession, DeviceSessionData, DeviceSessionQueryParams} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams} from './models/HTTP';\nimport {DeviceStatisticQueryParam, DeviceUsageQueryParams} from './models/Device';\n\nexport class APIResourceUser extends APIResource {\n\n /**\n * /users/{id} | /me\n */\n constructor(parent: API, id: number | 'me') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n\n if (id === 'me') {\n this.push('me');\n } else if (typeof id === 'number') {\n this.push('users', id);\n } else {\n throw new TypeError('id is not a number');\n }\n }\n\n // /users/{id}/services\n services() {\n return new APIListServices(this);\n }\n\n // /users/{id}/device-groups\n deviceGroups() {\n return new APIList>(this).push('device-groups');\n }\n\n // /users/{id}/device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /users/{id}/device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /users/{id}/mark-account-owner\n markAccountOwner() {\n return new APIResource(this).push('mark-account-owner').post();\n }\n\n // /users/{id}/projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /users/{id}/projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /users/{id}/files\n files() {\n return new APIListFiles(this);\n }\n\n // /users/{id}/files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /users/{id}/runs\n runs() {\n return new APIListRuns(this);\n }\n\n // /users/{id}/available-frameworks\n availableFrameworks() {\n return new APIList(this).push('available-frameworks');\n }\n\n /**\n * /users/{id}/reset-api-key\n */\n resetApiKey() {\n return new APIResource(this).push('reset-api-key');\n }\n\n // /users/{id}/restore\n restore() {\n return new APIResource(this).push('restore');\n }\n\n // /users/{id}/feedback\n feedback() {\n return new APIResource(this).push('feedback');\n }\n\n // /users/{id}/notifications\n notifications() {\n return new APIListNotifications(this);\n }\n\n // /users/{id}/notifications/{id}\n notification(id: number) {\n return new APIResourceNotification(this, id);\n }\n\n // /users/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /users/{id}/ui-preferences\n uiPreferences() {\n return new APIResource(this).push('ui-preferences');\n }\n\n // /users/{id}/device-usage\n deviceUsage() {\n return new APIList(this).push('device-usage');\n }\n\n // /users/{id}/statistics\n statistics() {\n return new APIResource(this).push('statistics');\n }\n\n // /users/{id}/device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /users/{id}/access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /users/{id}/access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /users/{id}/tunnels/{id}\n smartbearTunnel(id: number) {\n return new APIResource(this).push('tunnels', id);\n }\n\n // /users/{id}/tunnels\n smartbearTunnels() {\n return new APIListSmartbearTunnels(this);\n }\n\n deleteAccount() {\n return new APIResource(this).push('delete');\n }\n}\n\nexport default APIResourceUser\n","import {API} from '../API';\nimport {APIResource} from './APIResource'\nimport {NoQueryParams} from './models/HTTP';\nimport {LoginData, User} from './models/User';\n\nexport class APIResourceUserSession extends APIResource {\n\n // /user-sessions\n constructor(parent: API) {\n super(parent);\n this.push('user-sessions');\n }\n\n // /user-sessions/login\n login(data: LoginData) {\n return new APIResource(this).push('login').post().data(data);\n }\n\n // /user-sessions/logout\n logout() {\n return new APIResource(this).push('logout').post();\n }\n\n // /user-sessions/oauth/authorize/{name}-login\n sso(name: string) {\n return new APIResource(this).push('oauth', 'authorize', name + '-login');\n }\n\n // /user-sessions/oauth/authorize/sbid-login\n sbidCallbackUrl() {\n return new APIResource(this).push('oauth', 'authorize', 'sbid-login').toUrl(true);\n }\n\n}\n\nexport default APIResourceUserSession\n","import {AxiosInstance} from 'axios';\n\n// this version of axios has some issue paired with rollup and is not handling default import correctly\n// as a workaround we need to use require instead of import until migrating to newer axios version.\n//\n// Axios has been updated to version 1.13.2. Due to issues related to how axios exports are handled between CommonJS and ES Module\n// as a workaround we need to use require instead of import in case we want to support both CJS and ESM.\n// For CommonJS output in the consumer project (f.ex cloud-frontend), the workaround may still be needed. For ESM, the default import should work.\nconst axios = require('axios').default;\n// @ts-ignore\nimport {version} from '../package.json';\nimport {APIAdminResource} from './api/APIAdminResource';\nimport {APIAdminResourceCluster} from './api/APIAdminResourceCluster';\nimport {APIList} from './api/APIList';\nimport {APIListDevices} from './api/APIListDevices';\nimport {APIListProperties} from './api/APIListProperties';\nimport {APIListServices} from './api/APIListServices';\nimport {APIListUsers} from './api/APIListUsers';\nimport {APIResource} from './api/APIResource';\nimport {APIResourceAccount} from './api/APIResourceAccount';\nimport {APIResourceBroker} from './api/APIResourceBroker';\nimport {APIResourceDevice} from './api/APIResourceDevice';\nimport {APIResourceDeviceGroup} from './api/APIResourceDeviceGroup';\nimport {APIResourceDeviceSession} from './api/APIResourceDeviceSession';\nimport {APIResourceFile} from './api/APIResourceFile';\nimport {APIResourceLabelGroup} from './api/APIResourceLabelGroup';\nimport {APIResourceProject} from './api/APIResourceProject';\nimport {APIResourceRun} from './api/APIResourceRun';\nimport {APIResourceUser} from './api/APIResourceUser';\nimport {APIResourceUserSession} from './api/APIResourceUserSession';\nimport {Cluster} from './api/models/Cluster';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './api/models/HTTP';\nimport {License} from './api/models/License';\nimport {Project} from './api/models/Project';\nimport {Property} from './api/models/Property';\nimport {UserFile, UserFileData, UserFileParams} from './api/models/UserFile';\nimport {ApiConfig} from './ApiConfig';\nimport './finka';\nimport {LabelGroup} from './api/models/LabelGroup';\n\n// @ts-ignore\nif (globalThis.isNodeJs) {\n // Set User-Agent\n axios.defaults.headers.common['User-Agent'] = `Bitbar Cloud API Client for JavaScript v${version}`;\n}\n\n// Disable max content length\naxios.defaults.maxContentLength = 1073741824; // 1GB\n\n/**\n * API\n * Root for other API resources\n */\nexport class API {\n axios: AxiosInstance;\n\n private axiosConfig: ApiConfig = {};\n\n get baseUrl(): string {\n return this.axiosConfig.baseURL;\n }\n\n\n constructor(private config: ApiConfig) {\n if (config == null) {\n throw new Error('config cannot be empty');\n } else if (this.config.cloudUrl == null) {\n throw new TypeError('cloudUrl cannot be empty');\n } else if (typeof this.config.cloudUrl !== 'string') {\n throw new TypeError('cloudUrl must be a string');\n } else if (!/^https?:\\/\\/.{2,}/.test(this.config.cloudUrl)) {\n throw new Error(`cloudUrl doesn't look like a URL`);\n }\n\n // Validate and correct cloudUrl if needed\n this.axiosConfig.baseURL = this.config.cloudUrl.replace(/\\/+$/, '') + '/api'\n\n // Check v2\n this.config.v2 = !!this.config.v2;\n if (this.config.v2) {\n this.axiosConfig.baseURL += '/v2';\n }\n\n // Check if apiKey is set\n if (this.config.apiKey) {\n if (typeof this.config.apiKey !== 'string') {\n throw new TypeError('apiKey must be a string');\n } else if (!/^[A-Za-z0-9]{32}$/.test(this.config.apiKey)) {\n throw new Error('apiKey is in the wrong format');\n }\n\n this.axiosConfig.auth = {\n username: this.config.apiKey,\n password: ''\n };\n }\n\n // With XSRFToken\n this.axiosConfig.withXSRFToken = true;\n // With credentials\n this.axiosConfig.withCredentials = config.withCredentials == null ? false : config.withCredentials;\n\n // Create axios instance\n this.axios = axios.create(this.axiosConfig);\n }\n\n\n // --- Resources starts here --- //\n\n // /account/{id}\n account(id: number) {\n return new APIResourceAccount(this, id);\n }\n\n // /admin\n admin() {\n return new APIAdminResource(this);\n }\n\n // /broker\n broker() {\n return new APIResourceBroker(this);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /devices/{id}\n device(id: number) {\n return new APIResourceDevice(this, id);\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /devices\n devices() {\n return new APIListDevices(this);\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /enums\n enums() {\n return new APIResource(this).push('enums');\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /label-groups\n labelGroups() {\n return new APIList(this).push('label-groups');\n }\n\n // /label-groups/{id}\n labelGroup(id: number) {\n return new APIResourceLabelGroup(this, id);\n }\n\n // /labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /licenses\n licenses() {\n return new APIResource(this).push('licenses');\n }\n\n // /license\n license() {\n return new APIResource(this).push('license');\n }\n\n /*\n /me or /admin\n Requires prototype extension covering ACL check\n */\n ma(): APIAdminResource | APIResourceUser {\n throw new Error('Requires prototype extension covering ACL check');\n }\n\n // /me\n me() {\n return this.user('me');\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /properties\n properties() {\n return new APIListProperties(this);\n }\n\n // /properties/{id}\n property(id: number) {\n return new APIResource(this).push('properties', id);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n // /services\n services() {\n return new APIListServices(this);\n }\n\n // /user/{id}\n user(id: number | 'me') {\n return new APIResourceUser(this, id);\n }\n\n // /users\n users() {\n return new APIListUsers(this);\n }\n\n // /user-sessions\n userSession() {\n return new APIResourceUserSession(this);\n }\n\n}\n\n\nexport default API;\n","/* istanbul ignore file */\n\nimport {API} from './API';\nimport {FilterBuilder} from './FilterBuilder';\n\nexport {API} from './API';\nexport {FilterBuilder} from './FilterBuilder';\n\n/**\n * Cloud API Client\n */\nexport const CloudAPIClient = {\n API,\n FilterBuilder\n}\n\nexport default CloudAPIClient;\n","export enum AccessGroupScope {\n USER = 'USER',\n ACCOUNT = 'ACCOUNT',\n GLOBAL = 'GLOBAL'\n}\n\nexport type AccessGroup = {\n id: number;\n name: string;\n scope: AccessGroupScope;\n userEmail: string;\n userId: number;\n}\n\nexport type AccessGroupData = Pick;\n\nexport type AccessGroupsData = Omit;\n","import {CollectionQueryParams} from './HTTP';\n\n\nexport type Account = {\n activeServiceName: string,\n comment: string,\n createTime: number,\n dedicatedDevicesConcurrency: number,\n dedicatedDevicesCount: number,\n dedicatedDevicesRatio: number,\n dedicatedDevicesUsage: number,\n id: number,\n invoiceDetails: Invoice,\n name: string,\n publicDevicesConcurrency: number,\n publicDevicesRatio: number,\n publicDevicesUsage: number,\n slmOrganizationId: string,\n userName: string\n}\n\nexport type Invoice = {\n address: string,\n city: string,\n code: string,\n country: string,\n state: string\n}\n\nexport type AccountData = Partial<{\n comment: string,\n invoiceDetails: Invoice,\n name: string,\n slmOrganizationId: string;\n userName: string\n}>\n\nexport type AccountUsageSummary = {\n sessionsCount: number,\n duration: number,\n deviceModelsCount: number,\n tunnelEnabledCount: number,\n osVersionsCount: number,\n projectsCount: number,\n usersCount: number,\n}\n\nexport type AccountUsage = {\n timestamp: number,\n timestampLabel: string,\n sessionsCount: number,\n automatedConcurrency: number,\n automatedUsage: number,\n dedicatedConcurrency: number,\n dedicatedUsage: number,\n manualConcurrency: number,\n manualUsage: number\n}\n\nexport type AccountUserSessionUsage = {\n devices: number,\n duration: number,\n osVersions: number,\n sessions: number,\n sessionShare: number\n userId: number,\n userName: string,\n}\n\nexport type AccountSessionUsage = {\n createTime: number,\n deviceModelName: string,\n duration: number,\n osVersion: string,\n type: SessionUsageType,\n userId: number,\n userName: string\n}\n\nexport type AccountSessionUsageSummary = {\n totalTime: number,\n usage: Record\n}\n\nexport enum SessionUsageType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL = 'MANUAL',\n DEDICATED_AUTOMATIC = 'DEDICATED_AUTOMATIC',\n DEDICATED_MANUAL = 'DEDICATED_MANUAL'\n}\n\nexport enum UtilizationType {\n ALL = 'all',\n PUBLIC = 'public',\n DEDICATED = 'dedicated'\n}\n\nexport enum SessionType {\n ALL = 'all',\n AUTOMATED = 'automated',\n MANUAL = 'manual'\n}\n\nexport enum TimeResolution {\n HOUR = 'hour',\n DAY = 'day'\n}\n\nexport type AccountUsageParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n sessionType?: SessionType,\n utilizationType?: UtilizationType,\n}\n\nexport type AccountUsageSummaryParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n}\n","import {ServiceUnit} from './Service';\n\nexport enum PaymentStatus {\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n REDIRECTED = 'REDIRECTED'\n}\n\nexport enum PaymentMethod {\n PAYPAL = 'PAYPAL',\n BRAINTREE = 'BRAINTREE',\n STRIPE = 'STRIPE',\n INVOICE = 'INVOICE',\n PROMOTION = 'PROMOTION',\n AWS = 'AWS'\n}\n\nexport enum DeactivateReason {\n INITIAL_FAILURE = 'INITIAL_FAILURE',\n SCA_FAILURE = 'SCA_FAILURE',\n CHARGE_FAILURE = 'CHARGE_FAILURE',\n CANCEL = 'CANCEL',\n SUSPENDED = 'SUSPENDED',\n ANOTHER_PURCHASE = 'ANOTHER_PURCHASE'\n}\n\nexport type ServicePaymentStatus = {\n accountService: AccountService;\n message: string;\n redirectUrl: string;\n status: PaymentStatus;\n}\n\nexport type AccountService = {\n accountId: number;\n accountName: string;\n activatedById: number;\n activatedByName: string;\n active: boolean;\n braintreeId: string;\n createTime: number;\n deactivateReason: DeactivateReason;\n deactivatedById: number;\n deactivatedByName: string;\n endTime: number;\n finished: boolean;\n id: number;\n lastPaymentTime: number;\n paymentMethod: PaymentMethod;\n price: number;\n serviceCount: number;\n serviceId: number;\n serviceName: string;\n slmLicenseId: string;\n startTime: number;\n subscriptionManagementURL: string;\n unit: ServiceUnit;\n unitCount: number;\n vatRate: number;\n}\n\nexport type AccountServiceData = Pick & {count: number};\n","import {DevicesQueryParams, Platform, SoftwareVersion} from './Device';\nimport {OsType} from './Enum';\nimport {CollectionQueryParams} from './HTTP';\nimport {Cluster} from './Cluster';\n\n\nexport enum InitStep {\n SKIP = 'SKIP',\n REBOOT = 'REBOOT',\n REBOOT_WITH_UNLOCK = 'REBOOT_WITH_UNLOCK',\n UNLOCK_ONLY = 'UNLOCK_ONLY'\n}\n\nexport enum DeviceState {\n OFFLINE_CLEANING = 'OFFLINE_CLEANING',\n OFFLINE_DIRTY = 'OFFLINE_DIRTY',\n OFFLINE_FREE = 'OFFLINE_FREE',\n OFFLINE_TESTING = 'OFFLINE_TESTING',\n ONLINE_CLEANING = 'ONLINE_CLEANING',\n ONLINE_DIRTY = 'ONLINE_DIRTY',\n ONLINE_FREE = 'ONLINE_FREE',\n ONLINE_TESTING = 'ONLINE_TESTING'\n}\n\nexport type AdminDevice = {\n accountId: number | null;\n accountName: string | null;\n cluster: Cluster;\n comment: string;\n dedicationEndTime: number | null;\n deviceModelId: number;\n deviceModelName: string;\n enabled: boolean;\n fingerprint: string;\n forceRestore: boolean;\n id: number;\n initStep: InitStep;\n ipAddress: string;\n lastOnlineTime: number;\n location: string;\n locked: boolean;\n manufacturer: string;\n name: string;\n osType: OsType;\n ownerHasAccountService: boolean;\n platform: Platform;\n serialId: string;\n softwareVersion: SoftwareVersion;\n state: DeviceState;\n stateChangeTime: number;\n stateTime: number;\n testTimeLimit: number;\n unlockGesture: string;\n}\n\nexport type AdminDevicesQueryParams = Pick & CollectionQueryParams;\n\nexport type AdminDeviceData = Pick & {\n apiLevel: number;\n releaseVersion: string;\n};\n","import {CollectionQueryParams} from './HTTP';\nimport {DeviceSessionState} from './DeviceSession';\nimport {OsType} from './Enum';\n\nexport enum FrameworkType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB',\n REMOTE = 'REMOTE'\n}\n\nexport type AdminFrameworkStatistics = {\n cloudName: string;\n count: number;\n day: number;\n deviceModelId: number;\n deviceModelName: string;\n frameworkId: number;\n frameworkName: string;\n id: number;\n osType: OsType;\n releaseVersion: string;\n state: DeviceSessionState;\n type: FrameworkType;\n userEmail: string;\n userId: number;\n}\n\nexport interface AdminStatisticsParams extends CollectionQueryParams {\n days: number;\n}\n","import {PaymentMethod} from './AccountService';\nimport {DeviceSessionType} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {QueryParams} from './HTTP';\n\nexport enum BillingType {\n BUY = 'BUY',\n CHARGE = 'CHARGE',\n CANCEL = 'CANCEL'\n}\n\nexport type BillingPeriod = {\n accountId: number;\n accountName: string;\n accountServiceId: number;\n additionalHours: number;\n additionalHoursPrice: number;\n apiBillingPeriodType: BillingType;\n createTime: number;\n endBillingPeriod: number;\n id: number;\n lastPaymentDate: number;\n paid: boolean;\n paymentMethod: PaymentMethod;\n plan: string;\n servicePrice: number;\n startBillingPeriod: number;\n subscriptionEnd: number;\n subscriptionStart: number;\n totalPrice: number;\n usages: Array;\n}\n\nexport type BillingPeriodUsage = {\n duration: number;\n id: number;\n osType: OsType;\n type: DeviceSessionType;\n}\n\nexport interface BillingPeriodQueryParams extends QueryParams {\n onDate: number;\n}\n","export enum BrokerType {\n MOBILE = 'MOBILE',\n DESKTOP = 'DESKTOP'\n}\n\nexport type Broker = {\n id: number;\n location: string;\n type: BrokerType;\n url: string;\n}\n","\nimport {AdminDevice} from './AdminDevice';\nimport {CollectionResponse, QueryParams} from './HTTP';\n\nexport type Cluster = {\n devices: CollectionResponse;\n enabled: boolean;\n id: number;\n ipAddress: string;\n jenkinsUrl: string;\n jenkinsVersion: string;\n location: string;\n name: string;\n pluginVersion: string;\n region: string;\n state: ClusterState;\n stateChangeTime: number;\n stateTime: number;\n type: ClusterType;\n url: string;\n}\n\nexport enum ClusterState {\n 'OFFLINE',\n ONLINE = 'ONLINE',\n RESTARTING = 'RESTARTING',\n QUIET_DOWN = 'QUIET_DOWN',\n MAINTENANCE = 'MAINTENANCE'\n}\n\nexport enum ClusterType {\n BARE_METAL = 'BARE_METAL',\n EC2 = 'EC2',\n VM = 'VM'\n}\n\nexport interface ClusterParams extends QueryParams {\n withDevices: boolean;\n}\n\nexport type ClusterData = Pick & {\n quietDown: boolean;\n restart: boolean;\n turnMaintenance: boolean;\n}\n","import {Browser} from './Browser';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, CollectionQueryParams, CollectionResponse, QueryParams} from './HTTP';\nimport {TestRunsQueryParams} from './TestRun';\n\n\nexport enum DeviceGroupOrigin {\n STATIC = 'STATIC',\n DYNAMIC = 'DYNAMIC',\n HYBRID = 'HYBRID'\n}\n\nexport enum Platform {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n WINDOWS = 'WINDOWS',\n MAC = 'MAC',\n LINUX = 'LINUX',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport enum SupportedCreators {\n MANUAL = 'MANUAL',\n ROBOT = 'ROBOT',\n AUTOMATIC = 'AUTOMATIC'\n}\n\nexport enum PoolSize {\n XL= 'XL',\n L = 'L',\n M = 'M',\n S = 'S'\n}\n\nexport enum Code {\n HIGH = 'HIGH',\n MODERATE = 'MODERATE',\n LOW = 'LOW',\n NONE = 'NONE',\n}\n\nexport type DeviceAvailability = {\n poolSize: PoolSize,\n code: Code\n}\n\nexport type DeviceProperty = {\n displayName: string;\n id: number;\n labelGroupName: string;\n name: string;\n propertyGroupId: number;\n propertyGroupName: string;\n}\n\nexport type SoftwareVersion = {\n apiLevel: number;\n id: number;\n releaseVersion: string;\n}\n\nexport enum LockReason {\n TESTING = 'TESTING',\n CLEANING = 'CLEANING',\n NOT_OPERATIONAL = 'NOT_OPERATIONAL'\n}\n\nexport type Device = {\n accountId: number;\n accountName: string;\n available: boolean;\n availability: DeviceAvailability;\n browsers: CollectionResponse;\n creditsPrice: number;\n deviceGroupOrigin: DeviceGroupOrigin;\n displayName: string;\n enabled: boolean;\n frame100Url: string;\n frame160Url: string;\n frame400Url: string;\n frame80Url: string;\n frameExtraWidth: number;\n id: number;\n imageCornerRadius: number;\n imageHeight: number;\n imageLeft: number;\n imagePrefix: string;\n imageTop: number;\n imageWidth: number;\n locked: boolean;\n lockReason: LockReason;\n manufacturer: string;\n online: boolean;\n osType: OsType;\n platform: Platform;\n properties: CollectionResponse;\n softwareVersion: SoftwareVersion;\n supportedCreators: Array;\n}\n\nexport type DeviceCleanupConfiguration = {\n content: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n description: string;\n name: string;\n enabled: boolean;\n global: boolean;\n example: true;\n id: number;\n lastModificationTime: number;\n osType: OsType;\n}\n\nexport type DeviceCleanupConfigurationData = {\n deviceCleanupConfigurationId: number;\n}\n\nexport type DeviceLabelData = {\n labelId: number;\n}\n\nexport interface DeviceProperiesData extends QueryParams {\n labelId: number;\n}\n\nexport interface CleanupConfigurationSpecificData extends QueryParams {\n serialId: string;\n}\n\nexport interface DeviceTimeSummaryQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n}\nexport interface DeviceUsageQueryParams extends TestRunsQueryParams {\n startTime: number;\n}\n\nexport interface DeviceStatisticQueryParam extends TestRunsQueryParams {\n mode: string;\n}\n\nexport interface DevicesQueryParams extends CollectionQueryParams {\n labelIds: Array;\n liveTestingOnly: boolean;\n withBrowsers: boolean;\n withDedicated: boolean;\n withDisabled: boolean;\n withProperties: boolean;\n withSupportedCreators: boolean;\n}\n","export enum CriterionField {\n NAME = 'NAME',\n FINGERPRINT = 'FINGERPRINT',\n SERIAL_ID = 'SERIAL_ID',\n UNLOCK_GESTURE = 'UNLOCK_GESTURE',\n SOFTWARE_VERSION = 'SOFTWARE_VERSION',\n INIT_STEP = 'INIT_STEP',\n ACCOUNT = 'ACCOUNT',\n BROWSERS = 'BROWSERS'\n}\n\nexport type DeviceModelCriterion = {\n createTime: number;\n field: CriterionField;\n id: number;\n labelGroupDisplayName: string;\n labelGroupId: number;\n labelGroupName: string;\n}\n\nexport type DeviceModelCriterionData = Pick;\n","export enum RetentionStrategy {\n CLUSTER_ON_OFF = 'CLUSTER_ON_OFF',\n MIN_FREE_MAX_TOTAL = 'MIN_FREE_MAX_TOTAL',\n POOL_MANAGER_AWARE = 'POOL_MANAGER_AWARE'\n}\n\nexport type DeviceModelPool = {\n createTime: number;\n enabled: boolean;\n id: number;\n location: string;\n maxTotal: number;\n minAvailable: number;\n name: string;\n numberOfBrowsers: number;\n osVersion: string;\n retentionStrategy: RetentionStrategy;\n running: number;\n}\n\nexport type DeviceModelPoolData = Pick;\n","export enum ProblemType {\n CLEANING = 'CLEANING',\n DIRTY = 'DIRTY',\n OFFLINE = 'OFFLINE',\n LOW_BATTERY = 'LOW_BATTERY',\n HIGH_FAIL_RATE = 'HIGH_FAIL_RATE',\n NO_INTERNET_CONNECTION = 'NO_INTERNET_CONNECTION'\n}\n\nexport type DeviceProblem = {\n clusterId: number;\n clusterName: string;\n deviceId: number;\n deviceModelId: number;\n deviceModelName: string;\n deviceName: string;\n id: number;\n problems: Array;\n location: string;\n}\n\nexport type DeviceProblemPair = {\n id: number;\n type: ProblemType;\n value: any;\n}\n","import {Device} from './Device';\nimport {CollectionBasicQueryParams} from './HTTP';\n\nexport type TunnelSettings = {\n domain: string;\n email: string;\n}\n\nexport enum DeviceSessionType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB'\n}\n\nexport enum RetryState {\n NONE = 'NONE',\n MANUAL = 'MANUAL',\n AUTO = 'AUTO'\n}\n\nexport enum DeviceSessionState {\n ABORTED = 'ABORTED',\n EXCLUDED = 'EXCLUDED',\n FAILED = 'FAILED',\n RUNNING = 'RUNNING',\n SUCCEEDED = 'SUCCEEDED',\n TIMEOUT = 'TIMEOUT',\n WAITING = 'WAITING',\n WARNING = 'WARNING'\n}\n\nexport enum DeviceSessionStepType {\n WAITING = 'WAITING',\n PREPARING = 'PREPARING',\n UNINSTALL = 'UNINSTALL',\n INSTALL = 'INSTALL',\n RUNNING = 'RUNNING',\n SENDING_RESULTS = 'SENDING_RESULTS',\n PROCESSING_RESULTS = 'PROCESSING_RESULTS'\n}\n\nexport type DeviceSessionConfig = {\n adbVersion: string;\n browserName: string;\n browserVersion: string;\n deviceModelId: number;\n id: number;\n screenResolution: string;\n tunnelSettings: TunnelSettings;\n type: DeviceSessionConfig;\n url: string;\n}\n\nexport type DeviceSession = {\n accountId: number;\n autoRetriesLeftCount: number;\n biometricInstrumentation: boolean;\n config: DeviceSessionConfig;\n createTime: number;\n clientSideId: string;\n device: Device;\n deviceInstanceId: number;\n deviceRunId: number;\n duration: number;\n endTime: number;\n excludeReason: string;\n externalId: string;\n id: number;\n installTime: number;\n name: string;\n projectId: number;\n projectName: string;\n retryable: boolean;\n retryState: RetryState;\n startTime: number;\n state: DeviceSessionState;\n successRatio: number;\n testCaseAllCount: number;\n testCaseFailedCount: number;\n testCasePassedCount: number;\n testCaseSkippedCount: number;\n testCaseSuccessCount: number;\n testRunId: number;\n testRunName: string;\n timeLimit: number;\n type: DeviceSessionType;\n uiLink: string;\n userEmail: string;\n userId: number;\n}\n\nexport type DeviceSessionCommand = {\n duration: number;\n httpMethod: string;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n\nexport type DeviceSessionStep = {\n deviceSessionId: number;\n excludeReason: string;\n failReason: string;\n finishTimeMS: number;\n id: number;\n startTimeMS: number;\n type: DeviceSessionStepType;\n}\n\nexport type DeviceSessionConnection = {\n createTime: number;\n deviceSessionId: number;\n endTime: number;\n externalId: string;\n host: string;\n id: number;\n password: string;\n path: string;\n port: number;\n type: string;\n urlSchema: string;\n}\n\nexport type DeviceSessionData = Omit & {configuration: DeviceSessionConfig};\n\nexport interface DeviceSessionQueryParams extends CollectionBasicQueryParams {\n withProperties: boolean;\n}\n\nexport interface SessionQueryParams extends CollectionBasicQueryParams {\n projectId: number;\n testRunId: number;\n}\n\nexport interface SessionRunStepQueryParams extends CollectionBasicQueryParams {\n runId: number;\n}\n\nexport interface SessionStepQueryParams extends SessionRunStepQueryParams {\n projectId: number;\n}\n\nexport enum SessionReleaseReason {\n INACTIVITY = 'INACTIVITY',\n TIMEOUT = 'TIMEOUT',\n USER_ACTION = 'USER_ACTION',\n CHANGE_DEVICE = 'CHANGE_DEVICE',\n WEBSOCKET_CLOSED = 'WEBSOCKET_CLOSED'\n}\n\nexport type DeviceSessionRelease = {\n reason: SessionReleaseReason;\n}\n","export enum OsType {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n DESKTOP = 'DESKTOP',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport type Enum = {\n id: number;\n value: string;\n}\n","export enum LicenseStatus {\n ACTIVE = 'ACTIVE',\n EXPIRED = 'EXPIRED',\n INACTIVE = 'INACTIVE',\n CLOSED = 'CLOSED'\n}\n\nexport type BaseLicense = {\n enabled: boolean;\n};\n\nexport type FeatureLicense = {\n deviceLimit: number;\n deviceLimited: boolean;\n projectLimit: number;\n projectLimited: boolean;\n};\n\nexport type AndroidLicense = BaseLicense & FeatureLicense & {\n cts: CTSLicense;\n uiAutomator: UIAutomatorLicense;\n};\n\nexport type BuildLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type DesktopLicense = BaseLicense & FeatureLicense;\n\nexport type GlobalLicense = FeatureLicense;\n\nexport type InspectorLicense = BaseLicense;\n\nexport type IOSLicense = BaseLicense & FeatureLicense;\n\nexport type RecorderLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type ServerLicense = BaseLicense & {\n androidEnabled: boolean;\n iosEnabled: boolean;\n};\n\nexport type CTSLicense = BaseLicense;\n\nexport type UIAutomatorLicense = BaseLicense;\n\nexport type License = {\n activateTime: number;\n android: AndroidLicense;\n build: BuildLicense;\n closeTime: number;\n desktop: DesktopLicense;\n expireTime: number;\n global: GlobalLicense;\n id: number;\n inspector: InspectorLicense;\n ios: IOSLicense;\n privateInstance: boolean;\n recorder: RecorderLicense;\n server: ServerLicense;\n status: LicenseStatus;\n userEmail: string;\n userId: number;\n}\n\nexport type LicenseData = Pick & {\n androidDeviceLimit: number;\n androidEnabled: boolean;\n androidProjectLimit: number;\n buildEnabled: boolean;\n buildLimit: number;\n desktopDeviceLimit: number;\n desktopEnabled: boolean;\n desktopProjectLimit: number;\n globalDeviceLimit: number;\n globalProjectLimit: number;\n inspectorEnabled: boolean;\n iosDeviceLimit: number;\n iosEnabled: boolean;\n iosProjectLimit: number;\n privateInstance: boolean;\n unit: string;\n unitCount: number;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum NotificationChannel {\n SLACK = 'SLACK',\n EMAIL = 'EMAIL',\n WEBHOOK = 'WEBHOOK'\n}\n\nexport enum NotificationScope {\n ALL = 'ALL',\n TEST_RUN = 'TEST_RUN',\n TEST_RUN_FAILURE = 'TEST_RUN_FAILURE',\n TEST_RUN_SUCCEEDED = 'TEST_RUN_SUCCEEDED',\n SYSTEM = 'SYSTEM',\n CHECK = 'CHECK',\n}\n\nexport type Notification = {\n channel: NotificationChannel;\n destination: string;\n id: number;\n projectId?: number;\n projectName?: string;\n scope: NotificationScope;\n userEmail: string;\n userId: number;\n}\n\nexport interface NotificationData extends QueryParams {\n scope: NotificationScope;\n}\n\nexport type NotificationsData = Pick;\n","import {OsType} from './Enum';\nimport {TestRunConfig, TestRunsQueryParams} from './TestRun';\n\nexport enum ArchivingStrategy {\n NEVER = 'NEVER',\n DAYS = 'DAYS',\n RUNS = 'RUNS'\n}\n\nexport type Project = {\n archiveTime: number;\n archivingItemCount: number;\n archivingStrategy: ArchivingStrategy;\n common: boolean;\n createTime: number;\n description: string;\n id: number;\n name: string;\n osType: OsType;\n readOnly: boolean;\n rowIndex: number;\n shared: boolean;\n sharedWithCaller: boolean;\n successRatio: number;\n testRunConfig: TestRunConfig;\n userEmail: string;\n userId: number;\n}\n\nexport type UserProjectData = Pick;\n\nexport interface UserProjectQueryParams extends TestRunsQueryParams {\n showStatistics: boolean;\n}\n","import {CollectionBasicQueryParams} from './HTTP';\n\nexport enum ScreenshotType {\n LANDSCAPE = 'LANDSCAPE',\n PORTRAIT = 'PORTRAIT'\n}\n\nexport type Screenshot = {\n fail: boolean;\n id: number;\n originalName: string;\n takeTimestamp: number;\n type: ScreenshotType;\n}\n\nexport interface ScreenshotQueryParams extends CollectionBasicQueryParams {\n name: string;\n}\n","import {PaymentMethod} from './AccountService';\nimport {CollectionQueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport type Service = {\n activateTime: number;\n activated: boolean;\n archiveTime: number;\n centPrice: number;\n commonId: string;\n customPlan: boolean;\n defaultConcurrences: Array;\n description: string;\n externalId: string;\n features: string;\n id: number;\n name: string;\n priceString: string;\n roles: Array;\n unit: ServiceUnit;\n}\n\nexport enum ServiceUnit {\n DAY = 'DAY',\n HOUR = 'HOUR',\n MONTH = 'MONTH',\n PROJECT = 'PROJECT',\n RUN = 'RUN',\n YEAR = 'YEAR'\n}\n\nexport interface AdminServicesParams extends CollectionQueryParams {\n activeOnly: boolean;\n inUse: boolean;\n notArchive: boolean;\n}\n\nexport type ServiceActivateData = {\n activateTime: number;\n}\n\nexport interface ServiceData {\n address?: string;\n cardNumber?: string;\n city?: string;\n count?: number;\n country?: string;\n cvv?: string;\n email?: string;\n expirationDate?: string;\n firstName?: string;\n lastName?: string;\n organization?: string;\n paymentMethod: PaymentMethod;\n phone?: string;\n serviceId: number;\n state?: string;\n stripeToken?: string;\n vatId?: string;\n zip?: string;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum SharedResourceType {\n DEVICE_GROUP = 'DEVICE_GROUP',\n FILE = 'FILE',\n PROJECT = 'PROJECT',\n}\n\nexport type SharedResource = {\n id: number;\n name: string;\n resourceId: number;\n type: SharedResourceType;\n}\n\nexport interface ShareWithGroup extends QueryParams {\n accessGroupId: number;\n}\n\nexport interface ShareWithEmail extends QueryParams {\n email: string;\n}\n\nexport type ShareData = ShareWithGroup | ShareWithEmail;\n","import {Method} from 'axios';\nimport {CollectionResponse} from './HTTP';\n\n\nexport enum TestResult {\n PASSED = 'PASSED',\n FAILED = 'FAILED',\n SKIPPED = 'SKIPPED',\n NOT_AVAILABLE = 'NOT_AVAILABLE'\n}\n\nexport type TestCaseRun = {\n className: string;\n createTime: number;\n duration: number;\n errorMessage: string;\n id: number;\n methodName: string;\n result: TestResult;\n stacktrace: string;\n steps: CollectionResponse;\n suiteName: string;\n}\n\nexport type TestCaseRunStep = {\n description: string;\n duration: number;\n httpMethod: Uppercase;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n","import {Device} from './Device';\nimport {TunnelSettings} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, QueryParams} from './HTTP';\nimport {UserFile} from './UserFile';\nimport {DeviceGroup} from './DeviceGroup';\nimport {Framework} from './Framework';\n\n\nexport enum LimitationType {\n PACKAGE = 'PACKAGE',\n CLASS = 'CLASS'\n}\n\nexport enum TestScheduler {\n PARALLEL = 'PARALLEL',\n SERIAL = 'SERIAL',\n SINGLE = 'SINGLE',\n ALL_INSTANCES = 'ALL_INSTANCES'\n}\n\nexport enum TestState {\n WAITING = 'WAITING',\n RUNNING = 'RUNNING',\n FINISHED = 'FINISHED'\n}\n\n\nexport type TestRun = {\n abortedDeviceCount: number;\n config: TestRunConfig;\n createTime: number;\n deviceCount: number;\n displayName: string;\n errorsDeviceCount: number;\n excludedDeviceCount: number;\n executedTestCaseCount: number;\n executionRatio: number;\n failedTestCaseCount: number;\n finishedDeviceCount: number;\n frameworkId: number;\n frameworkName: string;\n id: number;\n logsFileId: number;\n message: string;\n 'number': number;\n projectId: number;\n projectName: string;\n retryable: boolean;\n rowIndex: number;\n runningDeviceCount: number;\n screenshotsFileId: number;\n startTime: number;\n startedByDisplayName: string;\n startedById: number;\n state: TestState;\n succeededDeviceCount: number;\n successRatio: number;\n successfulTestCaseCount: number;\n testCaseCount: number;\n timeoutedDeviceCount: number;\n uiLink: string;\n userId: number;\n waitingDeviceCount: number;\n warningDeviceCount: number;\n}\n\nexport enum TestRunConfigFileAction {\n COPY_TO_DEVICE = 'COPY_TO_DEVICE',\n INSTALL = 'INSTALL',\n RUN_TEST = 'RUN_TEST',\n}\n\nexport type TestRunConfigFile = {\n action: TestRunConfigFileAction;\n availableActions: Array;\n file: UserFile;\n id: number;\n};\n\nexport type TestRunParameter = {\n name?: string;\n key: string;\n value: string;\n label?: string;\n}\n\nexport type TRCDefaultSettings = {\n deviceLanguageCode: string;\n disableResigning: boolean;\n hookURL: string;\n instrumentationRunner: string;\n limitationType: string;\n limitationValue: string;\n scheduler: string;\n screenshotDir: string;\n withAnnotation: string;\n withoutAnnotation: string;\n timeout: string;\n projectName: string;\n testRunName: string;\n testRunParameters?: TestRunParameter[];\n biometricInstrumentation: boolean;\n}\n\nexport type TestRunConfig = TRCDefaultSettings & {\n appCrawlerRun: boolean;\n appiumBrokerAddress: string;\n appiumBrokerQueueName: string;\n applicationPassword: string;\n applicationUsername: string;\n availableDeviceGroups: DeviceGroup[];\n availableDevices: Array;\n availableFrameworks: Framework[];\n availableOsTypes: Array;\n clientSideTestConfig: any;\n computedDevices: Array;\n creditsPrice: number;\n deviceGroupId?: number;\n deviceIds: any;\n deviceNamePattern: string;\n files: Array | null;\n frameworkId: number;\n id: number;\n loadedPrevious: boolean;\n maxAutoRetriesCount: number;\n maxTestTimeout: any;\n maxWaitTime: number;\n osType: OsType;\n projectId: number;\n resignFiles: boolean;\n runAvailable: boolean;\n status: string;\n statusCode: number;\n testRunId: number;\n testRunNameGrouping: string;\n tunnelSettings: TunnelSettings;\n useSamples: boolean;\n usedDeviceGroupId: number;\n usedDeviceGroupName: string;\n videoRecordingEnabled: boolean;\n withAnnotation: string;\n}\n\nexport interface TestRunData extends QueryParams {\n displayName: string;\n}\n\nexport interface RunData extends TestRunData {\n projectId: number;\n}\n\nexport interface RunQueryParam extends QueryParams {\n projectId: number;\n}\n\n\nexport type TestRunsIncludes = {\n includeDeviceGroups: boolean;\n includeDevices: boolean;\n includeFrameworks: boolean;\n}\n\nexport type RunsConfigParams = TestRunsIncludes & QueryParams;\n\n// for users/{userid}/runs\nexport interface TestRunsQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n skipCommonProject: boolean;\n skipShared: boolean;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport enum UserStatus {\n INACTIVE = 'INACTIVE',\n DISABLED = 'DISABLED',\n ENABLED = 'ENABLED'\n}\n\nexport type User = {\n accountId: number;\n accountName: string;\n userAccountName: string;\n accountServiceIds: Array;\n address: string;\n apiKey: string;\n city: string;\n code: string;\n country: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n deleteTime: number;\n email: string;\n enabled: boolean;\n firstName: string;\n id: number;\n isAccountOwner: boolean;\n lastLaunchedTestTime: number;\n lastLoginTime: number;\n lastName: string;\n organization: string;\n phone: string;\n registrationIP: string;\n roles: Array;\n serviceIds: Array;\n state: string;\n status: UserStatus;\n timeZone: string;\n}\n\nexport type UserData = Pick;\n\nexport interface UserParams extends CollectionQueryParams {\n WITH_ADDRESS: boolean;\n WITH_USER_INFO: boolean;\n onlyMainUsers: boolean;\n onlyWithDisabledServices: boolean;\n withRole: string;\n withRoles: boolean;\n}\n\nexport type UserUpdateAccount = Pick;\n\nexport type UserDeleteData = {\n password: string;\n}\n\nexport interface LoginData {\n username: string;\n password: string;\n}\n\n\nexport type UserPasswordData = {\n key: string;\n password: string;\n};\nexport type UserActivateData = {\n zip: string;\n} & UserPasswordData\n & Pick;\n\nexport interface UserRecoveryQueryParams extends QueryParams {\n recoveryKey: string;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\n\n\nexport enum FileDirection {\n INPUT = 'INPUT',\n OUTPUT = 'OUTPUT'\n}\n\nexport enum FileInputType {\n APPLICATION = 'APPLICATION',\n TEST = 'TEST',\n DATA = 'DATA'\n}\n\nexport enum FileState {\n PREPARING = 'PREPARING',\n READY = 'READY'\n}\n\nexport type FileProperty = {\n id: number;\n key: string;\n value: string;\n};\n\nexport type UserFileTag = {\n id: number;\n name: string;\n}\n\nexport type UserFile = {\n createTime: number;\n directUrl: string;\n direction: FileDirection;\n duplicate: boolean;\n fileProperties: Array;\n iconDirectUrl: string;\n id: number;\n inputType: FileInputType;\n mimetype: string;\n name: string;\n shared: boolean;\n size: number;\n state: FileState;\n userEmail: string;\n userId: number;\n};\n\nexport interface UserFileParams extends CollectionQueryParams {\n tag: Array;\n}\n\nexport type UserFileData = {\n file: FormData;\n global: boolean;\n}\n\nexport type BuildLogsData = {\n deviceRunIds: Array;\n projectId: number;\n userId: number;\n}\n\nexport type BuildLogsParams = BuildLogsData;\n\nexport interface FileSizeData extends QueryParams {\n height: number;\n width: number;\n}\n\nexport type UploadObj = {\n dir: string;\n filename: string;\n}\n\nexport interface FileData {\n file: Blob;\n global: boolean;\n}\n","export enum VisualTestImageType {\n FULL_PAGE = 'FULL_PAGE',\n VIEWPORT = 'VIEWPORT',\n ELEMENT_SCREENSHOT = 'ELEMENT_SCREENSHOT'\n}\n\nexport type VisualTestAccess = {\n enabled: boolean;\n apiKey: string | null;\n}\n\nexport type VisualTest = {\n comparisonStatus:\tstring;\n appUrl:\tstring;\n createdAt:\tstring;\n id: number;\n imageName:\tstring;\n imageThumbnailUrl:\tstring;\n imageType:\tVisualTestImageType;\n imageUrl:\tstring;\n sessionId:\tstring;\n testUrl:\tstring;\n}\n"],"names":["APIOrder","AbortController","stringify","InputFileset","OutputFileset","AccessGroupScope","SessionUsageType","UtilizationType","SessionType","TimeResolution","PaymentStatus","PaymentMethod","DeactivateReason","InitStep","DeviceState","FrameworkType","BillingType","BrokerType","ClusterState","ClusterType","DeviceGroupOrigin","Platform","SupportedCreators","PoolSize","Code","LockReason","CriterionField","RetentionStrategy","ProblemType","DeviceSessionType","RetryState","DeviceSessionState","DeviceSessionStepType","SessionReleaseReason","OsType","LicenseStatus","NotificationChannel","NotificationScope","ArchivingStrategy","ScreenshotType","ServiceUnit","SharedResourceType","TestResult","LimitationType","TestScheduler","TestState","TestRunConfigFileAction","UserStatus","FileDirection","FileInputType","FileState","VisualTestImageType"],"mappings":"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"} \ No newline at end of file diff --git a/dist/bitbar-cloud-api-client.min.js b/dist/bitbar-cloud-api-client.min.js new file mode 100644 index 0000000..851da03 --- /dev/null +++ b/dist/bitbar-cloud-api-client.min.js @@ -0,0 +1,18 @@ +/* @bitbar/cloud-api-client v1.6.0 | Copyright 2025 (c) SmartBear Software and contributors | .git/blob/master/LICENSE */ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("@bitbar/finka"),require("qs"),require("node-abort-controller")):"function"==typeof define&&define.amd?define(["exports","@bitbar/finka","qs","node-abort-controller"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self)["bitbar-cloud-api-client"]={},e["@bitbar/finka"],e.qs,e["node-abort-controller"])}(this,(function(e,s,t,r){"use strict"; +/****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ +function n(e,s,t,r){var n,i=arguments.length,u=i<3?s:null===r?r=Object.getOwnPropertyDescriptor(s,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,s,t,r);else for(var o=e.length-1;o>=0;o--)(n=e[o])&&(u=(i<3?n(u):i>3?n(s,t,u):n(s,t))||u);return i>3&&u&&Object.defineProperty(s,t,u),u}"function"==typeof SuppressedError&&SuppressedError;class i{constructor(e,s,t){this.name=e,this.value=s,this.operand=t}}s();class u{constructor(){this.filters=[]}gt(e,s){return this.add(e,s,"gt")}lt(e,s){return this.add(e,s,"lt")}after(e,s){return this.add(e,s,"after",!0)}afterorequal(e,s){return this.add(e,s,"afterorequal",!0)}before(e,s){return this.add(e,s,"before",!0)}beforeorequal(e,s){return this.add(e,s,"beforeorequal",!0)}on(e,s){return this.add(e,s,"on")}eq(e,s){return this.add(e,s,"eq")}contains(e,s){return this.add(e,s,"contains")}like(e,s){return this.add(e,s,"like")}notlike(e,s){return this.add(e,s,"notlike")}isnull(e){return this.add(e,void 0,"isnull")}isnotnull(e){return this.add(e,void 0,"isnotnull")}in(e,s){return this.add(e,s,"in",!0)}notin(e,s){return this.add(e,s,"notin",!0)}raw(e){const s=Array.wrap(e);for(const e of s){if(!this.isFilterPart(e))throw new SyntaxError(`Filter ${e} has invalid syntax`);this.filters.push(e)}}isFilterPart(e){return/^[a-zA-Z0-9.]{2,12}_(?:isnull$|(?:gt|lt|(?:after|before)(?:orequal)?|on|eq|contains|like|(?:not)?in)_)/.test(e)}toString(){const e=[];let s,t;for(const r of this.filters)"string"==typeof r?s=r:(t="",(r.value.length>1||void 0!==r.value[0])&&(t=`_${r.value.join("|")}`),s=`${r.name}_${r.operand}${t}`),e.push(s);return e.join(";")}add(e,s,t,r=!1){let n=Array.wrap(s);if(0===n.length)return this;for(let e=0;enull!==e)),t+="ornull")}return t.endsWith("ornull")&&0===n.length&&(t="isnull"),this.filters.push(new i(e,n,t)),this}}const o=["GET","POST","DELETE"];var a;e.APIOrder=void 0,(a=e.APIOrder||(e.APIOrder={})).asc="a",a.desc="d";class h{constructor(e){this.stack=[],this.requestConfig={},this.ALLOWED_HTTP_METHODS=o,e instanceof h?(this.root=e.root,Array.isArray(e.stack)&&this.push(...e.stack),null!=e.requestConfig&&this.setRequestConfig(e.requestConfig)):this.root=e,this.abortController=new r.AbortController}abortRequest(){this.abortController.abort(),this.abortController=new r.AbortController}push(...e){return this.stack=this.stack.concat(e),this}shift(){return this.stack.shift(),this}restack(...e){return this.stack=e,this}get first(){return this.stack[0]}get last(){return this.stack[this.stack.length-1]}set last(e){this.stack[this.stack.length-1]=e}toUrl(e=!1){let s=`/${this.stack.join("/")}`;return e&&(s=this.root.baseUrl+s),s}setRequestConfig(e){return Object.deepAssign(this.requestConfig,e),this}removeRequestConfig(e){return delete this.requestConfig[e],this}headers(e){const s={};for(const t in e){s[t.replace(/(?:^|-)([a-z])/g,(e=>e.toUpperCase()))]=e[t]}return this.setRequestConfig({headers:s})}method(e){const s=e.toLocaleUpperCase();if(!(this.ALLOWED_HTTP_METHODS.indexOf(s)>-1))throw new Error(`Method '${s}' is not allowed! You can use: ${this.ALLOWED_HTTP_METHODS.join(", ")}`);return this.setRequestConfig({method:s})}get(){return this.method("GET")}post(){return this.method("POST")}delete(){return this.method("DELETE")}params(e){return this.setRequestConfig({params:e}),this}getParams(){return null==this.requestConfig.params?{}:this.requestConfig.params}removeParam(e){return delete this.requestConfig.params[e],this}data(e){return this.setRequestConfig({data:e}),this}jsonData(e){return this.headers({"Content-Type":"application/json"}).data(e),this}formData(e){return this.data(e),this}send(){var e;const s=Object.deepAssign({},this.requestConfig,{url:`/${this.stack.join("/")}`,signal:this.abortController.signal});return null==s.headers&&(s.headers={}),"POST"===s.method&&s.data instanceof FormData||null!=s.headers["Content-Type"]||(s.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"),"POST"===s.method&&(null===(e=s.headers["Content-Type"])||void 0===e?void 0:e.startsWith("application/x-www-form-urlencoded"))&&null!=s.data&&(s.data=this.paramsSerializer(s.data)),s.params&&(s.paramsSerializer={indexes:!1}),this.root.axios.request(s)}paramsSerializer(e){return t.stringify(e,{arrayFormat:"brackets"})}}class c extends h{constructor(){super(...arguments),this.all=this.noLimit,this.cut=this.between}create(e){return this.post().data(e).send()}sort(s,t=e.APIOrder.asc){return this.params({sort:`${s}_${t}`})}limit(e=20){if(!Number.isNatural(e))throw new Error(`Limit '${e}' is invalid!`);return this.params({limit:e})}getLimit(){const e=this.getParams();return null==e.limit?20:e.limit}noLimit(){return this.limit(0)}offset(e=0){if(!Number.isNatural(e))throw new Error(`Offset '${e}' is invalid!`);return this.params({offset:e})}between(e,s){if(!Number.isNatural(e))throw new Error(`From '${e}' is invalid!`);if(!Number.isNatural(s))throw new Error(`To '${s}' is invalid!`);return this.params({offset:e,limit:s-e+1})}only(e){if(!Number.isNatural(e))throw new Error(`Index '${e}' is invalid!`);return this.params({offset:e,limit:1})}page(e=1){if(!Number.isNatural(e)||0==e)throw new Error(`Page '${e}' is invalid!`);const s=this.getLimit(),t=(e-1)*s;return this.params({offset:t,limit:s})}search(e){if("string"!=typeof e)throw new Error("Search query must be a string!");return this.params({search:e})}filter(e){if("string"!=typeof e&&!(e instanceof u))throw new Error("Filter must be either string or instance of FilterBuilder");return this.params({filter:e.toString()})}}class l extends h{}class p extends c{constructor(e){super(e),this.push("cleanup-configurations")}specific(){return new l(this).push("specific")}}class d extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("cleanup-configurations",s)}devices(){return new c(this).push("devices")}}class E extends c{constructor(e){super(e),this.push("admin","devices")}cleanupConfigurations(){return new p(this)}cleanupConfiguration(e){return new d(this,e)}}class w extends c{constructor(e){super(e),this.ALLOWED_HTTP_METHODS=["GET"],this.push("admin","runs")}config(){const e=new l(this);return e.restack("runs","config"),e}}class T extends c{constructor(e){super(e),this.push("admin","services")}active(){const e=new c(this);return e.params({notArchived:!0}),e}activated(){const e=this.active();return e.params({filter:"activated_eq_true",limit:0,sort:"name_a"}),e}inUse(){const e=new c(this);return e.params({inUse:!0,limit:0,sort:"name_a"}),e}byPrice(){const e=new c(this);return e.params({sort:"centPrice_a"}),e}}function I(e){return class extends e{send(){return Promise.reject()}}}let A=class extends c{constructor(e){super(e),this.push("admin","statistics")}frameworks(){return new c(this).push("frameworks")}};A=n([I],A);class f extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","accounts",s)}roles(){return new c(this).push("roles")}role(e){return new l(this).push("roles",e)}accountServices(){return new c(this).push("account-services")}preferences(){return new l(this).push("preferences")}usage(){return new c(this).push("usage")}usageSummary(){return new l(this).push("usage-summary")}}class N extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","account-services",s)}activate(){return new l(this).push("activate").post()}deactivate(){return new l(this).push("deactivate").post()}}class S extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("clusters",s)}devices(){return new c(this).push("devices")}}class m extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","devices",s)}cleanupConfiguration(){return new l(this).push("cleanup-configuration")}labels(){return new c(this).push("labels")}label(e){return new l(this).push("labels",e)}queue(){return new c(this).push("queue")}}class R extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","device-models",s)}browsers(){return new c(this).push("browsers")}}e.InputFileset=class extends l{constructor(e){super(e),this.push("input-file-set")}files(){return new c(this).push("files")}filesZip(){return new l(this).push("files.zip")}},e.InputFileset=n([I],e.InputFileset);const v=new u;v.eq("state","READY"),v.in("mimetype",["image/png","image/jpg","image/jpeg","image/webp","image/gif"]),v.notlike("name","action-%%");const L=new u;L.eq("state","READY"),L.notin("mimetype",["image/png","image/jpg","image/jpeg","image/webp","image/gif","video/mp4","video/avi","video/webm","video/ogg","video/mpeg"]);class O extends c{constructor(e){super(e),this.push("files")}performance(){return this.params({tag:["performance"]})}images(){return this.filter(v)}nonMediaFiles(){return this.filter(L)}videos(){return this.params({filter:"s_state_eq_READY",tag:["video"]})}}e.OutputFileset=class extends l{constructor(e){super(e),this.push("output-file-set")}files(){return new O(this)}file(e){return new l(this).push("files",e)}filesZip(){return new l(this).push("files.zip")}screenshots(){return new c(this).push("screenshots")}screenshot(e){return new l(this).push("screenshots",e)}screenshotFile(e){return this.screenshot(e).push("file")}},e.OutputFileset=n([I],e.OutputFileset);class C extends c{constructor(e){super(e),this.push("screenshots")}}class D extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("device-sessions",s)}commands(){return new c(this).push("commands")}input(){return new e.InputFileset(this)}output(){return new e.OutputFileset(this)}release(){return new l(this).push("release").post()}screenshots(){return new C(this)}screenshot(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("screenshots",e)}steps(){return new c(this).push("steps")}step(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("steps",e)}currentStep(){return this.step("current")}connections(){return new c(this).push("connections")}logs(){return new l(this).push("logs").setRequestConfig({responseType:"text"})}clusterLogs(){return new l(this).push("cluster-logs").setRequestConfig({responseType:"text"})}}class g extends D{changeBillable(e){return function(e,s){const t=new l(e),r=t.last;return t.restack("admin","device-sessions",r,"changebillable").params({billable:s}).post()}(this,e)}}class b extends c{constructor(e){super(e),this.push("admin","device-time")}}class U extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","frameworks",s)}config(){return new l(this).push("config")}requiredRoles(){return new c(this).push("required-roles")}}class _ extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","licenses",s)}activate(){return new l(this).push("activate")}deactivate(){return new l(this).push("deactivate")}resend(){return new l(this).push("resend")}download(){return new l(this).push("download")}}function y(e,s,t){const r=new l(e).push(s);return null!=t&&r.params({deviceRunIds:t}),r.post()}class P extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","runs",s)}abort(){return new l(this).push("abort").post()}changeBillable(e){return new l(this).push("changebillable").post().params({billable:e})}changePriority(e){const s=new l(this).push("changepriority");return e&&s.post().data({priority:e}),s}retry(e){return y(this,"retry",e).setRequestConfig({timeout:0})}}class F extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","services",s)}activate(){return new l(this).push("activate").post()}}let M=class extends l{constructor(e){super(e),this.push("account")}roles(){return new c(this).push("roles")}role(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("roles",e)}services(){const e=new c(this);return e.last+="-services",e}update(){const e=new l(this);return e.last="update-account",e.post()}};M=n([I],M);class G extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("device-sessions",s)}connections(){return new c(this).push("connections")}connection(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("connections",e)}input(){return new e.InputFileset(this)}output(){return new e.OutputFileset(this)}release(){return new l(this).push("release").post()}visualTestsImages(){return new c(this).push("visual-tests","images")}}let x=class extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("admin","users",s)}disable(){return new l(this).push("disable")}enable(){return new l(this).push("enable")}licenses(){return new c(this).push("licenses")}resendActivation(){return new l(this).push("resend-activation").post()}account(){return new M(this)}deviceSession(e){return new G(this,e)}roles(){return new c(this).push("roles")}role(e){return new l(this).push("roles",e)}};x=n([I],x);class k extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("access-groups",s)}users(){return new c(this).push("users")}user(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("users",e)}resources(){return new c(this).push("resources")}resource(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("resources",e)}}class B extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("device-groups",s)}devices(){return new c(this).push("devices")}device(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("devices",e)}selectors(){return new c(this).push("selectors")}selector(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("selectors",e)}share(){return new c(this).push("share")}}class q extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("files",s)}file(){return new l(this).push("file")}icon(){return new l(this).push("icon")}tags(){return new c(this).push("tags")}share(){return new c(this).push("share")}property(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("properties",e)}}class H extends c{constructor(e){super(e),this.push("test-case-runs")}}class W extends D{abort(){return new l(this).push("abort").post()}retry(){return new l(this).push("retry").post()}testCaseRuns(){return new H(this)}}class Y extends c{constructor(e){super(e),this.push("device-sessions")}}class K extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("runs",s)}abort(){return new l(this).push("abort").post()}buildLogsZip(e){return y(this,"build-logs.zip",e)}dataAvailability(){return new l(this).push("data-availability")}deviceSessions(){return new Y(this)}filesZip(e){return y(this,"files.zip",e)}logsZip(e){return y(this,"logs.zip",e)}performanceZip(e){return y(this,"performance.zip",e)}retry(e){return y(this,"retry",e).setRequestConfig({timeout:0})}screenshotsZip(e){return y(this,"screenshots.zip",e)}steps(){return new c(this).push("steps")}}class j extends K{deviceSession(e){return new W(this,e)}}class V extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("projects",s)}runs(){return new c(this).push("runs")}run(e){return new j(this,e)}share(){return new c(this).push("share")}unarchive(){return new l(this).push("unarchive")}}let z=class extends l{constructor(e){super(e)}accessGroups(){return new c(this).push("access-groups")}accessGroup(e){return new k(this,e)}accounts(){return new c(this).push("admin","accounts")}account(e){if(null==e)throw new Error("Resource ID cannot be null!");return new f(this,e)}accountServices(){return new c(this).push("admin","account-services")}accountService(e){return new N(this,e)}activities(){return new c(this).push("admin","activities")}administrators(){return new c(this).push("admin","administrators")}billingPeriods(){return new c(this).push("admin","billing-periods")}billingPeriod(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("admin","billing-periods",e)}browsers(){return new c(this).push("admin","browsers")}browser(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("admin","browsers",e)}clusters(){return new c(this).push("clusters")}cluster(e){return new S(this,e)}devices(){return new E(this)}device(e){return new m(this,e)}devicesForModel(e){if(null==e)throw new Error("Resource ID cannot be null!");const s=this.devices();return s.params({filter:"deviceModelId_eq_"+e}),s}deviceStatuses(){return new c(this).push("admin","device","statuses")}deviceModels(){return new c(this).push("admin","device-models")}deviceModel(e){return new R(this,e)}deviceProblems(){return new c(this).push("admin","device-problems")}deviceModelCriterias(){return new c(this).push("admin","device-model-criteria")}deviceModelCriteria(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("admin","device-model-criteria",e)}deviceSessions(){return new c(this).push("admin","device-sessions")}deviceSession(e){return new g(this,e)}deviceTime(){return new b(this)}deviceTimeSummary(){return new c(this).push("admin","device-time-summary")}deviceTypes(){return new c(this).push("admin","device-types")}deviceType(e){return new l(this).push("admin","device-types",e)}deviceGroups(){return new c(this).push("device-groups")}deviceGroup(e){return new B(this,e)}emails(){return new c(this).push("admin","emails")}resendEmail(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("admin","emails",e,"resend").post()}files(){return new c(this).push("files")}file(e){return new q(this,e)}frameworks(){return new c(this).push("admin","frameworks")}framework(e){return new U(this,e)}frameworkAvailableLabels(){const e=this.frameworks();return e.push("available-labels"),e}interactiveQueue(){return new c(this).push("admin","interactive-queue")}licenses(){return new c(this).push("admin","licenses")}license(e){return new _(this,e)}maintenance(){return new l(this).push("admin","maintenance")}overview(){return new l(this).push("admin","overview")}pools(){return new c(this).push("admin","pools")}pool(e){return new l(this).push("admin","pools",e)}projects(){return new c(this).push("projects")}project(e){return new V(this,e)}roles(){return new c(this).push("admin","roles")}runs(){return new w(this)}run(e){return new P(this,e)}samples(){return new c(this).push("admin","samples")}sample(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("admin","samples",e)}services(){return new T(this)}service(e){return new F(this,e)}settings(){return new l(this).push("admin","settings")}statistics(){return new A(this)}users(){return new c(this).push("users")}createUser(){return new c(this).push("admin","users").post()}user(e){return new x(this,e)}};z=n([I],z);class $ extends c{constructor(e){super(e),this.push("devices")}filters(){return new l(this).push("filters")}desktopBrowserCapabilities(){return new l(this).push("desktop-browser-capabilities")}}class X extends c{constructor(e){super(e),this.push("properties")}maintenance(){return new c(this).params({filter:"name_eq_CLOUD_HEADER_ANNOUNCEMENT",limit:1,sort:"updateTime_d"})}}class Z extends c{constructor(e){super(e),this.ALLOWED_HTTP_METHODS=["POST"],this.push("services")}available(){return new c(this).push("available")}active(){const e=new c(this);return"me"===this.first?e.push("active"):e.params({notArchived:!0}),e}byPrice(){return new c(this).sort("centPrice")}availableByPrice(){return new c(this).push("available").sort("centPrice")}}class J extends c{constructor(e){super(e),this.ALLOWED_HTTP_METHODS=["GET","POST"],this.push("users")}activate(){return new l(this).push("activate").post()}recoveries(){return new l(this).push("recoveries")}passwordRecovery(){return new l(this).push("password-recovery")}}class Q extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("billing-periods",s)}receipt(){return new l(this).push("receipt").setRequestConfig({responseType:"arraybuffer"})}}class ee extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("accounts",s)}concurrencyStatus(){return new l(this).push("concurrency-status")}deviceTime(){return new c(this).push("device-time")}deviceTimeSummary(){return new c(this).push("device-time-summary")}preferences(){return new l(this).push("preferences")}users(){return new c(this).push("users")}removeUser(e){return new l(this).push("users",e)}disableUser(e){return new l(this).push("users",e,"disable").post()}enableUser(e){return new l(this).push("users",e,"enable").post()}resendActivation(e){return new l(this).push("users",e,"resend-activation").post()}billingPeriods(){return new c(this).push("billing-periods")}billingPeriod(e){return new Q(this,e)}serviceBillingPeriod(e){if(null==e)throw new Error("Resource ID cannot be null!");return new l(this).push("account-services",e,"billing-period")}visualTestAccess(){return new l(this).push("visual-tests","access")}accountServices(){return new c(this).push("account-services")}accountService(e){return new c(this).push("account-services",e)}services(){return new l(this).push("services")}userUsageDetails(){return new c(this).push("user-usage-details")}usageDetails(){return new c(this).push("usage-details")}usageDetailsSummary(){return new l(this).push("usage-details-summary")}}class se extends l{constructor(e){super(e),this.push("broker")}hubs(){return new c(this).push("hubs")}}class te extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("devices",s)}properties(){return new c(this).push("properties")}browsers(){return new c(this).push("browsers")}}class re extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("label-groups",s)}labels(){return new c(this).push("labels")}label(e){return new l(this).push("labels",e)}}class ne extends c{constructor(e){super(e),this.push("files")}upload(e){if(global.isNodeJs)return this.nodeUpload(e);throw new Error("Not supported yet!")}nodeUpload(e){const s=require("fs"),t=new(require("form-data"));return t.append("file",s.createReadStream(e.dir+"/"+e.filename),{filename:e.filename}),this.post().headers(t.getHeaders()).data(t)}}class ie extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("channels",s)}scopes(){return new c(this).push("scopes")}}class ue extends c{constructor(e){super(e),this.push("notifications")}scopes(){return new c(this).push("scopes")}channels(){return new c(this).push("channels")}channel(e){return new ie(this,e)}}class oe extends c{constructor(e){super(e),this.push("runs")}config(){return new l(this).push("config")}}class ae extends c{constructor(e){super(e),this.ALLOWED_HTTP_METHODS=["GET"],this.push("tunnels")}active(e){return this.params({active:e})}}class he extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");super(e),this.push("notifications",s)}test(){return new l(this).push("test")}}class ce extends l{constructor(e,s){if(null==s)throw new Error("Resource ID cannot be null!");if(super(e),"me"===s)this.push("me");else{if("number"!=typeof s)throw new TypeError("id is not a number");this.push("users",s)}}services(){return new Z(this)}deviceGroups(){return new c(this).push("device-groups")}deviceGroup(e){return new B(this,e)}deviceSessions(){return new c(this).push("device-sessions")}deviceSession(e){return new G(this,e)}markAccountOwner(){return new l(this).push("mark-account-owner").post()}projects(){return new c(this).push("projects")}project(e){return new V(this,e)}files(){return new ne(this)}file(e){return new q(this,e)}runs(){return new oe(this)}availableFrameworks(){return new c(this).push("available-frameworks")}resetApiKey(){return new l(this).push("reset-api-key")}restore(){return new l(this).push("restore")}feedback(){return new l(this).push("feedback")}notifications(){return new ue(this)}notification(e){return new he(this,e)}preferences(){return new l(this).push("preferences")}uiPreferences(){return new l(this).push("ui-preferences")}deviceUsage(){return new c(this).push("device-usage")}statistics(){return new l(this).push("statistics")}deviceStatistics(){return new c(this).push("device-statistics")}accessGroups(){return new c(this).push("access-groups")}accessGroup(e){return new k(this,e)}smartbearTunnel(e){return new l(this).push("tunnels",e)}smartbearTunnels(){return new ae(this)}deleteAccount(){return new l(this).push("delete")}}class le extends l{constructor(e){super(e),this.push("user-sessions")}login(e){return new l(this).push("login").post().data(e)}logout(){return new l(this).push("logout").post()}sso(e){return new l(this).push("oauth","authorize",e+"-login")}sbidCallbackUrl(){return new l(this).push("oauth","authorize","sbid-login").toUrl(!0)}}const pe=require("axios").default;globalThis.isNodeJs&&(pe.defaults.headers.common["User-Agent"]="Bitbar Cloud API Client for JavaScript v1.6.0"),pe.defaults.maxContentLength=1073741824;class de{get baseUrl(){return this.axiosConfig.baseURL}constructor(e){if(this.config=e,this.axiosConfig={},null==e)throw new Error("config cannot be empty");if(null==this.config.cloudUrl)throw new TypeError("cloudUrl cannot be empty");if("string"!=typeof this.config.cloudUrl)throw new TypeError("cloudUrl must be a string");if(!/^https?:\/\/.{2,}/.test(this.config.cloudUrl))throw new Error("cloudUrl doesn't look like a URL");if(this.axiosConfig.baseURL=this.config.cloudUrl.replace(/\/+$/,"")+"/api",this.config.v2=!!this.config.v2,this.config.v2&&(this.axiosConfig.baseURL+="/v2"),this.config.apiKey){if("string"!=typeof this.config.apiKey)throw new TypeError("apiKey must be a string");if(!/^[A-Za-z0-9]{32}$/.test(this.config.apiKey))throw new Error("apiKey is in the wrong format");this.axiosConfig.auth={username:this.config.apiKey,password:""}}this.axiosConfig.withXSRFToken=!0,this.axiosConfig.withCredentials=null!=e.withCredentials&&e.withCredentials,this.axios=pe.create(this.axiosConfig)}account(e){return new ee(this,e)}admin(){return new z(this)}broker(){return new se(this)}clusters(){return new c(this).push("clusters")}cluster(e){return new S(this,e)}device(e){return new te(this,e)}deviceGroup(e){return new B(this,e)}deviceGroups(){return new c(this).push("device-groups")}devices(){return new $(this)}deviceSession(e){return new W(this,e)}deviceSessions(){return new c(this).push("device-sessions")}deviceStatistics(){return new c(this).push("device-statistics")}enums(){return new l(this).push("enums")}files(){return new c(this).push("files")}file(e){return new q(this,e)}labelGroups(){return new c(this).push("label-groups")}labelGroup(e){return new re(this,e)}labels(){return new c(this).push("labels")}licenses(){return new l(this).push("licenses")}license(){return new l(this).push("license")}ma(){throw new Error("Requires prototype extension covering ACL check")}me(){return this.user("me")}projects(){return new c(this).push("projects")}project(e){return new V(this,e)}properties(){return new X(this)}property(e){return new l(this).push("properties",e)}run(e){return new j(this,e)}services(){return new Z(this)}user(e){return new ce(this,e)}users(){return new J(this)}userSession(){return new le(this)}}const Ee={API:de,FilterBuilder:u};var we,Te,Ie,Ae,fe,Ne,Se,me,Re,ve,Le,Oe,Ce,De,ge,be,Ue,_e,ye,Pe,Fe,Me,Ge,xe,ke,Be,qe,He,We,Ye,Ke,je,Ve,ze,$e,Xe,Ze,Je,Qe,es,ss,ts,rs,ns,is,us,os;e.AccessGroupScope=void 0,(we=e.AccessGroupScope||(e.AccessGroupScope={})).USER="USER",we.ACCOUNT="ACCOUNT",we.GLOBAL="GLOBAL",e.SessionUsageType=void 0,(Te=e.SessionUsageType||(e.SessionUsageType={})).AUTOMATIC="AUTOMATIC",Te.MANUAL="MANUAL",Te.DEDICATED_AUTOMATIC="DEDICATED_AUTOMATIC",Te.DEDICATED_MANUAL="DEDICATED_MANUAL",e.UtilizationType=void 0,(Ie=e.UtilizationType||(e.UtilizationType={})).ALL="all",Ie.PUBLIC="public",Ie.DEDICATED="dedicated",e.SessionType=void 0,(Ae=e.SessionType||(e.SessionType={})).ALL="all",Ae.AUTOMATED="automated",Ae.MANUAL="manual",e.TimeResolution=void 0,(fe=e.TimeResolution||(e.TimeResolution={})).HOUR="hour",fe.DAY="day",e.PaymentStatus=void 0,(Ne=e.PaymentStatus||(e.PaymentStatus={})).SUCCEEDED="SUCCEEDED",Ne.FAILED="FAILED",Ne.REDIRECTED="REDIRECTED",e.PaymentMethod=void 0,(Se=e.PaymentMethod||(e.PaymentMethod={})).PAYPAL="PAYPAL",Se.BRAINTREE="BRAINTREE",Se.STRIPE="STRIPE",Se.INVOICE="INVOICE",Se.PROMOTION="PROMOTION",Se.AWS="AWS",e.DeactivateReason=void 0,(me=e.DeactivateReason||(e.DeactivateReason={})).INITIAL_FAILURE="INITIAL_FAILURE",me.SCA_FAILURE="SCA_FAILURE",me.CHARGE_FAILURE="CHARGE_FAILURE",me.CANCEL="CANCEL",me.SUSPENDED="SUSPENDED",me.ANOTHER_PURCHASE="ANOTHER_PURCHASE",e.InitStep=void 0,(Re=e.InitStep||(e.InitStep={})).SKIP="SKIP",Re.REBOOT="REBOOT",Re.REBOOT_WITH_UNLOCK="REBOOT_WITH_UNLOCK",Re.UNLOCK_ONLY="UNLOCK_ONLY",e.DeviceState=void 0,(ve=e.DeviceState||(e.DeviceState={})).OFFLINE_CLEANING="OFFLINE_CLEANING",ve.OFFLINE_DIRTY="OFFLINE_DIRTY",ve.OFFLINE_FREE="OFFLINE_FREE",ve.OFFLINE_TESTING="OFFLINE_TESTING",ve.ONLINE_CLEANING="ONLINE_CLEANING",ve.ONLINE_DIRTY="ONLINE_DIRTY",ve.ONLINE_FREE="ONLINE_FREE",ve.ONLINE_TESTING="ONLINE_TESTING",e.FrameworkType=void 0,(Le=e.FrameworkType||(e.FrameworkType={})).AUTOMATIC="AUTOMATIC",Le.MANUAL_APP="MANUAL_APP",Le.MANUAL_WEB="MANUAL_WEB",Le.REMOTE="REMOTE",e.BillingType=void 0,(Oe=e.BillingType||(e.BillingType={})).BUY="BUY",Oe.CHARGE="CHARGE",Oe.CANCEL="CANCEL",e.BrokerType=void 0,(Ce=e.BrokerType||(e.BrokerType={})).MOBILE="MOBILE",Ce.DESKTOP="DESKTOP",e.ClusterState=void 0,(De=e.ClusterState||(e.ClusterState={}))[De.OFFLINE=0]="OFFLINE",De.ONLINE="ONLINE",De.RESTARTING="RESTARTING",De.QUIET_DOWN="QUIET_DOWN",De.MAINTENANCE="MAINTENANCE",e.ClusterType=void 0,(ge=e.ClusterType||(e.ClusterType={})).BARE_METAL="BARE_METAL",ge.EC2="EC2",ge.VM="VM",e.DeviceGroupOrigin=void 0,(be=e.DeviceGroupOrigin||(e.DeviceGroupOrigin={})).STATIC="STATIC",be.DYNAMIC="DYNAMIC",be.HYBRID="HYBRID",e.Platform=void 0,(Ue=e.Platform||(e.Platform={})).IOS="IOS",Ue.ANDROID="ANDROID",Ue.WINDOWS="WINDOWS",Ue.MAC="MAC",Ue.LINUX="LINUX",Ue.UNDEFINED="UNDEFINED",e.SupportedCreators=void 0,(_e=e.SupportedCreators||(e.SupportedCreators={})).MANUAL="MANUAL",_e.ROBOT="ROBOT",_e.AUTOMATIC="AUTOMATIC",e.PoolSize=void 0,(ye=e.PoolSize||(e.PoolSize={})).XL="XL",ye.L="L",ye.M="M",ye.S="S",e.Code=void 0,(Pe=e.Code||(e.Code={})).HIGH="HIGH",Pe.MODERATE="MODERATE",Pe.LOW="LOW",Pe.NONE="NONE",e.LockReason=void 0,(Fe=e.LockReason||(e.LockReason={})).TESTING="TESTING",Fe.CLEANING="CLEANING",Fe.NOT_OPERATIONAL="NOT_OPERATIONAL",e.CriterionField=void 0,(Me=e.CriterionField||(e.CriterionField={})).NAME="NAME",Me.FINGERPRINT="FINGERPRINT",Me.SERIAL_ID="SERIAL_ID",Me.UNLOCK_GESTURE="UNLOCK_GESTURE",Me.SOFTWARE_VERSION="SOFTWARE_VERSION",Me.INIT_STEP="INIT_STEP",Me.ACCOUNT="ACCOUNT",Me.BROWSERS="BROWSERS",e.RetentionStrategy=void 0,(Ge=e.RetentionStrategy||(e.RetentionStrategy={})).CLUSTER_ON_OFF="CLUSTER_ON_OFF",Ge.MIN_FREE_MAX_TOTAL="MIN_FREE_MAX_TOTAL",Ge.POOL_MANAGER_AWARE="POOL_MANAGER_AWARE",e.ProblemType=void 0,(xe=e.ProblemType||(e.ProblemType={})).CLEANING="CLEANING",xe.DIRTY="DIRTY",xe.OFFLINE="OFFLINE",xe.LOW_BATTERY="LOW_BATTERY",xe.HIGH_FAIL_RATE="HIGH_FAIL_RATE",xe.NO_INTERNET_CONNECTION="NO_INTERNET_CONNECTION",e.DeviceSessionType=void 0,(ke=e.DeviceSessionType||(e.DeviceSessionType={})).AUTOMATIC="AUTOMATIC",ke.MANUAL_APP="MANUAL_APP",ke.MANUAL_WEB="MANUAL_WEB",e.RetryState=void 0,(Be=e.RetryState||(e.RetryState={})).NONE="NONE",Be.MANUAL="MANUAL",Be.AUTO="AUTO",e.DeviceSessionState=void 0,(qe=e.DeviceSessionState||(e.DeviceSessionState={})).ABORTED="ABORTED",qe.EXCLUDED="EXCLUDED",qe.FAILED="FAILED",qe.RUNNING="RUNNING",qe.SUCCEEDED="SUCCEEDED",qe.TIMEOUT="TIMEOUT",qe.WAITING="WAITING",qe.WARNING="WARNING",e.DeviceSessionStepType=void 0,(He=e.DeviceSessionStepType||(e.DeviceSessionStepType={})).WAITING="WAITING",He.PREPARING="PREPARING",He.UNINSTALL="UNINSTALL",He.INSTALL="INSTALL",He.RUNNING="RUNNING",He.SENDING_RESULTS="SENDING_RESULTS",He.PROCESSING_RESULTS="PROCESSING_RESULTS",e.SessionReleaseReason=void 0,(We=e.SessionReleaseReason||(e.SessionReleaseReason={})).INACTIVITY="INACTIVITY",We.TIMEOUT="TIMEOUT",We.USER_ACTION="USER_ACTION",We.CHANGE_DEVICE="CHANGE_DEVICE",We.WEBSOCKET_CLOSED="WEBSOCKET_CLOSED",e.OsType=void 0,(Ye=e.OsType||(e.OsType={})).IOS="IOS",Ye.ANDROID="ANDROID",Ye.DESKTOP="DESKTOP",Ye.UNDEFINED="UNDEFINED",e.LicenseStatus=void 0,(Ke=e.LicenseStatus||(e.LicenseStatus={})).ACTIVE="ACTIVE",Ke.EXPIRED="EXPIRED",Ke.INACTIVE="INACTIVE",Ke.CLOSED="CLOSED",e.NotificationChannel=void 0,(je=e.NotificationChannel||(e.NotificationChannel={})).SLACK="SLACK",je.EMAIL="EMAIL",je.WEBHOOK="WEBHOOK",e.NotificationScope=void 0,(Ve=e.NotificationScope||(e.NotificationScope={})).ALL="ALL",Ve.TEST_RUN="TEST_RUN",Ve.TEST_RUN_FAILURE="TEST_RUN_FAILURE",Ve.TEST_RUN_SUCCEEDED="TEST_RUN_SUCCEEDED",Ve.SYSTEM="SYSTEM",Ve.CHECK="CHECK",e.ArchivingStrategy=void 0,(ze=e.ArchivingStrategy||(e.ArchivingStrategy={})).NEVER="NEVER",ze.DAYS="DAYS",ze.RUNS="RUNS",e.ScreenshotType=void 0,($e=e.ScreenshotType||(e.ScreenshotType={})).LANDSCAPE="LANDSCAPE",$e.PORTRAIT="PORTRAIT",e.ServiceUnit=void 0,(Xe=e.ServiceUnit||(e.ServiceUnit={})).DAY="DAY",Xe.HOUR="HOUR",Xe.MONTH="MONTH",Xe.PROJECT="PROJECT",Xe.RUN="RUN",Xe.YEAR="YEAR",e.SharedResourceType=void 0,(Ze=e.SharedResourceType||(e.SharedResourceType={})).DEVICE_GROUP="DEVICE_GROUP",Ze.FILE="FILE",Ze.PROJECT="PROJECT",e.TestResult=void 0,(Je=e.TestResult||(e.TestResult={})).PASSED="PASSED",Je.FAILED="FAILED",Je.SKIPPED="SKIPPED",Je.NOT_AVAILABLE="NOT_AVAILABLE",e.LimitationType=void 0,(Qe=e.LimitationType||(e.LimitationType={})).PACKAGE="PACKAGE",Qe.CLASS="CLASS",e.TestScheduler=void 0,(es=e.TestScheduler||(e.TestScheduler={})).PARALLEL="PARALLEL",es.SERIAL="SERIAL",es.SINGLE="SINGLE",es.ALL_INSTANCES="ALL_INSTANCES",e.TestState=void 0,(ss=e.TestState||(e.TestState={})).WAITING="WAITING",ss.RUNNING="RUNNING",ss.FINISHED="FINISHED",e.TestRunConfigFileAction=void 0,(ts=e.TestRunConfigFileAction||(e.TestRunConfigFileAction={})).COPY_TO_DEVICE="COPY_TO_DEVICE",ts.INSTALL="INSTALL",ts.RUN_TEST="RUN_TEST",e.UserStatus=void 0,(rs=e.UserStatus||(e.UserStatus={})).INACTIVE="INACTIVE",rs.DISABLED="DISABLED",rs.ENABLED="ENABLED",e.FileDirection=void 0,(ns=e.FileDirection||(e.FileDirection={})).INPUT="INPUT",ns.OUTPUT="OUTPUT",e.FileInputType=void 0,(is=e.FileInputType||(e.FileInputType={})).APPLICATION="APPLICATION",is.TEST="TEST",is.DATA="DATA",e.FileState=void 0,(us=e.FileState||(e.FileState={})).PREPARING="PREPARING",us.READY="READY",e.VisualTestImageType=void 0,(os=e.VisualTestImageType||(e.VisualTestImageType={})).FULL_PAGE="FULL_PAGE",os.VIEWPORT="VIEWPORT",os.ELEMENT_SCREENSHOT="ELEMENT_SCREENSHOT",e.ALLOWED_HTTP_METHODS=o,e.API=de,e.CloudAPIClient=Ee,e.FilterBuilder=u,e.IMAGE_FILES_FILTER=v,e.NON_MEDIA_FILES_FILTER=L,e.default=Ee,Object.defineProperty(e,"__esModule",{value:!0})})); +//# sourceMappingURL=bitbar-cloud-api-client.min.js.map diff --git a/dist/bitbar-cloud-api-client.min.js.map b/dist/bitbar-cloud-api-client.min.js.map new file mode 100644 index 0000000..03aff4d --- /dev/null +++ b/dist/bitbar-cloud-api-client.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bitbar-cloud-api-client.min.js","sources":["../src/Filter.ts","../src/finka.ts","../src/FilterBuilder.ts","../src/api/models/HTTP.ts","../src/api/APIEntity.ts","../src/api/APIList.ts","../src/api/APIResource.ts","../src/api/APIListCleanupConfigurations.ts","../src/api/APIResourceCleanupConfiguration.ts","../src/api/APIAdminListDevices.ts","../src/api/APIAdminListRuns.ts","../src/api/APIAdminListServices.ts","../src/api/decorators/NonRequestable.ts","../src/api/APIAdminListStatistics.ts","../src/api/APIAdminResourceAccount.ts","../src/api/APIAdminResourceAccountService.ts","../src/api/APIAdminResourceCluster.ts","../src/api/APIAdminResourceDevice.ts","../src/api/APIAdminResourceDeviceModel.ts","../src/api/class/InputFileset.ts","../src/api/class/Images.filter.ts","../src/api/class/NonMedia.filter.ts","../src/api/APIListOutputFiles.ts","../src/api/class/OutputFileset.ts","../src/api/APIListScreenshots.ts","../src/api/APIResourceDeviceSessionCommon.ts","../src/api/APIAdminResourceDeviceSessionStandalone.ts","../src/api/factory/postAdminDeviceSessionChangeBillable.ts","../src/api/APIAdminResourceDeviceTime.ts","../src/api/APIAdminResourceFramework.ts","../src/api/APIAdminResourceLicense.ts","../src/api/factory/postDeviceRunIds.ts","../src/api/APIAdminResourceRunStandalone.ts","../src/api/APIAdminResourceService.ts","../src/api/APIAdminResourceUserAccount.ts","../src/api/APIResourceDeviceSessionStandalone.ts","../src/api/APIAdminResourceUser.ts","../src/api/APIResourceAccessGroup.ts","../src/api/APIResourceDeviceGroup.ts","../src/api/APIResourceFile.ts","../src/api/APIListTestCaseRuns.ts","../src/api/APIResourceDeviceSession.ts","../src/api/APIListTestRunDeviceSessions.ts","../src/api/APIResourceRunCommon.ts","../src/api/APIResourceRun.ts","../src/api/APIResourceProject.ts","../src/api/APIAdminResource.ts","../src/api/APIListDevices.ts","../src/api/APIListProperties.ts","../src/api/APIListServices.ts","../src/api/APIListUsers.ts","../src/api/APIResourceBillingPeriod.ts","../src/api/APIResourceAccount.ts","../src/api/APIResourceBroker.ts","../src/api/APIResourceDevice.ts","../src/api/APIResourceLabelGroup.ts","../src/api/APIListFiles.ts","../src/api/APIResourceChannel.ts","../src/api/APIListNotifications.ts","../src/api/APIListRuns.ts","../src/api/APIListSmartbearTunnels.ts","../src/api/APIResourceNotification.ts","../src/api/APIResourceUser.ts","../src/api/APIResourceUserSession.ts","../src/API.ts","../src/CloudAPIClient.ts","../src/api/models/AccessGroup.ts","../src/api/models/Account.ts","../src/api/models/AccountService.ts","../src/api/models/AdminDevice.ts","../src/api/models/AdminFrameworkStatistics.ts","../src/api/models/BillingPeriod.ts","../src/api/models/Broker.ts","../src/api/models/Cluster.ts","../src/api/models/Device.ts","../src/api/models/DeviceModelCriterion.ts","../src/api/models/DeviceModelPool.ts","../src/api/models/DeviceProblem.ts","../src/api/models/DeviceSession.ts","../src/api/models/Enum.ts","../src/api/models/License.ts","../src/api/models/Notification.ts","../src/api/models/Project.ts","../src/api/models/Screenshot.ts","../src/api/models/Service.ts","../src/api/models/SharedResource.ts","../src/api/models/TestCaseRun.ts","../src/api/models/TestRun.ts","../src/api/models/User.ts","../src/api/models/UserFile.ts","../src/api/models/VisualTest.ts"],"sourcesContent":["/**\n * Filter\n */\n\nexport class Filter {\n name: string;\n value: T;\n operand: string;\n\n constructor(name: string, value: T, operand: string) {\n this.name = name;\n this.value = value;\n this.operand = operand;\n }\n}\n\nexport default Filter;\n","import finka from '@bitbar/finka';\n\nfinka();\n\nexport default {};\n","import {Filter} from './Filter';\nimport './finka';\n\n/**\n * FilterBuilder\n *\n * Builds filter string according to Bitbar Cloud backend convention\n */\nexport class FilterBuilder {\n\n private readonly filters: Array = [];\n\n gt(name: string, value: number): this {\n return this.add(name, value, 'gt');\n }\n\n\n lt(name: string, value: number): this {\n return this.add(name, value, 'lt');\n }\n\n after(name: string, value: Date | number): this {\n return this.add(name, value, 'after', true);\n }\n\n afterorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'afterorequal', true);\n }\n\n before(name: string, value: Date | number): this {\n return this.add(name, value, 'before', true);\n }\n\n beforeorequal(name: string, value: Date | number): this {\n return this.add(name, value, 'beforeorequal', true);\n }\n\n on(name: string, value: any): this {\n return this.add(name, value, 'on');\n }\n\n eq(name: string, value: any): this {\n return this.add(name, value, 'eq');\n }\n\n contains(name: string, value: string): this {\n return this.add(name, value, 'contains');\n }\n\n like(name: string, value: string): this {\n return this.add(name, value, 'like');\n }\n\n notlike(name: string, value: string): this {\n return this.add(name, value, 'notlike');\n }\n\n isnull(name: string): this {\n return this.add(name, undefined, 'isnull');\n }\n\n isnotnull(name: string): this {\n return this.add(name, undefined, 'isnotnull');\n }\n\n in(name: string, value: Array): this {\n return this.add(name, value, 'in', true);\n }\n\n notin(name: string, value: Array): this {\n return this.add(name, value, 'notin', true);\n }\n\n raw(filter: Filter | string | Filter[] | string[]): void {\n const filters = Array.wrap(filter);\n for (const filter of filters) {\n if (this.isFilterPart(filter)) {\n this.filters.push(filter);\n } else {\n throw new SyntaxError(`Filter ${filter} has invalid syntax`);\n }\n }\n }\n\n\n /**\n * Check if given string is proper filter part\n */\n isFilterPart(str: string): boolean {\n return /^[a-zA-Z0-9.]{2,12}_(?:isnull$|(?:gt|lt|(?:after|before)(?:orequal)?|on|eq|contains|like|(?:not)?in)_)/.test(str);\n }\n\n toString(): string {\n const parts: Array = [];\n\n let part: string,\n val: string;\n\n for (const filter of this.filters) {\n if (typeof filter === 'string') {\n part = filter;\n } else {\n val = '';\n if (filter.value.length > 1 || typeof filter.value[0] !== 'undefined') {\n val = `_${filter.value.join('|')}`;\n }\n part = `${filter.name}_${filter.operand}${val}`;\n }\n parts.push(part);\n }\n\n return parts.join(';');\n }\n\n /**\n * Add filter to filters list\n * @param name {string} Name\n * @param value {*} Value\n * @param operand {string} Operand\n * @param [checkNull=false] {boolean} Check null?\n * @returns {FilterBuilder}\n */\n private add(name: string, value: T, operand: string, checkNull = false): this {\n\n let _value = Array.wrap(value);\n\n if (_value.length === 0) {\n return this;\n }\n\n // auto-convert\n for (let i = 0; i < _value.length; i++) {\n const v = _value[i];\n if (typeof v === 'object' && v instanceof Date) {\n _value[i] = v.getTime();\n }\n }\n\n let isNull = false;\n if (checkNull) {\n // check null existence\n for (const v of _value) {\n if (v !== null) {\n continue;\n }\n isNull = true;\n }\n\n if (isNull) {\n _value = _value.filter((item: any) => item !== null);\n operand += 'ornull';\n }\n }\n\n if (operand.endsWith('ornull') && _value.length === 0) {\n operand = 'isnull';\n }\n\n // add filter\n this.filters.push(new Filter>(name, _value, operand));\n\n return this;\n }\n}\n\n\nexport default FilterBuilder;\n","import {Method} from 'axios';\n\n\n/**\n * Allowed methods\n *\n * @type {Array}\n * @default\n */\nexport const ALLOWED_HTTP_METHODS: Array = ['GET', 'POST', 'DELETE'];\n\nexport type QueryParam = string | number | boolean;\nexport type QueryParams = Record>;\n\nexport enum APIOrder {\n asc = 'a',\n desc = 'd'\n}\n\nexport interface CollectionQueryParams extends QueryParams {\n filter: string;\n limit: number;\n offset: number;\n sort: string;\n search: string;\n}\n\nexport type CollectionBasicQueryParams = Omit\n\nexport type NoQueryParams = {\n [key in any]: never;\n}\n\nexport type CollectionResponse = {\n data: Array;\n empty: boolean;\n id: number;\n limit: number;\n next: string;\n offset: number;\n previous: string;\n search: string;\n sort: string;\n total: number;\n}\n\nexport type SimpleCollectionResponse = Pick, 'data' | 'id'>;\nexport type NoData = void;\n","import {AxiosRequestConfig, AxiosResponse, Method} from 'axios';\nimport {stringify} from 'qs';\nimport {API} from '../API';\nimport {ALLOWED_HTTP_METHODS, QueryParams} from './models/HTTP';\nimport {AbortController} from 'node-abort-controller';\n\n\n/**\n * @typeParam RESPONSE HTTP Response return type.\n * @typeParam QUERY_PARAMS Allowed Query Params\n * @typeParam DATA Allowed Data Object\n */\nexport class APIEntity {\n\n root: API;\n\n protected stack: Array = [];\n protected requestConfig: AxiosRequestConfig = {};\n protected ALLOWED_HTTP_METHODS: Array = ALLOWED_HTTP_METHODS;\n protected abortController: AbortController;\n\n /**\n * Constructor\n * @param {APIEntity|object} [parent] - Specifies a parent from which should be inherited properties\n */\n constructor(parent: APIEntity | API) {\n if (parent instanceof APIEntity) {\n this.root = parent.root;\n\n if (Array.isArray(parent.stack)) { //???\n this.push(...parent.stack);\n }\n\n if (parent.requestConfig != null) {\n this.setRequestConfig(parent.requestConfig);\n }\n } else {\n this.root = parent;\n }\n this.abortController = new AbortController();\n }\n\n abortRequest() {\n this.abortController.abort();\n this.abortController = new AbortController();\n }\n\n push(...items: Array): this {\n this.stack = this.stack.concat(items);\n return this;\n }\n\n shift(): this {\n this.stack.shift();\n return this;\n }\n\n restack(...items: Array): this {\n this.stack = items;\n return this;\n }\n\n /**\n * Get first element of the stack\n */\n get first(): string | number {\n return this.stack[0];\n }\n\n /**\n * Get last element of the stack\n */\n get last(): string | number {\n return this.stack[this.stack.length - 1];\n }\n\n /**\n * Set last element of the stack\n */\n set last(val) {\n this.stack[this.stack.length - 1] = val;\n }\n\n toUrl(absolute = false): string {\n let url = `/${this.stack.join('/')}`;\n\n if (absolute) {\n url = this.root.baseUrl + url;\n }\n\n return url;\n }\n\n setRequestConfig(requestConfig: AxiosRequestConfig): this {\n Object.deepAssign(this.requestConfig, requestConfig);\n return this;\n }\n\n removeRequestConfig(key: keyof AxiosRequestConfig): this {\n delete this.requestConfig[key];\n return this;\n }\n\n headers(headers: Record): this {\n const _headers: Record = {};\n\n // Unify/Standarize headers keys\n for (const key in headers) {\n const newKey = key.replace(/(?:^|-)([a-z])/g, (letter) => letter.toUpperCase());\n _headers[newKey] = headers[key];\n }\n\n return this.setRequestConfig({\n headers: _headers\n });\n }\n\n /**\n * Set HTTP method\n */\n method(name: Method): this {\n const NAME: Uppercase = >name.toLocaleUpperCase();\n const isAllowed: boolean = this.ALLOWED_HTTP_METHODS.indexOf(NAME) > -1;\n\n if (!isAllowed) {\n throw new Error(`Method '${NAME}' is not allowed! You can use: ${this.ALLOWED_HTTP_METHODS.join(', ')}`);\n }\n\n return this.setRequestConfig({\n method: NAME\n });\n }\n\n /**\n * Set GET as HTTP method\n */\n get(): this {\n return this.method('GET');\n }\n\n /**\n * Set POST as HTTP method\n */\n post(): this {\n return this.method('POST');\n }\n\n /**\n * Set DELETE as HTTP method\n */\n delete(): this {\n return this.method('DELETE');\n }\n\n /**\n * Set params\n */\n params(params: Pick): this {\n this.setRequestConfig({params});\n return this;\n }\n\n getParams(): Partial {\n return this.requestConfig.params == null ? {} : this.requestConfig.params;\n }\n\n removeParam(key: keyof QUERY_PARAMS): this {\n delete this.requestConfig.params[key];\n return this;\n }\n\n /**\n * Set data\n */\n data(data: DATA): this {\n this.setRequestConfig({data});\n return this;\n }\n\n /**\n * Set JSON data\n */\n jsonData(data: DATA): this {\n this.headers({\n 'Content-Type': 'application/json'\n }).data(data);\n return this;\n }\n\n /**\n * Set form data\n */\n formData(data: DATA): this {\n this.data(data);\n return this;\n }\n\n /**\n * Send request\n */\n send(): Promise> {\n const requestConfig = Object.deepAssign({}, this.requestConfig, {\n url: `/${this.stack.join('/')}`,\n signal: this.abortController.signal\n });\n\n // Set default headers\n if (requestConfig.headers == null) {\n requestConfig.headers = {};\n }\n\n if (!(requestConfig.method === 'POST' && requestConfig.data instanceof FormData) &&\n requestConfig.headers['Content-Type'] == null) {\n requestConfig.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n\n // Convert data if needed\n if (requestConfig.method === 'POST' &&\n (requestConfig.headers['Content-Type'])?.startsWith('application/x-www-form-urlencoded') &&\n requestConfig.data != null) {\n requestConfig.data = this.paramsSerializer(requestConfig.data);\n }\n\n if (requestConfig.params) {\n requestConfig.paramsSerializer = {indexes: false};\n }\n\n // Send request\n return this.root.axios.request(requestConfig);\n }\n\n protected paramsSerializer(params: DATA | QUERY_PARAMS): string {\n return stringify(params, {\n arrayFormat: 'brackets'\n });\n }\n}\n\n\nexport default APIEntity;\n","import {AxiosResponse} from 'axios';\nimport {FilterBuilder} from '../FilterBuilder'\nimport {APIEntity} from './APIEntity'\nimport {\n APIOrder,\n CollectionBasicQueryParams,\n CollectionQueryParams,\n CollectionResponse,\n NoQueryParams,\n SimpleCollectionResponse\n} from './models/HTTP';\n\n\nexport const DEFAULT_LIMIT: number = 20;\nexport const DEFAULT_OFFSET: number = 0;\n\nexport type APIListQuery = CollectionBasicQueryParams | CollectionQueryParams | NoQueryParams;\n\nexport class APIList\n extends APIEntity | SimpleCollectionResponse, QUERY_PARAMS, DATA> {\n\n /**\n * Shortcut for sending data POST\n */\n create(data: DATA): Promise> {\n return this.post().data(data).send();\n }\n\n /**\n * Sets sorting\n *\n * @public\n * @param {string} name - Name of the column according to which the data will be sorted\n * @param {string} [order=a] - Sorting order. Possibilities: 'a', 'd'\n */\n sort(name: string, order: APIOrder = APIOrder.asc): this {\n return this.params<'sort'>({\n sort: `${name}_${order}`\n });\n }\n\n /**\n * Sets limit\n *\n * @public\n * @param {number} [limit=DEFAULT_LIMIT] - Limit to be set\n * @returns this\n */\n limit(limit = DEFAULT_LIMIT): this {\n if (!Number.isNatural(limit)) {\n throw new Error(`Limit '${limit}' is invalid!`);\n }\n\n return this.params<'limit'>({\n limit\n });\n }\n\n /**\n * Gets limit\n *\n * @public\n * @returns number\n */\n getLimit(): number {\n const params = this.getParams();\n return params.limit == null ? DEFAULT_LIMIT : params.limit;\n }\n\n /**\n * Disables limit\n *\n * @public\n * @returns this\n */\n noLimit(): this {\n return this.limit(0);\n }\n\n /**\n * Sets offset\n *\n * @public\n * @param {number} [offset=DEFAULT_OFFSET] - Offset to be set\n * @returns this\n */\n offset(offset: number = DEFAULT_OFFSET): this {\n if (!Number.isNatural(offset)) {\n throw new Error(`Offset '${offset}' is invalid!`);\n }\n\n return this.params<'offset'>({\n offset\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE records between range\n *\n * @public\n * @param {number} from - From index\n * @param {number} to - To index\n * @returns this\n */\n between(from: number, to: number): this {\n if (!Number.isNatural(from)) {\n throw new Error(`From '${from}' is invalid!`);\n }\n\n if (!Number.isNatural(to)) {\n throw new Error(`To '${to}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: from,\n limit: 1 + (to - from)\n });\n }\n\n /**\n * Sets limit and offset so that will request from BE one record on given index\n *\n * @public\n * @param {number} idx - Index\n * @returns this\n */\n only(idx: number): this {\n if (!Number.isNatural(idx)) {\n throw new Error(`Index '${idx}' is invalid!`);\n }\n\n return this.params<'offset' | 'limit'>({\n offset: idx,\n limit: 1\n });\n }\n\n /**\n * Gets current limit and sets offset so that will request from BE one page of records\n *\n * @public\n * @param {number} [page=1] - Page number (counted from 1)\n * @returns this\n */\n page(page = 1): this {\n if (!Number.isNatural(page) || page == 0) {\n throw new Error(`Page '${page}' is invalid!`);\n }\n\n const limit = this.getLimit();\n const offset = (page - 1) * limit;\n\n return this.params<'offset' | 'limit'>({\n offset,\n limit\n });\n }\n\n /**\n * Sets search\n *\n * query param is working like SQL LIKE. BE sets wraps around query with %, and replaces every white character\n * with %. So e.g. if query='my device', then it's searching for '%my%device%' in DB.\n *\n * @public\n * @param {string} query - Query to search for\n * @returns this\n */\n search(query: string): this {\n if (typeof query !== 'string') {\n throw new Error('Search query must be a string!');\n }\n\n return this.params<'search'>({\n search: query\n });\n }\n\n /**\n * Sets filter\n *\n * @public\n * @param {FilterBuilder|string} filter - Filter\n * @returns this\n */\n filter(filter: FilterBuilder | string): this {\n const isFilterBuilder = filter instanceof FilterBuilder;\n\n if (typeof filter !== 'string' && !isFilterBuilder) {\n throw new Error('Filter must be either string or instance of FilterBuilder');\n }\n\n return this.params<'filter'>({\n filter: filter.toString()\n });\n }\n\n /**\n * Alias for 'noLimit'\n *\n * @public\n * @see noLimit\n * @returns this\n */\n all: typeof APIList.prototype.noLimit = this.noLimit;\n\n /**\n * Alias for 'between'\n *\n * @public\n * @param {number} from - From idx\n * @param {number} to - To idx\n * @returns this\n */\n cut: typeof APIList.prototype.between = this.between;\n}\n\nexport default APIList;\n","import {APIEntity} from './APIEntity'\nimport {QueryParams} from './models/HTTP';\n\n\n/**\n * APIResource\n *\n * @class\n * @extends APIEntity\n */\nexport class APIResource\n extends APIEntity {\n}\n\n\nexport default APIResource;\n","import {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {CleanupConfigurationData, SpecificCleanupConfigurationQueryParams} from './models/CleanupConfiguration';\nimport {DeviceCleanupConfiguration} from './models/Device';\nimport {CollectionQueryParams, NoData} from './models/HTTP';\n\n\nexport class APIListCleanupConfigurations extends APIList {\n\n /**\n * /cleanup-configurations\n */\n constructor(parent: APIAdminListDevices) {\n super(parent);\n this.push('cleanup-configurations');\n }\n\n // /cleanup-configurations/specific\n specific() {\n return new APIResource, NoData>(this)\n .push('specific');\n }\n\n}\n\nexport default APIListCleanupConfigurations\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIResource} from './APIResource'\nimport {CleanupConfigurationSpecificData, DeviceCleanupConfiguration} from './models/Device';\nimport {NoData} from './models/HTTP';\nimport APIList from './APIList';\n\n\nexport class APIResourceCleanupConfiguration extends APIResource {\n //shuldn't it be APIAdminResourceCleanupConfiguration\n\n /**\n * admin/devices/cleanup-configurations/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('cleanup-configurations', id);\n }\n\n // admin/devices/cleanup-configurations/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIResourceCleanupConfiguration\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIListCleanupConfigurations} from './APIListCleanupConfigurations';\nimport {APIResourceCleanupConfiguration} from './APIResourceCleanupConfiguration';\nimport {AdminDevice, AdminDeviceData, AdminDevicesQueryParams} from './models/AdminDevice';\n\n\nexport class APIAdminListDevices extends APIList {\n\n /**\n * /admin/devices\n */\n constructor(parent: APIAdminResource | API) {\n super(parent);\n this.push('admin', 'devices');\n }\n\n // /admin/devices/cleanup-configurations\n cleanupConfigurations() {\n return new APIListCleanupConfigurations(this);\n }\n\n // /admin/devices/cleanup-configurations/{id}\n cleanupConfiguration(id: number) {\n return new APIResourceCleanupConfiguration(this, id);\n }\n\n}\n\nexport default APIAdminListDevices;\n","import {Method} from 'axios';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {RunsConfigParams, TestRunConfig} from './models/TestRun';\n\nexport class APIAdminListRuns extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /admin/runs\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'runs');\n }\n\n // /runs/config\n config() {\n const apiResource = new APIResource(this);\n apiResource.restack('runs', 'config');\n return apiResource;\n }\n\n}\n\n\nexport default APIAdminListRuns\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {AdminServicesParams, Service} from './models/Service';\n\n\nexport class APIAdminListServices extends APIList {\n\n /**\n * /admin/services\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'services');\n }\n\n active() {\n const apiList = new APIList(this);\n apiList.params<'notArchived'>({\n notArchived: true\n });\n return apiList;\n }\n\n activated() {\n const apiList = this.active();\n apiList.params<'filter' | 'limit' | 'sort'>({\n filter: 'activated_eq_true',\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n inUse() {\n const apiList = new APIList(this);\n apiList.params<'inUse' | 'limit' | 'sort'>({\n inUse: true,\n limit: 0,\n sort: 'name_a'\n })\n return apiList;\n }\n\n byPrice() {\n const apiList = new APIList(this);\n apiList.params<'sort'>({\n sort: 'centPrice_a'\n })\n return apiList;\n }\n\n}\n\nexport default APIAdminListServices;\n","import {AxiosResponse} from 'axios';\n\nexport function NonRequestable(constructor: T) {\n return class extends constructor {\n send(): Promise {\n return Promise.reject();\n }\n };\n}\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AdminFrameworkStatistics, AdminStatisticsParams} from './models/AdminFrameworkStatistics';\nimport {NoData} from './models/HTTP';\n\n\n@NonRequestable\nexport class APIAdminListStatistics extends APIList {\n\n /**\n * /admin/statistics\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'statistics');\n }\n\n // /admin/statistics/frameworks\n frameworks() {\n return new APIList(this).push('frameworks');\n }\n\n\n}\n\n\nexport default APIAdminListStatistics\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {\n Account, AccountData,\n AccountUsage,\n AccountUsageParams,\n AccountUsageSummary,\n AccountUsageSummaryParams\n} from './models/Account';\nimport {NoData, NoQueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {AccountService} from './models/AccountService';\nimport {AccountPreferences, AccountPreferencesData} from './models/AccountPreference';\n\n\nexport class APIAdminResourceAccount extends APIResource {\n\n /**\n * /admin/accounts/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'accounts', id);\n }\n\n // /admin/accounts/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/accounts/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n // /admin/accounts/{id}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /admin/accounts/{id}/usage\n usage() {\n return new APIList, AccountUsageParams>(this).push('usage');\n }\n\n // /admin/accounts/{id}/usage-summary\n usageSummary() {\n return new APIResource(this).push('usage-summary');\n }\n\n}\n\nexport default APIAdminResourceAccount\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {AccountService} from './models/AccountService';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIAdminResourceAccountService extends APIResource {\n\n /**\n * /admin/account-services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'account-services', id);\n }\n\n // /account-services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /account-services/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate').post();\n }\n\n}\n\nexport default APIAdminResourceAccountService\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice} from './models/AdminDevice';\nimport {Cluster, ClusterData, ClusterParams} from './models/Cluster';\n\n\nexport class APIAdminResourceCluster extends APIResource {\n\n /**\n * /clusters/{id}\n */\n constructor(parent: API | APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('clusters', id);\n }\n\n // /clusters/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n}\n\nexport default APIAdminResourceCluster\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {AdminDevice, AdminDeviceData} from './models/AdminDevice';\nimport {AdminDeviceSession} from './models/AdminDeviceSession';\nimport {\n DeviceCleanupConfiguration,\n DeviceCleanupConfigurationData,\n DeviceLabelData,\n DeviceProperty\n} from './models/Device';\nimport {NoData, NoQueryParams, QueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDevice extends APIResource {\n\n /**\n * /admin/devices/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'devices', id);\n }\n\n // /admin/devices/{id}/cleanup-configuration\n cleanupConfiguration() {\n return new APIResource(this).push('cleanup-configuration');\n }\n\n // /admin/devices/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /admin/devices/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n // /admin/devices/{id}/queue\n queue() {\n return new APIList(this).push('queue');\n }\n\n}\n\nexport default APIAdminResourceDevice\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser, DeviceBrowserData} from './models/Browser';\nimport {DeviceModel, DeviceModelData} from './models/DeviceModel';\nimport {NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceDeviceModel extends APIResource {\n\n /**\n * /admin/device-models/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'device-models', id);\n }\n\n // /admin/device-models/{id}/browsers\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIAdminResourceDeviceModel;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {NoData} from '../models/HTTP';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\n\n\n@NonRequestable\nexport class InputFileset extends APIResource {\n\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('input-file-set');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files\n */\n files() {\n return new APIList(this).push('files');\n }\n\n /**\n * @remarks Endpoint /input-file-set/files.zip\n */\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n}\n\nexport default InputFileset\n","// Create image files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const IMAGE_FILES_FILTER = new FilterBuilder();\nIMAGE_FILES_FILTER.eq('state', 'READY');\nIMAGE_FILES_FILTER.in('mimetype', [\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif'\n]);\nIMAGE_FILES_FILTER.notlike('name', 'action-%%');\n","// Create non-media files filter\nimport FilterBuilder from '../../FilterBuilder';\n\nexport const NON_MEDIA_FILES_FILTER = new FilterBuilder();\nNON_MEDIA_FILES_FILTER.eq('state', 'READY');\nNON_MEDIA_FILES_FILTER.notin('mimetype', [\n // no images\n 'image/png', 'image/jpg', 'image/jpeg', 'image/webp', 'image/gif',\n\n // no videos\n 'video/mp4', 'video/avi', 'video/webm', 'video/ogg', 'video/mpeg'\n]);\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {UserFile} from './models/UserFile';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {IMAGE_FILES_FILTER} from './class/Images.filter';\nimport {NON_MEDIA_FILES_FILTER} from './class/NonMedia.filter';\n\n\nexport class APIListOutputFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n performance(): this {\n return this.params({\n tag: ['performance']\n })\n }\n\n images(): this {\n return this.filter(IMAGE_FILES_FILTER);\n }\n\n // Filter files out by non-media\n nonMediaFiles(): this {\n return this.filter(NON_MEDIA_FILES_FILTER);\n }\n\n // Filter files out by ready videos\n videos(): this {\n return this.params({\n filter: 's_state_eq_READY',\n tag: ['video']\n });\n }\n}\n\nexport default APIListOutputFiles;\n","import {API} from '../../API';\nimport {APIEntity} from '../APIEntity';\nimport {APIList} from '../APIList'\nimport {APIResource} from '../APIResource'\nimport {NonRequestable} from '../decorators/NonRequestable';\nimport {Screenshot} from '../models/Screenshot';\nimport {UserFile} from '../models/UserFile';\nimport {FilesQueryParams} from './FilesQueryParams';\nimport APIListOutputFiles from '../APIListOutputFiles';\n\n\n@NonRequestable\nexport class OutputFileset extends APIResource {\n\n /**\n * /output-file-set\n *\n * Constructor\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('output-file-set');\n }\n\n // /output-file-set/files\n files() {\n return new APIListOutputFiles(this);\n }\n\n // /output-file-set/files/{id}\n file(id: number) {\n return new APIResource(this).push('files', id);\n }\n\n // /output-file-set/files.zip\n filesZip() {\n return new APIResource(this).push('files.zip');\n }\n\n // /output-file-set/screenshots\n screenshots() {\n return new APIList(this).push('screenshots');\n }\n\n // /output-file-set/screenshots/{id}\n screenshot(id: number) {\n return new APIResource(this).push('screenshots', id);\n }\n\n // /output-file-set/screenshots/{id}/file/{id}\n screenshotFile(id: number) {\n return this.screenshot(id).push('file');\n }\n}\n\nexport default OutputFileset\n","import {Screenshot} from './models/Screenshot';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListScreenshots extends APIList {\n\n /**\n * screenshots\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('screenshots');\n }\n}\n\nexport default APIListScreenshots\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource'\nimport {InputFileset} from './class/InputFileset'\nimport {OutputFileset} from './class/OutputFileset'\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\nimport {\n DeviceSession,\n DeviceSessionCommand,\n DeviceSessionStep,\n SessionRunStepQueryParams,\n SessionStepQueryParams\n} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport APIListScreenshots from './APIListScreenshots';\n\n\nexport class APIResourceDeviceSessionCommon extends APIResource implements DeviceSessionCommon {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/commands\n commands() {\n return new APIList(this).push('commands');\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/screenshots\n screenshots() {\n return new APIListScreenshots(this);\n }\n\n // /device-sessions/{id}/screenshots/{id}\n screenshot(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('screenshots', id);\n }\n\n // /device-sessions/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n // /device-sessions/{id}/steps/{id}\n step(id: number | 'current') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('steps', id);\n }\n\n // /device-sessions/{id}/steps/current\n currentStep() {\n return this.step('current');\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n logs() {\n return new APIResource(this).push('logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n clusterLogs() {\n return new APIResource(this).push('cluster-logs').setRequestConfig({\n responseType: 'text'\n });\n }\n\n}\n\nexport default APIResourceDeviceSessionCommon\n","import {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {postAdminDeviceSessionChangeBillable} from './factory/postAdminDeviceSessionChangeBillable';\nimport {DeviceSessionCommon} from './interface/DeviceSessionCommon';\n\n\n/**\n * APIAdminResourceDevice\n *\n *\n * It will require more work to decouple from regular session\n */\nexport class APIAdminResourceDeviceSessionStandalone extends APIResourceDeviceSessionCommon implements DeviceSessionCommon {\n\n // /admin/device-sessions/{id}/changebillable\n changeBillable(billable: boolean) {\n return postAdminDeviceSessionChangeBillable(this, billable);\n }\n}\n\nexport default APIAdminResourceDeviceSessionStandalone;\n","import {APIResource} from '../APIResource';\nimport APIResourceDeviceSessionCommon from '../APIResourceDeviceSessionCommon';\nimport {DeviceSession} from '../models/DeviceSession';\n\nexport function postAdminDeviceSessionChangeBillable(parent: APIResourceDeviceSessionCommon, billable: boolean) {\n const apiResource = new APIResource(parent);\n const deviceSessionId = apiResource.last;\n\n return apiResource.restack('admin', 'device-sessions', deviceSessionId, 'changebillable').params({\n billable\n }).post();\n}\n\nexport default postAdminDeviceSessionChangeBillable;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {NoData} from './models/HTTP';\nimport {DeviceTimeParams, UserDeviceTime} from './models/UserDeviceTime';\n\nexport class APIAdminResourceDeviceTime extends APIList {\n\n /**\n * /admin/device-time\n */\n constructor(parent: APIAdminResource) {\n super(parent);\n this.push('admin', 'device-time');\n }\n}\n\nexport default APIAdminResourceDeviceTime\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Framework, FrameworkConfigData, FrameworkEditData} from './models/Framework';\nimport {NoQueryParams} from './models/HTTP';\nimport {ProjectJobConfig} from './models/ProjectJobConfig';\nimport {Role} from './models/Role';\n\nexport class APIAdminResourceFramework extends APIResource {\n\n /**\n * /admin/frameworks/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'frameworks', id);\n }\n\n // /admin/frameworks/{id}/config\n config() {\n return new APIResource(this).push('config');\n }\n\n // /admin/frameworks/{id}/required-roles\n requiredRoles() {\n return new APIList(this).push('required-roles');\n }\n\n}\n\nexport default APIAdminResourceFramework\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\n\nexport class APIAdminResourceLicense extends APIResource {\n\n /**\n * /licenses/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'licenses', id);\n }\n\n // /licenses/{id}/activate\n activate() {\n return new APIResource(this).push('activate');\n }\n\n // /licenses/{id}/deactivate\n deactivate() {\n return new APIResource(this).push('deactivate');\n }\n\n // /licenses/{id}/resend\n resend() {\n return new APIResource(this).push('resend');\n }\n\n // /licenses/{id}/download\n download() {\n return new APIResource(this).push('download');\n }\n\n}\n\nexport default APIAdminResourceLicense\n","import {APIEntity} from '../APIEntity';\nimport {APIResource} from '../APIResource';\nimport {BuildLogsData, BuildLogsParams} from '../models/UserFile';\n\nexport function postDeviceRunIds(parent: APIEntity, name: string, ids?: Array) {\n const a = new APIResource(parent).push(name);\n\n if (ids != null) {\n a.params<'deviceRunIds'>({\n deviceRunIds: ids\n });\n }\n\n return a.post();\n}\n\nexport default postDeviceRunIds;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun, RunChangeBillableParams, RunChangePriorityParams} from './models/AdminTestRun';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIAdminResourceRunStandalone extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/changebillable\n changeBillable(billable: boolean) {\n return new APIResource(this).push('changebillable').post().params({\n billable\n });\n }\n\n // /runs/{id}/changepriority\n changePriority(priority?: number) {\n const resource = new APIResource(this).push('changepriority');\n if (priority) {\n resource.post().data({\n priority\n });\n }\n return resource;\n }\n\n // /admin/runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n}\n\nexport default APIAdminResourceRunStandalone;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIResource} from './APIResource'\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceActivateData} from './models/Service';\n\n\nexport class APIAdminResourceService extends APIResource {\n\n /**\n * /services/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'services', id);\n }\n\n // /services/{id}/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n}\n\nexport default APIAdminResourceService\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccountService, AccountServiceData} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Role, RoleData} from './models/Role';\nimport {User, UserUpdateAccount} from './models/User';\n\n@NonRequestable\nexport class APIAdminResourceUserAccount extends APIResource {\n\n /**\n * /account\n */\n constructor(parent: APIAdminResourceUser) {\n super(parent);\n this.push('account');\n }\n\n // /account/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /account/roles/{id}\n role(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('roles', id);\n }\n\n // /account-services\n services() {\n const a = new APIList(this);\n a.last += '-services';\n return a;\n }\n\n // /update-account\n update() {\n const a = new APIResource(this);\n a.last = 'update-account';\n return a.post();\n }\n\n}\n\nexport default APIAdminResourceUserAccount\n","import {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {InputFileset} from './class/InputFileset';\nimport {OutputFileset} from './class/OutputFileset';\nimport {DeviceSessionStandalone} from './interface/DeviceSessionStandalone';\nimport {Connection, ConnectionData} from './models/Connection';\nimport {DeviceSession, DeviceSessionRelease} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {VisualTest} from './models/VisualTest';\n\nexport class APIResourceDeviceSessionStandalone extends APIResource implements DeviceSessionStandalone {\n\n /**\n * /device-sessions/{id}\n */\n constructor(parent: APIResourceUser | APIAdminResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-sessions', id);\n }\n\n // /device-sessions/{id}/connections\n connections() {\n return new APIList(this).push('connections');\n }\n\n // /device-sessions/{id}/connections/{id}\n connection(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('connections', id);\n }\n\n // /device-sessions/{id}/input-file-set\n input() {\n return new InputFileset(this);\n }\n\n // /device-sessions/{id}/output-file-set\n output() {\n return new OutputFileset(this);\n }\n\n // /device-sessions/{id}/release\n release() {\n return new APIResource(this).push('release').post();\n }\n\n // /device-sessions/{id}/visual-tests/images\n visualTestsImages() {\n return new APIList(this).push('visual-tests', 'images');\n }\n\n}\n\nexport default APIResourceDeviceSessionStandalone\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIAdminResourceUserAccount} from './APIAdminResourceUserAccount';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {License} from './models/License';\nimport {Role, RoleData, RoleParams} from './models/Role';\nimport {User} from './models/User';\n\n\n@NonRequestable\nexport class APIAdminResourceUser extends APIResource {\n\n /**\n * /admin/users/{id}\n */\n constructor(parent: APIAdminResource, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('admin', 'users', id);\n }\n\n // /admin/users/{id}/disable\n disable() {\n return new APIResource(this).push('disable');\n }\n\n // /admin/users/{id}/enable\n enable() {\n return new APIResource(this).push('enable');\n }\n\n // /admin/users/{id}/licenses\n licenses() {\n return new APIList(this).push('licenses');\n }\n\n // /admin/users/{id}/resend-activation\n resendActivation() {\n return new APIResource(this).push('resend-activation').post();\n }\n\n // /admin/users/{id}/account\n account() {\n return new APIAdminResourceUserAccount(this);\n }\n\n // /admin/users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /admin/users/{id}/roles\n roles() {\n return new APIList(this).push('roles');\n }\n\n // /admin/users/{id}/roles/{id}\n role(id: number) {\n return new APIResource(this).push('roles', id);\n }\n\n}\n\nexport default APIAdminResourceUser;\n","import {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccessGroup} from './models/AccessGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {SharedResource} from './models/SharedResource';\nimport {User, UserData} from './models/User';\n\nexport class APIResourceAccessGroup extends APIResource {\n\n /**\n * /access-groups/{id}\n *\n */\n constructor(parent: APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('access-groups', id);\n }\n\n // /access-groups/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /access-groups/{id}/users/{id}\n user(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('users', id);\n }\n\n // /access-groups/{id}/resources\n resources() {\n return new APIList(this).push('resources');\n }\n\n // /access-groups/{id}/resources/{id}\n resource(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('resources', id);\n }\n\n}\n\nexport default APIResourceAccessGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport APIResourceUser from './APIResourceUser';\nimport {Device, DeviceProperty} from './models/Device';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupParams, DeviceGroupSelectorData} from './models/DeviceGroup';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {ShareData, SharedResource} from './models/SharedResource';\n\nexport class APIResourceDeviceGroup extends APIResource {\n\n /**\n * /device-groups/{id}\n */\n constructor(parent: APIAdminResource | APIResourceUser | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('device-groups', id);\n }\n\n // /device-groups/{id}/devices\n devices() {\n return new APIList(this).push('devices');\n }\n\n // /device-groups/{id}/devices/{id}\n device(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('devices', id);\n }\n\n // /device-groups/{id}/selectors\n selectors() {\n return new APIList(this).push('selectors');\n }\n\n // /device-groups/{id}/selectors/{id}\n selector(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('selectors', id);\n }\n\n // /device-groups/{id}/share\n share() {\n return new APIList(this).push('share');\n }\n\n}\n\nexport default APIResourceDeviceGroup\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport {Property} from './models/Property';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {FileSizeData, UserFile, UserFileTag} from './models/UserFile';\n\n\nexport class APIResourceFile extends APIResource {\n\n /**\n * /files/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('files', id);\n }\n\n // use this to download file content\n // /files/{id}/file\n file() {\n return new APIResource(this).push('file');\n }\n\n // /files/{id}/icon\n icon() {\n return new APIResource(this).push('icon');\n }\n\n // /files/{id}/tags\n tags() {\n return new APIList(this).push('tags');\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n property(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('properties', id);\n }\n\n}\n\nexport default APIResourceFile\n","import {NoData} from './models/HTTP';\nimport {TestCaseRun} from './models/TestCaseRun';\nimport APIList, {APIListQuery} from './APIList';\nimport {SessionQueryParams} from './models/DeviceSession';\nimport APIResourceDeviceSessionCommon from './APIResourceDeviceSessionCommon';\n\n\nexport class APIListTestCaseRuns extends APIList {\n\n /**\n * /test-case-runs\n */\n constructor(parent: APIResourceDeviceSessionCommon) {\n super(parent);\n this.push('test-case-runs');\n }\n}\n\nexport default APIListTestCaseRuns\n","import {APIResource} from './APIResource';\nimport {APIResourceDeviceSessionCommon} from './APIResourceDeviceSessionCommon';\nimport {DeviceSession as DeviceSessionModel, SessionQueryParams} from './models/DeviceSession';\nimport APIListTestCaseRuns from './APIListTestCaseRuns';\nimport {APIListQuery} from './APIList';\n\nexport class APIResourceDeviceSession extends APIResourceDeviceSessionCommon {\n\n // /device-sessions/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /device-sessions/{id}/retry\n retry() {\n return new APIResource(this).push('retry').post();\n }\n\n // /device-sessions/{id}/test-case-runs\n testCaseRuns() {\n return new APIListTestCaseRuns(this);\n }\n}\n\nexport default APIResourceDeviceSession\n","import {DeviceSession} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData} from './models/HTTP';\nimport APIList from './APIList';\nimport APIResourceRunCommon from './APIResourceRunCommon';\n\n\nexport class APIListTestRunDeviceSessions extends APIList {\n\n /**\n * device-sessions\n */\n constructor(parent: APIResourceRunCommon) {\n super(parent);\n this.push('device-sessions');\n }\n}\n\nexport default APIListTestRunDeviceSessions\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {postDeviceRunIds} from './factory/postDeviceRunIds';\nimport {AdminTestRun} from './models/AdminTestRun';\nimport {DeviceSessionStep} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {RunData, RunQueryParam, TestRun, TestRunData} from './models/TestRun';\nimport {TestRunDataAvailability, TestRunDataAvailabilityQueryParams} from './models/TestRunDataAvailability';\nimport {UserFile} from './models/UserFile';\nimport APIListTestRunDeviceSessions from './APIListTestRunDeviceSessions';\n\n\nexport class APIResourceRunCommon extends APIResource {\n\n /**\n * /runs/{id}\n */\n constructor(parent: APIEntity | API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('runs', id);\n }\n\n // /runs/{id}/abort\n abort() {\n return new APIResource(this).push('abort').post();\n }\n\n // /runs/{id}/build-logs.zip\n buildLogsZip(ids?: Array) {\n return postDeviceRunIds(this, 'build-logs.zip', ids);\n }\n\n // /runs/{id}/data-availability\n dataAvailability() {\n return new APIResource(this).push('data-availability');\n }\n\n // /runs/{id}/device-sessions\n deviceSessions() {\n return new APIListTestRunDeviceSessions(this);\n }\n\n // /runs/{id}/files.zip\n filesZip(ids?: Array) {\n return postDeviceRunIds(this, 'files.zip', ids);\n }\n\n // /runs/{id}/logs.zip\n logsZip(ids?: Array) {\n return postDeviceRunIds(this, 'logs.zip', ids);\n }\n\n // /runs/{id}/performance.zip\n performanceZip(ids?: Array) {\n return postDeviceRunIds(this, 'performance.zip', ids);\n }\n\n // /runs/{id}/retry\n retry(ids?: Array) {\n return postDeviceRunIds(this, 'retry', ids).setRequestConfig({\n timeout: 0\n });\n }\n\n // /runs/{id}/screenshots.zip\n screenshotsZip(ids?: Array) {\n return postDeviceRunIds(this, 'screenshots.zip', ids);\n }\n\n // /runs/{id}/steps\n steps() {\n return new APIList(this).push('steps');\n }\n\n}\n\nexport default APIResourceRunCommon\n","import {APIResourceDeviceSession} from './APIResourceDeviceSession'\nimport {APIResourceRunCommon} from './APIResourceRunCommon'\nimport {CollectionQueryParams} from './models/HTTP';\n\nexport class APIResourceRun extends APIResourceRunCommon {\n\n // /runs/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n}\n\nexport default APIResourceRun\n","import {API} from '../API';\nimport {APIAdminResource} from './APIAdminResource';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceRun} from './APIResourceRun'\nimport {APIResourceUser} from './APIResourceUser';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Project} from './models/Project';\nimport {ShareData, SharedResource} from './models/SharedResource';\nimport {TestRun} from './models/TestRun';\n\nexport class APIResourceProject extends APIResource {\n\n /**\n * /projects/{id}\n */\n constructor(parent: API | APIAdminResource | APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('projects', id);\n }\n\n // /projects/{id}/runs\n runs() {\n return new APIList(this).push('runs');\n }\n\n // /projects/{id}/runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n share() {\n return new APIList(this).push('share');\n }\n\n // /unarchive\n unarchive() {\n return new APIResource(this).push('unarchive');\n }\n\n}\n\nexport default APIResourceProject\n","import {API} from '../API';\nimport {APIAdminListDevices} from './APIAdminListDevices';\nimport {APIAdminListRuns} from './APIAdminListRuns';\nimport {APIAdminListServices} from './APIAdminListServices';\nimport {APIAdminListStatistics} from './APIAdminListStatistics';\nimport APIAdminResourceAccount from './APIAdminResourceAccount';\nimport {APIAdminResourceAccountService} from './APIAdminResourceAccountService';\nimport {APIAdminResourceCluster} from './APIAdminResourceCluster';\nimport {APIAdminResourceDevice} from './APIAdminResourceDevice';\nimport {APIAdminResourceDeviceModel} from './APIAdminResourceDeviceModel';\nimport {APIAdminResourceDeviceSessionStandalone} from './APIAdminResourceDeviceSessionStandalone';\nimport {APIAdminResourceDeviceTime} from './APIAdminResourceDeviceTime';\nimport {APIAdminResourceFramework} from './APIAdminResourceFramework';\nimport {APIAdminResourceLicense} from './APIAdminResourceLicense';\nimport {APIAdminResourceRunStandalone} from './APIAdminResourceRunStandalone';\nimport {APIAdminResourceService} from './APIAdminResourceService';\nimport {APIAdminResourceUser} from './APIAdminResourceUser';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceFile} from './APIResourceFile'\nimport {APIResourceProject} from './APIResourceProject';\nimport {NonRequestable} from './decorators/NonRequestable';\nimport {AccessGroup, AccessGroupData} from './models/AccessGroup';\nimport {Account} from './models/Account';\nimport {AccountService} from './models/AccountService';\nimport {Activity} from './models/Activity';\nimport {AdminDeviceSession, AdminInteractiveDeviceSession} from './models/AdminDeviceSession';\nimport {AdminDeviceType, DeviceTypeData} from './models/AdminDeviceType';\nimport {AdminEmail} from './models/AdminEmail';\nimport {Administrator} from './models/Administrator';\nimport {AdminOverview} from './models/AdminOverview';\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {Browser, BrowserData} from './models/Browser';\nimport {DeviceModelCriterion, DeviceModelCriterionData} from './models/DeviceModelCriterion';\nimport {DeviceModelPool, DeviceModelPoolData} from './models/DeviceModelPool';\nimport {Framework, FrameworkData} from './models/Framework';\nimport {License, LicenseData} from './models/License';\nimport {Maintenance, MaintenanceData} from './models/Maintenance';\nimport {Project} from './models/Project';\nimport {Role, RoleParams} from './models/Role';\nimport {Settings, SettingsParams} from './models/Settings';\nimport {User, UserData, UserParams} from './models/User';\nimport {DeviceTimeSummaryParams, UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {UserFile, UserFileData, UserFileParams} from './models/UserFile';\nimport {Cluster} from './models/Cluster';\nimport {DeviceProperty} from './models/Device';\nimport {DeviceGroup} from './models/DeviceGroup';\nimport {DeviceModel} from './models/DeviceModel';\nimport {DeviceProblem} from './models/DeviceProblem';\nimport {DeviceStatus} from './models/DeviceStatus';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n@NonRequestable\nexport class APIAdminResource extends APIResource {\n\n /**\n * /admin\n */\n constructor(parent: API) {\n super(parent);\n }\n\n // /access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /admin/accounts\n accounts() {\n return new APIList(this).push('admin', 'accounts');\n }\n\n // /admin/accounts/{id}\n account(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIAdminResourceAccount(this, id);\n }\n\n // /admin/account-services\n accountServices() {\n return new APIList(this).push('admin', 'account-services');\n }\n\n // /admin/account-services/{id}\n accountService(id: number) {\n return new APIAdminResourceAccountService(this, id);\n }\n\n // activities\n activities() {\n return new APIList(this).push('admin', 'activities');\n }\n\n // admin/administrators\n administrators() {\n return new APIList(this).push('admin', 'administrators');\n }\n\n // /admin/billing-periods\n billingPeriods() {\n return new APIList(this).push('admin', 'billing-periods');\n }\n\n // /admin/billing-periods/{id}\n billingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'billing-periods', id);\n }\n\n // /admin/browsers\n browsers() {\n return new APIList(this).push('admin', 'browsers');\n }\n\n // /admin/browsers/{id}\n browser(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'browsers', id);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /admin/devices\n devices() {\n return new APIAdminListDevices(this);\n }\n\n // /admin/devices/{id}\n device(id: number) {\n return new APIAdminResourceDevice(this, id);\n }\n\n devicesForModel(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n const apiList = this.devices();\n apiList.params({\n filter: 'deviceModelId_eq_' + id\n });\n return apiList;\n }\n\n // /admin/device/statuses\n deviceStatuses() {\n return new APIList(this).push('admin', 'device', 'statuses');\n }\n\n // /admin/device-models\n deviceModels() {\n return new APIList(this).push('admin', 'device-models');\n }\n\n // /admin/device-models/{id}\n deviceModel(id: number) {\n return new APIAdminResourceDeviceModel(this, id);\n }\n\n // /admin/device-problems\n deviceProblems() {\n return new APIList(this).push('admin', 'device-problems');\n }\n\n // /admin/device-model-criteria\n deviceModelCriterias() {\n return new APIList(this).push('admin', 'device-model-criteria');\n }\n\n // /admin/device-model-criteria/{id}\n deviceModelCriteria(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('admin', 'device-model-criteria', id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('admin', 'device-sessions');\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIAdminResourceDeviceSessionStandalone(this, id);\n }\n\n // /device-time\n deviceTime() {\n return new APIAdminResourceDeviceTime(this);\n }\n\n // /device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('admin', 'device-time-summary');\n }\n\n // /device-types\n deviceTypes() {\n return new APIList(this).push('admin', 'device-types');\n }\n\n // /device-types/{id}\n deviceType(id: number) {\n return new APIResource(this).push('admin', 'device-types', id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /admin/emails\n emails() {\n return new APIList(this).push('admin', 'emails');\n }\n\n // /admin/emails/{id}/resend\n resendEmail(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'emails', id, 'resend').post();\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /admin/frameworks\n frameworks() {\n return new APIList(this).push('admin', 'frameworks');\n }\n\n // /admin/frameworks/{id}\n framework(id: number) {\n return new APIAdminResourceFramework(this, id);\n }\n\n // /admin/frameworks/available-labels\n frameworkAvailableLabels() {\n const apiList = this.frameworks();\n apiList.push('available-labels');\n return apiList;\n }\n\n // /admin/interactive-queue\n interactiveQueue() {\n return new APIList(this).push('admin', 'interactive-queue');\n }\n\n // /admin/licenses\n licenses() {\n return new APIList(this).push('admin', 'licenses');\n }\n\n // /admin/licenses/{id}\n license(id: number) {\n return new APIAdminResourceLicense(this, id);\n }\n\n // /admin/maintenance\n maintenance() {\n return new APIResource(this).push('admin', 'maintenance');\n }\n\n // /admin/overview\n overview() {\n return new APIResource(this).push('admin', 'overview');\n }\n\n pools() {\n return new APIList(this).push('admin', 'pools');\n }\n\n pool(id: number) {\n return new APIResource(this).push('admin', 'pools', id);\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /admin/roles\n roles() {\n return new APIList(this).push('admin', 'roles');\n }\n\n // /admin/runs\n runs() {\n return new APIAdminListRuns(this);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIAdminResourceRunStandalone(this, id);\n }\n\n // /admin/samples\n samples() {\n return new APIList>(this).push('admin', 'samples');\n }\n\n // /admin/samples/{id}\n sample(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n return new APIResource(this).push('admin', 'samples', id);\n }\n\n // /admin/services\n services() {\n return new APIAdminListServices(this);\n }\n\n // /admin/services/{id}\n service(id: number) {\n return new APIAdminResourceService(this, id);\n }\n\n // /admin/settings\n settings() {\n return new APIResource(this).push('admin', 'settings');\n }\n\n // /admin/statistics\n statistics() {\n return new APIAdminListStatistics(this);\n }\n\n // /users\n users() {\n return new APIList(this).push('users');\n }\n\n // /admin/users\n createUser() {\n return new APIList(this).push('admin', 'users').post();\n }\n\n // /users/{id}\n user(id: number) {\n return new APIAdminResourceUser(this, id);\n }\n\n}\n\nexport default APIAdminResource;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {DesktopBrowserCapabilities} from './models/DesktopBrowserCapabilities';\nimport {Device, DevicesQueryParams} from './models/Device';\nimport {DevicePicker} from './models/DeviceFilter';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\n\n\nexport class APIListDevices extends APIList {\n\n /**\n * /devices\n */\n constructor(parent: API) {\n super(parent);\n this.push('devices');\n }\n\n // /devices/filters\n filters() {\n return new APIResource>(this).push('filters');\n }\n\n // /devices/desktop-browser-capabilities\n desktopBrowserCapabilities() {\n return new APIResource(this).push('desktop-browser-capabilities');\n }\n\n}\n\nexport default APIListDevices;\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {CollectionQueryParams} from './models/HTTP';\nimport {Property, PropertyData} from './models/Property';\n\n\nexport class APIListProperties extends APIList {\n\n /**\n * /properties\n */\n constructor(parent: API) {\n super(parent);\n this.push('properties');\n }\n\n maintenance() {\n return new APIList(this).params({\n filter: 'name_eq_CLOUD_HEADER_ANNOUNCEMENT',\n limit: 1,\n sort: 'updateTime_d'\n });\n }\n\n}\n\nexport default APIListProperties\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Service, ServiceData} from './models/Service';\n\n\nexport class APIListServices extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['POST'];\n\n /**\n * /services\n */\n constructor(parent: API | APIResourceUser) {\n super(parent);\n this.push('services');\n }\n\n // /services/available\n available() {\n return new APIList(this).push('available');\n }\n\n active() {\n const apiList = new APIList(this);\n if (this.first === 'me') {\n apiList.push('active');\n } else {\n apiList.params({\n notArchived: true\n });\n }\n return apiList;\n }\n\n byPrice() {\n return new APIList(this).sort('centPrice');\n }\n\n availableByPrice() {\n return new APIList(this).push('available').sort('centPrice');\n }\n\n}\n\nexport default APIListServices\n","import {Method} from 'axios';\nimport {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {\n User,\n UserActivateData,\n UserData,\n UserPasswordData,\n UserRecoveryQueryParams,\n} from './models/User';\n\n\nexport class APIListUsers extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET', 'POST'];\n\n /**\n * /users\n */\n constructor(parent: API) {\n super(parent);\n this.push('users');\n }\n\n // /users/activate\n activate() {\n return new APIResource(this).push('activate').post();\n }\n\n // /users/recoveries\n recoveries() {\n return new APIResource(this).push('recoveries');\n }\n\n // /users/passwordRecovery\n passwordRecovery() {\n return new APIResource(this).push('password-recovery');\n }\n\n}\n\nexport default APIListUsers;\n","import {APIResource} from './APIResource'\nimport {BillingPeriod} from './models/BillingPeriod';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {APIResourceAccount} from './APIResourceAccount';\n\n\n\n\nexport class APIResourceBillingPeriod extends APIResource {\n\n /**\n * /billing-periods/{id}\n */\n constructor(parent: APIResourceAccount, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('billing-periods', id);\n }\n\n // /billing-periods/{id}/receipt\n receipt() {\n return new APIResource(this).push('receipt').setRequestConfig({\n responseType: 'arraybuffer'\n });\n }\n\n}\n\nexport default APIResourceBillingPeriod\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceBillingPeriod} from './APIResourceBillingPeriod';\nimport {\n Account,\n AccountData,\n AccountSessionUsage,\n AccountSessionUsageSummary,\n AccountUserSessionUsage\n} from './models/Account';\nimport {AccountConcurrencyStatusMap} from './models/AccountConcurrencyStatusMap';\nimport {AccountPreferences} from './models/AccountPreference';\nimport {AccountService, ServicePaymentStatus} from './models/AccountService';\nimport {AccountServicePayment} from './models/AccountServicePayment';\nimport {BillingPeriod, BillingPeriodQueryParams} from './models/BillingPeriod';\nimport {DeviceTimeSummaryQueryParams} from './models/Device';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams, SimpleCollectionResponse} from './models/HTTP';\nimport {User, UserData} from './models/User';\nimport {DeviceTimeQueryParams, UserDeviceTime} from './models/UserDeviceTime';\nimport {UserDeviceTimeSummary} from './models/UserDeviceTimeSummary';\nimport {VisualTestAccess} from './models/VisualTest';\n\n\nexport class APIResourceAccount extends APIResource {\n\n /**\n * /accounts/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('accounts', id);\n }\n\n // /accounts/{id}/concurrency-status\n concurrencyStatus() {\n return new APIResource(this).push('concurrency-status');\n }\n\n // /accounts/{id}/device-time\n deviceTime() {\n return new APIList(this).push('device-time');\n }\n\n // /accounts/{id}/device-time-summary\n deviceTimeSummary() {\n return new APIList(this).push('device-time-summary');\n }\n\n // /accounts/{id}/preferences\n preferences() {\n return new APIResource>(this).push('preferences');\n }\n\n // /accounts/{id}/users\n users() {\n return new APIList(this).push('users');\n }\n\n // /accounts/{accountId}/users/{userId}\n removeUser(id: number) {\n return new APIResource(this).push('users', id);\n }\n\n // /accounts/{accountId}/users/{userId}/disable\n disableUser(id: number) {\n return new APIResource(this).push('users', id, 'disable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/enable\n enableUser(id: number) {\n return new APIResource(this).push('users', id, 'enable').post();\n }\n\n // /accounts/{accountId}/users/{userId}/resend-activation\n resendActivation(id: number) {\n return new APIResource(this).push('users', id, 'resend-activation').post();\n }\n\n // /accounts/{accountId}/billing-periods\n billingPeriods() {\n return new APIList(this).push('billing-periods');\n }\n\n // /accounts/{accountId}/billing-periods/{id}\n billingPeriod(id: number) {\n return new APIResourceBillingPeriod(this, id);\n }\n\n // /account-services/{id}/billing-period\n serviceBillingPeriod(id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n return new APIResource(this).push('account-services', id, 'billing-period');\n }\n\n // /accounts/{accountId}/visual-test/access\n visualTestAccess() {\n return new APIResource(this).push('visual-tests', 'access');\n }\n\n // /accounts/{accountId}/account-services\n accountServices() {\n return new APIList(this).push('account-services');\n }\n\n // /accounts/{accountId}/account-services/{id}\n accountService(id: number) {\n return new APIList(this).push('account-services', id);\n }\n\n // /accounts/{accountId}/services\n services() {\n return new APIResource(this).push('services');\n }\n\n // /accounts/{accountId}/user-usage-details\n userUsageDetails() {\n return new APIList(this).push('user-usage-details');\n }\n\n // /accounts/{accountId}/usage-details\n usageDetails() {\n return new APIList(this).push('usage-details');\n }\n\n // /accounts/{accountId}/usage-details-summary\n usageDetailsSummary() {\n return new APIResource(this).push('usage-details-summary');\n }\n\n}\n\nexport default APIResourceAccount;\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Broker} from './models/Broker';\nimport {NoData, NoQueryParams} from './models/HTTP';\n\nexport class APIResourceBroker extends APIResource {\n\n /**\n * /broker\n */\n constructor(parent: API) {\n\n super(parent);\n this.push('broker');\n }\n\n // /broker/hubs\n hubs() {\n return new APIList(this).push('hubs');\n }\n\n}\n\nexport default APIResourceBroker\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {Browser} from './models/Browser';\nimport {Device, DeviceProperiesData, DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams} from './models/HTTP';\n\n\nexport class APIResourceDevice extends APIResource {\n\n /**\n * /devices/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('devices', id);\n }\n\n // /devices/{id}/properties\n properties() {\n return new APIList(this).push('properties');\n }\n\n browsers() {\n return new APIList(this).push('browsers');\n }\n\n}\n\nexport default APIResourceDevice\n","import {API} from '../API';\nimport {APIList} from './APIList'\nimport {APIResource} from './APIResource'\nimport {DeviceProperty} from './models/Device';\nimport {CollectionBasicQueryParams, NoQueryParams} from './models/HTTP';\nimport {LabelData, LabelGroup} from './models/LabelGroup';\n\nexport class APIResourceLabelGroup extends APIResource {\n\n /**\n * /label-groups/{id}\n */\n constructor(parent: API, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('label-groups', id);\n }\n\n // /label-groups/{id}/labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /label-groups/{id}/labels/{id}\n label(id: number) {\n return new APIResource(this).push('labels', id);\n }\n\n}\n\nexport default APIResourceLabelGroup\n","import {API} from '../API';\nimport {APIEntity} from './APIEntity';\nimport {APIList} from './APIList';\nimport {FilesQueryParams} from './class/FilesQueryParams';\nimport {FileData, UploadObj, UserFile} from './models/UserFile';\n\n\nexport class APIListFiles extends APIList {\n\n /**\n * /files\n */\n constructor(parent: APIEntity | API) {\n super(parent);\n this.push('files');\n }\n\n /**\n * Simplifies process of uploading\n * /files\n */\n upload(obj: UploadObj): this {\n // For NodeJS\n // @ts-ignore\n if (global.isNodeJs) {\n return this.nodeUpload(obj);\n } else {\n /**\n * Browser\n * @todo\n */\n throw new Error('Not supported yet!');\n }\n }\n\n private nodeUpload(file: UploadObj): this {\n const fs = require('fs');\n const FormData = require('form-data');\n const form = new FormData();\n form.append('file', fs.createReadStream(file.dir + '/' + file.filename), {\n filename: file.filename\n });\n return this.post().headers(form.getHeaders()).data(form);\n }\n\n}\n\nexport default APIListFiles\n","import {APIList} from './APIList'\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIResource} from './APIResource'\n\n\nexport class APIResourceChannel extends APIResource {\n\n /**\n * /users/{id}/notifications/channels/{type}\n */\n constructor(parent: APIListNotifications, type: string) {\n if (type == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('channels', type);\n }\n\n // /channels/{type}/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n}\n\nexport default APIResourceChannel;\n","import {APIList} from './APIList';\nimport {APIResourceChannel} from './APIResourceChannel';\nimport {APIResourceUser} from './APIResourceUser';\nimport {Enum} from './models/Enum';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './models/HTTP';\nimport {Notification, NotificationsData} from './models/Notification';\n\n\nexport class APIListNotifications extends APIList {\n\n /**\n * /notifications\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('notifications');\n }\n\n // /notifications/scopes\n scopes() {\n return new APIList(this).push('scopes');\n }\n\n // /notifications/channels\n channels() {\n return new APIList(this).push('channels');\n }\n\n channel(type: string) {\n return new APIResourceChannel(this, type);\n }\n\n}\n\nexport default APIListNotifications\n","import {APIList} from './APIList';\nimport {APIResource} from './APIResource';\nimport {APIResourceUser} from './APIResourceUser';\nimport {\n RunsConfigParams,\n TestRun,\n TestRunConfig,\n TestRunsQueryParams\n} from './models/TestRun';\n\n\nexport class APIListRuns extends APIList {\n\n /**\n * /runs\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('runs');\n }\n\n // /runs/config\n config() {\n return new APIResource(this).push('config');\n }\n\n}\n\nexport default APIListRuns\n","import {Method} from 'axios';\nimport {APIList} from './APIList';\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData} from './models/HTTP';\nimport {SmartbearTunnel, TunnelQueryParams} from './models/SmartbearTunnel';\n\n\nexport class APIListSmartbearTunnels extends APIList {\n\n protected ALLOWED_HTTP_METHODS: Array = ['GET'];\n\n /**\n * /tunnels\n */\n constructor(parent: APIResourceUser) {\n super(parent);\n this.push('tunnels');\n }\n\n /**\n * Sets tunnel activity parameter\n */\n active(active: boolean): this {\n return this.params({active: active});\n }\n}\n\nexport default APIListSmartbearTunnels;\n","\nimport {APIResource} from './APIResource'\nimport {APIResourceUser} from './APIResourceUser';\nimport {NoData, NoQueryParams} from './models/HTTP';\nimport {Message} from './models/Message';\nimport {Notification, NotificationData} from './models/Notification';\n\nexport class APIResourceNotification extends APIResource {\n\n /**\n * /notifications/{id}\n */\n constructor(parent: APIResourceUser, id: number) {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n this.push('notifications', id);\n }\n\n // /notifications/{id}/test\n test() {\n return new APIResource(this).push('test');\n }\n\n}\n\nexport default APIResourceNotification\n","import {API} from '../API';\nimport {APIList} from './APIList';\nimport {APIListFiles} from './APIListFiles';\nimport {APIListNotifications} from './APIListNotifications';\nimport {APIListRuns} from './APIListRuns';\nimport {APIListServices} from './APIListServices';\nimport {APIListSmartbearTunnels} from './APIListSmartbearTunnels';\nimport {APIResource} from './APIResource';\nimport {APIResourceAccessGroup} from './APIResourceAccessGroup';\nimport {APIResourceDeviceGroup} from './APIResourceDeviceGroup';\nimport {APIResourceDeviceSessionStandalone} from './APIResourceDeviceSessionStandalone';\nimport {APIResourceFile} from './APIResourceFile';\nimport {APIResourceNotification} from './APIResourceNotification';\nimport {APIResourceProject} from './APIResourceProject';\nimport {AccessGroup, AccessGroupsData} from './models/AccessGroup';\nimport {DeviceGroup, DeviceGroupData, DeviceGroupIdsData, DeviceGroupWithPublicParams} from './models/DeviceGroup';\nimport {DeviceStatistics} from './models/DeviceStatistics';\nimport {DeviceUsage} from './models/DeviceUsage';\nimport {Framework} from './models/Framework';\nimport {Project, UserProjectData, UserProjectQueryParams} from './models/Project';\nimport {User, UserDeleteData} from './models/User';\nimport {UiPreferencesData, UserPreference, UserPreferenceData} from './models/UserPreference';\nimport {StatisticQueryParams, UserStatistics} from './models/UserStatistics';\nimport {DeviceSession, DeviceSessionData, DeviceSessionQueryParams} from './models/DeviceSession';\nimport {CollectionBasicQueryParams, NoData, NoQueryParams, QueryParams} from './models/HTTP';\nimport {DeviceStatisticQueryParam, DeviceUsageQueryParams} from './models/Device';\n\nexport class APIResourceUser extends APIResource {\n\n /**\n * /users/{id} | /me\n */\n constructor(parent: API, id: number | 'me') {\n if (id == null) {\n throw new Error('Resource ID cannot be null!');\n }\n\n super(parent);\n\n if (id === 'me') {\n this.push('me');\n } else if (typeof id === 'number') {\n this.push('users', id);\n } else {\n throw new TypeError('id is not a number');\n }\n }\n\n // /users/{id}/services\n services() {\n return new APIListServices(this);\n }\n\n // /users/{id}/device-groups\n deviceGroups() {\n return new APIList>(this).push('device-groups');\n }\n\n // /users/{id}/device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /users/{id}/device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /users/{id}/device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSessionStandalone(this, id);\n }\n\n // /users/{id}/mark-account-owner\n markAccountOwner() {\n return new APIResource(this).push('mark-account-owner').post();\n }\n\n // /users/{id}/projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /users/{id}/projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /users/{id}/files\n files() {\n return new APIListFiles(this);\n }\n\n // /users/{id}/files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /users/{id}/runs\n runs() {\n return new APIListRuns(this);\n }\n\n // /users/{id}/available-frameworks\n availableFrameworks() {\n return new APIList(this).push('available-frameworks');\n }\n\n /**\n * /users/{id}/reset-api-key\n */\n resetApiKey() {\n return new APIResource(this).push('reset-api-key');\n }\n\n // /users/{id}/restore\n restore() {\n return new APIResource(this).push('restore');\n }\n\n // /users/{id}/feedback\n feedback() {\n return new APIResource(this).push('feedback');\n }\n\n // /users/{id}/notifications\n notifications() {\n return new APIListNotifications(this);\n }\n\n // /users/{id}/notifications/{id}\n notification(id: number) {\n return new APIResourceNotification(this, id);\n }\n\n // /users/{id}/preferences\n preferences() {\n return new APIResource(this).push('preferences');\n }\n\n // /users/{id}/ui-preferences\n uiPreferences() {\n return new APIResource(this).push('ui-preferences');\n }\n\n // /users/{id}/device-usage\n deviceUsage() {\n return new APIList(this).push('device-usage');\n }\n\n // /users/{id}/statistics\n statistics() {\n return new APIResource(this).push('statistics');\n }\n\n // /users/{id}/device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /users/{id}/access-groups\n accessGroups() {\n return new APIList(this).push('access-groups');\n }\n\n // /users/{id}/access-groups/{id}\n accessGroup(id: number) {\n return new APIResourceAccessGroup(this, id);\n }\n\n // /users/{id}/tunnels/{id}\n smartbearTunnel(id: number) {\n return new APIResource(this).push('tunnels', id);\n }\n\n // /users/{id}/tunnels\n smartbearTunnels() {\n return new APIListSmartbearTunnels(this);\n }\n\n deleteAccount() {\n return new APIResource(this).push('delete');\n }\n}\n\nexport default APIResourceUser\n","import {API} from '../API';\nimport {APIResource} from './APIResource'\nimport {NoQueryParams} from './models/HTTP';\nimport {LoginData, User} from './models/User';\n\nexport class APIResourceUserSession extends APIResource {\n\n // /user-sessions\n constructor(parent: API) {\n super(parent);\n this.push('user-sessions');\n }\n\n // /user-sessions/login\n login(data: LoginData) {\n return new APIResource(this).push('login').post().data(data);\n }\n\n // /user-sessions/logout\n logout() {\n return new APIResource(this).push('logout').post();\n }\n\n // /user-sessions/oauth/authorize/{name}-login\n sso(name: string) {\n return new APIResource(this).push('oauth', 'authorize', name + '-login');\n }\n\n // /user-sessions/oauth/authorize/sbid-login\n sbidCallbackUrl() {\n return new APIResource(this).push('oauth', 'authorize', 'sbid-login').toUrl(true);\n }\n\n}\n\nexport default APIResourceUserSession\n","import {AxiosInstance} from 'axios';\n\n// this version of axios has some issue paired with rollup and is not handling default import correctly\n// as a workaround we need to use require instead of import until migrating to newer axios version.\n//\n// Axios has been updated to version 1.13.2. Due to issues related to how axios exports are handled between CommonJS and ES Module\n// as a workaround we need to use require instead of import in case we want to support both CJS and ESM.\n// For CommonJS output in the consumer project (f.ex cloud-frontend), the workaround may still be needed. For ESM, the default import should work.\nconst axios = require('axios').default;\n// @ts-ignore\nimport {version} from '../package.json';\nimport {APIAdminResource} from './api/APIAdminResource';\nimport {APIAdminResourceCluster} from './api/APIAdminResourceCluster';\nimport {APIList} from './api/APIList';\nimport {APIListDevices} from './api/APIListDevices';\nimport {APIListProperties} from './api/APIListProperties';\nimport {APIListServices} from './api/APIListServices';\nimport {APIListUsers} from './api/APIListUsers';\nimport {APIResource} from './api/APIResource';\nimport {APIResourceAccount} from './api/APIResourceAccount';\nimport {APIResourceBroker} from './api/APIResourceBroker';\nimport {APIResourceDevice} from './api/APIResourceDevice';\nimport {APIResourceDeviceGroup} from './api/APIResourceDeviceGroup';\nimport {APIResourceDeviceSession} from './api/APIResourceDeviceSession';\nimport {APIResourceFile} from './api/APIResourceFile';\nimport {APIResourceLabelGroup} from './api/APIResourceLabelGroup';\nimport {APIResourceProject} from './api/APIResourceProject';\nimport {APIResourceRun} from './api/APIResourceRun';\nimport {APIResourceUser} from './api/APIResourceUser';\nimport {APIResourceUserSession} from './api/APIResourceUserSession';\nimport {Cluster} from './api/models/Cluster';\nimport {CollectionQueryParams, NoData, NoQueryParams} from './api/models/HTTP';\nimport {License} from './api/models/License';\nimport {Project} from './api/models/Project';\nimport {Property} from './api/models/Property';\nimport {UserFile, UserFileData, UserFileParams} from './api/models/UserFile';\nimport {ApiConfig} from './ApiConfig';\nimport './finka';\nimport {LabelGroup} from './api/models/LabelGroup';\n\n// @ts-ignore\nif (globalThis.isNodeJs) {\n // Set User-Agent\n axios.defaults.headers.common['User-Agent'] = `Bitbar Cloud API Client for JavaScript v${version}`;\n}\n\n// Disable max content length\naxios.defaults.maxContentLength = 1073741824; // 1GB\n\n/**\n * API\n * Root for other API resources\n */\nexport class API {\n axios: AxiosInstance;\n\n private axiosConfig: ApiConfig = {};\n\n get baseUrl(): string {\n return this.axiosConfig.baseURL;\n }\n\n\n constructor(private config: ApiConfig) {\n if (config == null) {\n throw new Error('config cannot be empty');\n } else if (this.config.cloudUrl == null) {\n throw new TypeError('cloudUrl cannot be empty');\n } else if (typeof this.config.cloudUrl !== 'string') {\n throw new TypeError('cloudUrl must be a string');\n } else if (!/^https?:\\/\\/.{2,}/.test(this.config.cloudUrl)) {\n throw new Error(`cloudUrl doesn't look like a URL`);\n }\n\n // Validate and correct cloudUrl if needed\n this.axiosConfig.baseURL = this.config.cloudUrl.replace(/\\/+$/, '') + '/api'\n\n // Check v2\n this.config.v2 = !!this.config.v2;\n if (this.config.v2) {\n this.axiosConfig.baseURL += '/v2';\n }\n\n // Check if apiKey is set\n if (this.config.apiKey) {\n if (typeof this.config.apiKey !== 'string') {\n throw new TypeError('apiKey must be a string');\n } else if (!/^[A-Za-z0-9]{32}$/.test(this.config.apiKey)) {\n throw new Error('apiKey is in the wrong format');\n }\n\n this.axiosConfig.auth = {\n username: this.config.apiKey,\n password: ''\n };\n }\n\n // With XSRFToken\n this.axiosConfig.withXSRFToken = true;\n // With credentials\n this.axiosConfig.withCredentials = config.withCredentials == null ? false : config.withCredentials;\n\n // Create axios instance\n this.axios = axios.create(this.axiosConfig);\n }\n\n\n // --- Resources starts here --- //\n\n // /account/{id}\n account(id: number) {\n return new APIResourceAccount(this, id);\n }\n\n // /admin\n admin() {\n return new APIAdminResource(this);\n }\n\n // /broker\n broker() {\n return new APIResourceBroker(this);\n }\n\n // /clusters\n clusters() {\n return new APIList(this).push('clusters');\n }\n\n // /clusters/{id}\n cluster(id: number) {\n return new APIAdminResourceCluster(this, id);\n }\n\n // /devices/{id}\n device(id: number) {\n return new APIResourceDevice(this, id);\n }\n\n // /device-groups/{id}\n deviceGroup(id: number) {\n return new APIResourceDeviceGroup(this, id);\n }\n\n // /device-groups\n deviceGroups() {\n return new APIList(this).push('device-groups');\n }\n\n // /devices\n devices() {\n return new APIListDevices(this);\n }\n\n // /device-sessions/{id}\n deviceSession(id: number) {\n return new APIResourceDeviceSession(this, id);\n }\n\n // /device-sessions\n deviceSessions() {\n return new APIList(this).push('device-sessions');\n }\n\n // /device-statistics\n deviceStatistics() {\n return new APIList(this).push('device-statistics');\n }\n\n // /enums\n enums() {\n return new APIResource(this).push('enums');\n }\n\n // /files\n files() {\n return new APIList(this).push('files');\n }\n\n // /files/{id}\n file(id: number) {\n return new APIResourceFile(this, id);\n }\n\n // /label-groups\n labelGroups() {\n return new APIList(this).push('label-groups');\n }\n\n // /label-groups/{id}\n labelGroup(id: number) {\n return new APIResourceLabelGroup(this, id);\n }\n\n // /labels\n labels() {\n return new APIList(this).push('labels');\n }\n\n // /licenses\n licenses() {\n return new APIResource(this).push('licenses');\n }\n\n // /license\n license() {\n return new APIResource(this).push('license');\n }\n\n /*\n /me or /admin\n Requires prototype extension covering ACL check\n */\n ma(): APIAdminResource | APIResourceUser {\n throw new Error('Requires prototype extension covering ACL check');\n }\n\n // /me\n me() {\n return this.user('me');\n }\n\n // /projects\n projects() {\n return new APIList(this).push('projects');\n }\n\n // /projects/{id}\n project(id: number) {\n return new APIResourceProject(this, id);\n }\n\n // /properties\n properties() {\n return new APIListProperties(this);\n }\n\n // /properties/{id}\n property(id: number) {\n return new APIResource(this).push('properties', id);\n }\n\n // /runs/{id}\n run(id: number) {\n return new APIResourceRun(this, id);\n }\n\n // /services\n services() {\n return new APIListServices(this);\n }\n\n // /user/{id}\n user(id: number | 'me') {\n return new APIResourceUser(this, id);\n }\n\n // /users\n users() {\n return new APIListUsers(this);\n }\n\n // /user-sessions\n userSession() {\n return new APIResourceUserSession(this);\n }\n\n}\n\n\nexport default API;\n","/* istanbul ignore file */\n\nimport {API} from './API';\nimport {FilterBuilder} from './FilterBuilder';\n\nexport {API} from './API';\nexport {FilterBuilder} from './FilterBuilder';\n\n/**\n * Cloud API Client\n */\nexport const CloudAPIClient = {\n API,\n FilterBuilder\n}\n\nexport default CloudAPIClient;\n","export enum AccessGroupScope {\n USER = 'USER',\n ACCOUNT = 'ACCOUNT',\n GLOBAL = 'GLOBAL'\n}\n\nexport type AccessGroup = {\n id: number;\n name: string;\n scope: AccessGroupScope;\n userEmail: string;\n userId: number;\n}\n\nexport type AccessGroupData = Pick;\n\nexport type AccessGroupsData = Omit;\n","import {CollectionQueryParams} from './HTTP';\n\n\nexport type Account = {\n activeServiceName: string,\n comment: string,\n createTime: number,\n dedicatedDevicesConcurrency: number,\n dedicatedDevicesCount: number,\n dedicatedDevicesRatio: number,\n dedicatedDevicesUsage: number,\n id: number,\n invoiceDetails: Invoice,\n name: string,\n publicDevicesConcurrency: number,\n publicDevicesRatio: number,\n publicDevicesUsage: number,\n slmOrganizationId: string,\n userName: string\n}\n\nexport type Invoice = {\n address: string,\n city: string,\n code: string,\n country: string,\n state: string\n}\n\nexport type AccountData = Partial<{\n comment: string,\n invoiceDetails: Invoice,\n name: string,\n slmOrganizationId: string;\n userName: string\n}>\n\nexport type AccountUsageSummary = {\n sessionsCount: number,\n duration: number,\n deviceModelsCount: number,\n tunnelEnabledCount: number,\n osVersionsCount: number,\n projectsCount: number,\n usersCount: number,\n}\n\nexport type AccountUsage = {\n timestamp: number,\n timestampLabel: string,\n sessionsCount: number,\n automatedConcurrency: number,\n automatedUsage: number,\n dedicatedConcurrency: number,\n dedicatedUsage: number,\n manualConcurrency: number,\n manualUsage: number\n}\n\nexport type AccountUserSessionUsage = {\n devices: number,\n duration: number,\n osVersions: number,\n sessions: number,\n sessionShare: number\n userId: number,\n userName: string,\n}\n\nexport type AccountSessionUsage = {\n createTime: number,\n deviceModelName: string,\n duration: number,\n osVersion: string,\n type: SessionUsageType,\n userId: number,\n userName: string\n}\n\nexport type AccountSessionUsageSummary = {\n totalTime: number,\n usage: Record\n}\n\nexport enum SessionUsageType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL = 'MANUAL',\n DEDICATED_AUTOMATIC = 'DEDICATED_AUTOMATIC',\n DEDICATED_MANUAL = 'DEDICATED_MANUAL'\n}\n\nexport enum UtilizationType {\n ALL = 'all',\n PUBLIC = 'public',\n DEDICATED = 'dedicated'\n}\n\nexport enum SessionType {\n ALL = 'all',\n AUTOMATED = 'automated',\n MANUAL = 'manual'\n}\n\nexport enum TimeResolution {\n HOUR = 'hour',\n DAY = 'day'\n}\n\nexport type AccountUsageParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n sessionType?: SessionType,\n utilizationType?: UtilizationType,\n}\n\nexport type AccountUsageSummaryParams = CollectionQueryParams & {\n grouping?: TimeResolution,\n}\n","import {ServiceUnit} from './Service';\n\nexport enum PaymentStatus {\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n REDIRECTED = 'REDIRECTED'\n}\n\nexport enum PaymentMethod {\n PAYPAL = 'PAYPAL',\n BRAINTREE = 'BRAINTREE',\n STRIPE = 'STRIPE',\n INVOICE = 'INVOICE',\n PROMOTION = 'PROMOTION',\n AWS = 'AWS'\n}\n\nexport enum DeactivateReason {\n INITIAL_FAILURE = 'INITIAL_FAILURE',\n SCA_FAILURE = 'SCA_FAILURE',\n CHARGE_FAILURE = 'CHARGE_FAILURE',\n CANCEL = 'CANCEL',\n SUSPENDED = 'SUSPENDED',\n ANOTHER_PURCHASE = 'ANOTHER_PURCHASE'\n}\n\nexport type ServicePaymentStatus = {\n accountService: AccountService;\n message: string;\n redirectUrl: string;\n status: PaymentStatus;\n}\n\nexport type AccountService = {\n accountId: number;\n accountName: string;\n activatedById: number;\n activatedByName: string;\n active: boolean;\n braintreeId: string;\n createTime: number;\n deactivateReason: DeactivateReason;\n deactivatedById: number;\n deactivatedByName: string;\n endTime: number;\n finished: boolean;\n id: number;\n lastPaymentTime: number;\n paymentMethod: PaymentMethod;\n price: number;\n serviceCount: number;\n serviceId: number;\n serviceName: string;\n slmLicenseId: string;\n startTime: number;\n subscriptionManagementURL: string;\n unit: ServiceUnit;\n unitCount: number;\n vatRate: number;\n}\n\nexport type AccountServiceData = Pick & {count: number};\n","import {DevicesQueryParams, Platform, SoftwareVersion} from './Device';\nimport {OsType} from './Enum';\nimport {CollectionQueryParams} from './HTTP';\nimport {Cluster} from './Cluster';\n\n\nexport enum InitStep {\n SKIP = 'SKIP',\n REBOOT = 'REBOOT',\n REBOOT_WITH_UNLOCK = 'REBOOT_WITH_UNLOCK',\n UNLOCK_ONLY = 'UNLOCK_ONLY'\n}\n\nexport enum DeviceState {\n OFFLINE_CLEANING = 'OFFLINE_CLEANING',\n OFFLINE_DIRTY = 'OFFLINE_DIRTY',\n OFFLINE_FREE = 'OFFLINE_FREE',\n OFFLINE_TESTING = 'OFFLINE_TESTING',\n ONLINE_CLEANING = 'ONLINE_CLEANING',\n ONLINE_DIRTY = 'ONLINE_DIRTY',\n ONLINE_FREE = 'ONLINE_FREE',\n ONLINE_TESTING = 'ONLINE_TESTING'\n}\n\nexport type AdminDevice = {\n accountId: number | null;\n accountName: string | null;\n cluster: Cluster;\n comment: string;\n dedicationEndTime: number | null;\n deviceModelId: number;\n deviceModelName: string;\n enabled: boolean;\n fingerprint: string;\n forceRestore: boolean;\n id: number;\n initStep: InitStep;\n ipAddress: string;\n lastOnlineTime: number;\n location: string;\n locked: boolean;\n manufacturer: string;\n name: string;\n osType: OsType;\n ownerHasAccountService: boolean;\n platform: Platform;\n serialId: string;\n softwareVersion: SoftwareVersion;\n state: DeviceState;\n stateChangeTime: number;\n stateTime: number;\n testTimeLimit: number;\n unlockGesture: string;\n}\n\nexport type AdminDevicesQueryParams = Pick & CollectionQueryParams;\n\nexport type AdminDeviceData = Pick & {\n apiLevel: number;\n releaseVersion: string;\n};\n","import {CollectionQueryParams} from './HTTP';\nimport {DeviceSessionState} from './DeviceSession';\nimport {OsType} from './Enum';\n\nexport enum FrameworkType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB',\n REMOTE = 'REMOTE'\n}\n\nexport type AdminFrameworkStatistics = {\n cloudName: string;\n count: number;\n day: number;\n deviceModelId: number;\n deviceModelName: string;\n frameworkId: number;\n frameworkName: string;\n id: number;\n osType: OsType;\n releaseVersion: string;\n state: DeviceSessionState;\n type: FrameworkType;\n userEmail: string;\n userId: number;\n}\n\nexport interface AdminStatisticsParams extends CollectionQueryParams {\n days: number;\n}\n","import {PaymentMethod} from './AccountService';\nimport {DeviceSessionType} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {QueryParams} from './HTTP';\n\nexport enum BillingType {\n BUY = 'BUY',\n CHARGE = 'CHARGE',\n CANCEL = 'CANCEL'\n}\n\nexport type BillingPeriod = {\n accountId: number;\n accountName: string;\n accountServiceId: number;\n additionalHours: number;\n additionalHoursPrice: number;\n apiBillingPeriodType: BillingType;\n createTime: number;\n endBillingPeriod: number;\n id: number;\n lastPaymentDate: number;\n paid: boolean;\n paymentMethod: PaymentMethod;\n plan: string;\n servicePrice: number;\n startBillingPeriod: number;\n subscriptionEnd: number;\n subscriptionStart: number;\n totalPrice: number;\n usages: Array;\n}\n\nexport type BillingPeriodUsage = {\n duration: number;\n id: number;\n osType: OsType;\n type: DeviceSessionType;\n}\n\nexport interface BillingPeriodQueryParams extends QueryParams {\n onDate: number;\n}\n","export enum BrokerType {\n MOBILE = 'MOBILE',\n DESKTOP = 'DESKTOP'\n}\n\nexport type Broker = {\n id: number;\n location: string;\n type: BrokerType;\n url: string;\n}\n","\nimport {AdminDevice} from './AdminDevice';\nimport {CollectionResponse, QueryParams} from './HTTP';\n\nexport type Cluster = {\n devices: CollectionResponse;\n enabled: boolean;\n id: number;\n ipAddress: string;\n jenkinsUrl: string;\n jenkinsVersion: string;\n location: string;\n name: string;\n pluginVersion: string;\n region: string;\n state: ClusterState;\n stateChangeTime: number;\n stateTime: number;\n type: ClusterType;\n url: string;\n}\n\nexport enum ClusterState {\n 'OFFLINE',\n ONLINE = 'ONLINE',\n RESTARTING = 'RESTARTING',\n QUIET_DOWN = 'QUIET_DOWN',\n MAINTENANCE = 'MAINTENANCE'\n}\n\nexport enum ClusterType {\n BARE_METAL = 'BARE_METAL',\n EC2 = 'EC2',\n VM = 'VM'\n}\n\nexport interface ClusterParams extends QueryParams {\n withDevices: boolean;\n}\n\nexport type ClusterData = Pick & {\n quietDown: boolean;\n restart: boolean;\n turnMaintenance: boolean;\n}\n","import {Browser} from './Browser';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, CollectionQueryParams, CollectionResponse, QueryParams} from './HTTP';\nimport {TestRunsQueryParams} from './TestRun';\n\n\nexport enum DeviceGroupOrigin {\n STATIC = 'STATIC',\n DYNAMIC = 'DYNAMIC',\n HYBRID = 'HYBRID'\n}\n\nexport enum Platform {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n WINDOWS = 'WINDOWS',\n MAC = 'MAC',\n LINUX = 'LINUX',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport enum SupportedCreators {\n MANUAL = 'MANUAL',\n ROBOT = 'ROBOT',\n AUTOMATIC = 'AUTOMATIC'\n}\n\nexport enum PoolSize {\n XL= 'XL',\n L = 'L',\n M = 'M',\n S = 'S'\n}\n\nexport enum Code {\n HIGH = 'HIGH',\n MODERATE = 'MODERATE',\n LOW = 'LOW',\n NONE = 'NONE',\n}\n\nexport type DeviceAvailability = {\n poolSize: PoolSize,\n code: Code\n}\n\nexport type DeviceProperty = {\n displayName: string;\n id: number;\n labelGroupName: string;\n name: string;\n propertyGroupId: number;\n propertyGroupName: string;\n}\n\nexport type SoftwareVersion = {\n apiLevel: number;\n id: number;\n releaseVersion: string;\n}\n\nexport enum LockReason {\n TESTING = 'TESTING',\n CLEANING = 'CLEANING',\n NOT_OPERATIONAL = 'NOT_OPERATIONAL'\n}\n\nexport type Device = {\n accountId: number;\n accountName: string;\n available: boolean;\n availability: DeviceAvailability;\n browsers: CollectionResponse;\n creditsPrice: number;\n deviceGroupOrigin: DeviceGroupOrigin;\n displayName: string;\n enabled: boolean;\n frame100Url: string;\n frame160Url: string;\n frame400Url: string;\n frame80Url: string;\n frameExtraWidth: number;\n id: number;\n imageCornerRadius: number;\n imageHeight: number;\n imageLeft: number;\n imagePrefix: string;\n imageTop: number;\n imageWidth: number;\n locked: boolean;\n lockReason: LockReason;\n manufacturer: string;\n online: boolean;\n osType: OsType;\n platform: Platform;\n properties: CollectionResponse;\n softwareVersion: SoftwareVersion;\n supportedCreators: Array;\n}\n\nexport type DeviceCleanupConfiguration = {\n content: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n description: string;\n name: string;\n enabled: boolean;\n global: boolean;\n example: true;\n id: number;\n lastModificationTime: number;\n osType: OsType;\n}\n\nexport type DeviceCleanupConfigurationData = {\n deviceCleanupConfigurationId: number;\n}\n\nexport type DeviceLabelData = {\n labelId: number;\n}\n\nexport interface DeviceProperiesData extends QueryParams {\n labelId: number;\n}\n\nexport interface CleanupConfigurationSpecificData extends QueryParams {\n serialId: string;\n}\n\nexport interface DeviceTimeSummaryQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n}\nexport interface DeviceUsageQueryParams extends TestRunsQueryParams {\n startTime: number;\n}\n\nexport interface DeviceStatisticQueryParam extends TestRunsQueryParams {\n mode: string;\n}\n\nexport interface DevicesQueryParams extends CollectionQueryParams {\n labelIds: Array;\n liveTestingOnly: boolean;\n withBrowsers: boolean;\n withDedicated: boolean;\n withDisabled: boolean;\n withProperties: boolean;\n withSupportedCreators: boolean;\n}\n","export enum CriterionField {\n NAME = 'NAME',\n FINGERPRINT = 'FINGERPRINT',\n SERIAL_ID = 'SERIAL_ID',\n UNLOCK_GESTURE = 'UNLOCK_GESTURE',\n SOFTWARE_VERSION = 'SOFTWARE_VERSION',\n INIT_STEP = 'INIT_STEP',\n ACCOUNT = 'ACCOUNT',\n BROWSERS = 'BROWSERS'\n}\n\nexport type DeviceModelCriterion = {\n createTime: number;\n field: CriterionField;\n id: number;\n labelGroupDisplayName: string;\n labelGroupId: number;\n labelGroupName: string;\n}\n\nexport type DeviceModelCriterionData = Pick;\n","export enum RetentionStrategy {\n CLUSTER_ON_OFF = 'CLUSTER_ON_OFF',\n MIN_FREE_MAX_TOTAL = 'MIN_FREE_MAX_TOTAL',\n POOL_MANAGER_AWARE = 'POOL_MANAGER_AWARE'\n}\n\nexport type DeviceModelPool = {\n createTime: number;\n enabled: boolean;\n id: number;\n location: string;\n maxTotal: number;\n minAvailable: number;\n name: string;\n numberOfBrowsers: number;\n osVersion: string;\n retentionStrategy: RetentionStrategy;\n running: number;\n}\n\nexport type DeviceModelPoolData = Pick;\n","export enum ProblemType {\n CLEANING = 'CLEANING',\n DIRTY = 'DIRTY',\n OFFLINE = 'OFFLINE',\n LOW_BATTERY = 'LOW_BATTERY',\n HIGH_FAIL_RATE = 'HIGH_FAIL_RATE',\n NO_INTERNET_CONNECTION = 'NO_INTERNET_CONNECTION'\n}\n\nexport type DeviceProblem = {\n clusterId: number;\n clusterName: string;\n deviceId: number;\n deviceModelId: number;\n deviceModelName: string;\n deviceName: string;\n id: number;\n problems: Array;\n location: string;\n}\n\nexport type DeviceProblemPair = {\n id: number;\n type: ProblemType;\n value: any;\n}\n","import {Device} from './Device';\nimport {CollectionBasicQueryParams} from './HTTP';\n\nexport type TunnelSettings = {\n domain: string;\n email: string;\n}\n\nexport enum DeviceSessionType {\n AUTOMATIC = 'AUTOMATIC',\n MANUAL_APP = 'MANUAL_APP',\n MANUAL_WEB = 'MANUAL_WEB'\n}\n\nexport enum RetryState {\n NONE = 'NONE',\n MANUAL = 'MANUAL',\n AUTO = 'AUTO'\n}\n\nexport enum DeviceSessionState {\n ABORTED = 'ABORTED',\n EXCLUDED = 'EXCLUDED',\n FAILED = 'FAILED',\n RUNNING = 'RUNNING',\n SUCCEEDED = 'SUCCEEDED',\n TIMEOUT = 'TIMEOUT',\n WAITING = 'WAITING',\n WARNING = 'WARNING'\n}\n\nexport enum DeviceSessionStepType {\n WAITING = 'WAITING',\n PREPARING = 'PREPARING',\n UNINSTALL = 'UNINSTALL',\n INSTALL = 'INSTALL',\n RUNNING = 'RUNNING',\n SENDING_RESULTS = 'SENDING_RESULTS',\n PROCESSING_RESULTS = 'PROCESSING_RESULTS'\n}\n\nexport type DeviceSessionConfig = {\n adbVersion: string;\n browserName: string;\n browserVersion: string;\n deviceModelId: number;\n id: number;\n screenResolution: string;\n tunnelSettings: TunnelSettings;\n type: DeviceSessionConfig;\n url: string;\n}\n\nexport type DeviceSession = {\n accountId: number;\n autoRetriesLeftCount: number;\n biometricInstrumentation: boolean;\n config: DeviceSessionConfig;\n createTime: number;\n clientSideId: string;\n device: Device;\n deviceInstanceId: number;\n deviceRunId: number;\n duration: number;\n endTime: number;\n excludeReason: string;\n externalId: string;\n id: number;\n installTime: number;\n name: string;\n projectId: number;\n projectName: string;\n retryable: boolean;\n retryState: RetryState;\n startTime: number;\n state: DeviceSessionState;\n successRatio: number;\n testCaseAllCount: number;\n testCaseFailedCount: number;\n testCasePassedCount: number;\n testCaseSkippedCount: number;\n testCaseSuccessCount: number;\n testRunId: number;\n testRunName: string;\n timeLimit: number;\n type: DeviceSessionType;\n uiLink: string;\n userEmail: string;\n userId: number;\n}\n\nexport type DeviceSessionCommand = {\n duration: number;\n httpMethod: string;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n\nexport type DeviceSessionStep = {\n deviceSessionId: number;\n excludeReason: string;\n failReason: string;\n finishTimeMS: number;\n id: number;\n startTimeMS: number;\n type: DeviceSessionStepType;\n}\n\nexport type DeviceSessionConnection = {\n createTime: number;\n deviceSessionId: number;\n endTime: number;\n externalId: string;\n host: string;\n id: number;\n password: string;\n path: string;\n port: number;\n type: string;\n urlSchema: string;\n}\n\nexport type DeviceSessionData = Omit & {configuration: DeviceSessionConfig};\n\nexport interface DeviceSessionQueryParams extends CollectionBasicQueryParams {\n withProperties: boolean;\n}\n\nexport interface SessionQueryParams extends CollectionBasicQueryParams {\n projectId: number;\n testRunId: number;\n}\n\nexport interface SessionRunStepQueryParams extends CollectionBasicQueryParams {\n runId: number;\n}\n\nexport interface SessionStepQueryParams extends SessionRunStepQueryParams {\n projectId: number;\n}\n\nexport enum SessionReleaseReason {\n INACTIVITY = 'INACTIVITY',\n TIMEOUT = 'TIMEOUT',\n USER_ACTION = 'USER_ACTION',\n CHANGE_DEVICE = 'CHANGE_DEVICE',\n WEBSOCKET_CLOSED = 'WEBSOCKET_CLOSED'\n}\n\nexport type DeviceSessionRelease = {\n reason: SessionReleaseReason;\n}\n","export enum OsType {\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n DESKTOP = 'DESKTOP',\n UNDEFINED = 'UNDEFINED'\n}\n\nexport type Enum = {\n id: number;\n value: string;\n}\n","export enum LicenseStatus {\n ACTIVE = 'ACTIVE',\n EXPIRED = 'EXPIRED',\n INACTIVE = 'INACTIVE',\n CLOSED = 'CLOSED'\n}\n\nexport type BaseLicense = {\n enabled: boolean;\n};\n\nexport type FeatureLicense = {\n deviceLimit: number;\n deviceLimited: boolean;\n projectLimit: number;\n projectLimited: boolean;\n};\n\nexport type AndroidLicense = BaseLicense & FeatureLicense & {\n cts: CTSLicense;\n uiAutomator: UIAutomatorLicense;\n};\n\nexport type BuildLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type DesktopLicense = BaseLicense & FeatureLicense;\n\nexport type GlobalLicense = FeatureLicense;\n\nexport type InspectorLicense = BaseLicense;\n\nexport type IOSLicense = BaseLicense & FeatureLicense;\n\nexport type RecorderLicense = BaseLicense & {\n limit: number;\n limited: boolean;\n};\n\nexport type ServerLicense = BaseLicense & {\n androidEnabled: boolean;\n iosEnabled: boolean;\n};\n\nexport type CTSLicense = BaseLicense;\n\nexport type UIAutomatorLicense = BaseLicense;\n\nexport type License = {\n activateTime: number;\n android: AndroidLicense;\n build: BuildLicense;\n closeTime: number;\n desktop: DesktopLicense;\n expireTime: number;\n global: GlobalLicense;\n id: number;\n inspector: InspectorLicense;\n ios: IOSLicense;\n privateInstance: boolean;\n recorder: RecorderLicense;\n server: ServerLicense;\n status: LicenseStatus;\n userEmail: string;\n userId: number;\n}\n\nexport type LicenseData = Pick & {\n androidDeviceLimit: number;\n androidEnabled: boolean;\n androidProjectLimit: number;\n buildEnabled: boolean;\n buildLimit: number;\n desktopDeviceLimit: number;\n desktopEnabled: boolean;\n desktopProjectLimit: number;\n globalDeviceLimit: number;\n globalProjectLimit: number;\n inspectorEnabled: boolean;\n iosDeviceLimit: number;\n iosEnabled: boolean;\n iosProjectLimit: number;\n privateInstance: boolean;\n unit: string;\n unitCount: number;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum NotificationChannel {\n SLACK = 'SLACK',\n EMAIL = 'EMAIL',\n WEBHOOK = 'WEBHOOK'\n}\n\nexport enum NotificationScope {\n ALL = 'ALL',\n TEST_RUN = 'TEST_RUN',\n TEST_RUN_FAILURE = 'TEST_RUN_FAILURE',\n TEST_RUN_SUCCEEDED = 'TEST_RUN_SUCCEEDED',\n SYSTEM = 'SYSTEM',\n CHECK = 'CHECK',\n}\n\nexport type Notification = {\n channel: NotificationChannel;\n destination: string;\n id: number;\n projectId?: number;\n projectName?: string;\n scope: NotificationScope;\n userEmail: string;\n userId: number;\n}\n\nexport interface NotificationData extends QueryParams {\n scope: NotificationScope;\n}\n\nexport type NotificationsData = Pick;\n","import {OsType} from './Enum';\nimport {TestRunConfig, TestRunsQueryParams} from './TestRun';\n\nexport enum ArchivingStrategy {\n NEVER = 'NEVER',\n DAYS = 'DAYS',\n RUNS = 'RUNS'\n}\n\nexport type Project = {\n archiveTime: number;\n archivingItemCount: number;\n archivingStrategy: ArchivingStrategy;\n common: boolean;\n createTime: number;\n description: string;\n id: number;\n name: string;\n osType: OsType;\n readOnly: boolean;\n rowIndex: number;\n shared: boolean;\n sharedWithCaller: boolean;\n successRatio: number;\n testRunConfig: TestRunConfig;\n userEmail: string;\n userId: number;\n}\n\nexport type UserProjectData = Pick;\n\nexport interface UserProjectQueryParams extends TestRunsQueryParams {\n showStatistics: boolean;\n}\n","import {CollectionBasicQueryParams} from './HTTP';\n\nexport enum ScreenshotType {\n LANDSCAPE = 'LANDSCAPE',\n PORTRAIT = 'PORTRAIT'\n}\n\nexport type Screenshot = {\n fail: boolean;\n id: number;\n originalName: string;\n takeTimestamp: number;\n type: ScreenshotType;\n}\n\nexport interface ScreenshotQueryParams extends CollectionBasicQueryParams {\n name: string;\n}\n","import {PaymentMethod} from './AccountService';\nimport {CollectionQueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport type Service = {\n activateTime: number;\n activated: boolean;\n archiveTime: number;\n centPrice: number;\n commonId: string;\n customPlan: boolean;\n defaultConcurrences: Array;\n description: string;\n externalId: string;\n features: string;\n id: number;\n name: string;\n priceString: string;\n roles: Array;\n unit: ServiceUnit;\n}\n\nexport enum ServiceUnit {\n DAY = 'DAY',\n HOUR = 'HOUR',\n MONTH = 'MONTH',\n PROJECT = 'PROJECT',\n RUN = 'RUN',\n YEAR = 'YEAR'\n}\n\nexport interface AdminServicesParams extends CollectionQueryParams {\n activeOnly: boolean;\n inUse: boolean;\n notArchive: boolean;\n}\n\nexport type ServiceActivateData = {\n activateTime: number;\n}\n\nexport interface ServiceData {\n address?: string;\n cardNumber?: string;\n city?: string;\n count?: number;\n country?: string;\n cvv?: string;\n email?: string;\n expirationDate?: string;\n firstName?: string;\n lastName?: string;\n organization?: string;\n paymentMethod: PaymentMethod;\n phone?: string;\n serviceId: number;\n state?: string;\n stripeToken?: string;\n vatId?: string;\n zip?: string;\n}\n","import {QueryParams} from './HTTP';\n\n\nexport enum SharedResourceType {\n DEVICE_GROUP = 'DEVICE_GROUP',\n FILE = 'FILE',\n PROJECT = 'PROJECT',\n}\n\nexport type SharedResource = {\n id: number;\n name: string;\n resourceId: number;\n type: SharedResourceType;\n}\n\nexport interface ShareWithGroup extends QueryParams {\n accessGroupId: number;\n}\n\nexport interface ShareWithEmail extends QueryParams {\n email: string;\n}\n\nexport type ShareData = ShareWithGroup | ShareWithEmail;\n","import {Method} from 'axios';\nimport {CollectionResponse} from './HTTP';\n\n\nexport enum TestResult {\n PASSED = 'PASSED',\n FAILED = 'FAILED',\n SKIPPED = 'SKIPPED',\n NOT_AVAILABLE = 'NOT_AVAILABLE'\n}\n\nexport type TestCaseRun = {\n className: string;\n createTime: number;\n duration: number;\n errorMessage: string;\n id: number;\n methodName: string;\n result: TestResult;\n stacktrace: string;\n steps: CollectionResponse;\n suiteName: string;\n}\n\nexport type TestCaseRunStep = {\n description: string;\n duration: number;\n httpMethod: Uppercase;\n id: number;\n requestBody: string;\n responseBody: string;\n responseCode: number;\n timestamp: number;\n uri: string;\n}\n","import {Device} from './Device';\nimport {TunnelSettings} from './DeviceSession';\nimport {OsType} from './Enum';\nimport {CollectionBasicQueryParams, QueryParams} from './HTTP';\nimport {UserFile} from './UserFile';\nimport {DeviceGroup} from './DeviceGroup';\nimport {Framework} from './Framework';\n\n\nexport enum LimitationType {\n PACKAGE = 'PACKAGE',\n CLASS = 'CLASS'\n}\n\nexport enum TestScheduler {\n PARALLEL = 'PARALLEL',\n SERIAL = 'SERIAL',\n SINGLE = 'SINGLE',\n ALL_INSTANCES = 'ALL_INSTANCES'\n}\n\nexport enum TestState {\n WAITING = 'WAITING',\n RUNNING = 'RUNNING',\n FINISHED = 'FINISHED'\n}\n\n\nexport type TestRun = {\n abortedDeviceCount: number;\n config: TestRunConfig;\n createTime: number;\n deviceCount: number;\n displayName: string;\n errorsDeviceCount: number;\n excludedDeviceCount: number;\n executedTestCaseCount: number;\n executionRatio: number;\n failedTestCaseCount: number;\n finishedDeviceCount: number;\n frameworkId: number;\n frameworkName: string;\n id: number;\n logsFileId: number;\n message: string;\n 'number': number;\n projectId: number;\n projectName: string;\n retryable: boolean;\n rowIndex: number;\n runningDeviceCount: number;\n screenshotsFileId: number;\n startTime: number;\n startedByDisplayName: string;\n startedById: number;\n state: TestState;\n succeededDeviceCount: number;\n successRatio: number;\n successfulTestCaseCount: number;\n testCaseCount: number;\n timeoutedDeviceCount: number;\n uiLink: string;\n userId: number;\n waitingDeviceCount: number;\n warningDeviceCount: number;\n}\n\nexport enum TestRunConfigFileAction {\n COPY_TO_DEVICE = 'COPY_TO_DEVICE',\n INSTALL = 'INSTALL',\n RUN_TEST = 'RUN_TEST',\n}\n\nexport type TestRunConfigFile = {\n action: TestRunConfigFileAction;\n availableActions: Array;\n file: UserFile;\n id: number;\n};\n\nexport type TestRunParameter = {\n name?: string;\n key: string;\n value: string;\n label?: string;\n}\n\nexport type TRCDefaultSettings = {\n deviceLanguageCode: string;\n disableResigning: boolean;\n hookURL: string;\n instrumentationRunner: string;\n limitationType: string;\n limitationValue: string;\n scheduler: string;\n screenshotDir: string;\n withAnnotation: string;\n withoutAnnotation: string;\n timeout: string;\n projectName: string;\n testRunName: string;\n testRunParameters?: TestRunParameter[];\n biometricInstrumentation: boolean;\n}\n\nexport type TestRunConfig = TRCDefaultSettings & {\n appCrawlerRun: boolean;\n appiumBrokerAddress: string;\n appiumBrokerQueueName: string;\n applicationPassword: string;\n applicationUsername: string;\n availableDeviceGroups: DeviceGroup[];\n availableDevices: Array;\n availableFrameworks: Framework[];\n availableOsTypes: Array;\n clientSideTestConfig: any;\n computedDevices: Array;\n creditsPrice: number;\n deviceGroupId?: number;\n deviceIds: any;\n deviceNamePattern: string;\n files: Array | null;\n frameworkId: number;\n id: number;\n loadedPrevious: boolean;\n maxAutoRetriesCount: number;\n maxTestTimeout: any;\n maxWaitTime: number;\n osType: OsType;\n projectId: number;\n resignFiles: boolean;\n runAvailable: boolean;\n status: string;\n statusCode: number;\n testRunId: number;\n testRunNameGrouping: string;\n tunnelSettings: TunnelSettings;\n useSamples: boolean;\n usedDeviceGroupId: number;\n usedDeviceGroupName: string;\n videoRecordingEnabled: boolean;\n withAnnotation: string;\n}\n\nexport interface TestRunData extends QueryParams {\n displayName: string;\n}\n\nexport interface RunData extends TestRunData {\n projectId: number;\n}\n\nexport interface RunQueryParam extends QueryParams {\n projectId: number;\n}\n\n\nexport type TestRunsIncludes = {\n includeDeviceGroups: boolean;\n includeDevices: boolean;\n includeFrameworks: boolean;\n}\n\nexport type RunsConfigParams = TestRunsIncludes & QueryParams;\n\n// for users/{userid}/runs\nexport interface TestRunsQueryParams extends CollectionBasicQueryParams {\n forWholeAccount: boolean;\n skipCommonProject: boolean;\n skipShared: boolean;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\nimport {Role} from './Role';\n\n\nexport enum UserStatus {\n INACTIVE = 'INACTIVE',\n DISABLED = 'DISABLED',\n ENABLED = 'ENABLED'\n}\n\nexport type User = {\n accountId: number;\n accountName: string;\n userAccountName: string;\n accountServiceIds: Array;\n address: string;\n apiKey: string;\n city: string;\n code: string;\n country: string;\n createTime: number;\n createdByEmail: string;\n createdById: number;\n deleteTime: number;\n email: string;\n enabled: boolean;\n firstName: string;\n id: number;\n isAccountOwner: boolean;\n lastLaunchedTestTime: number;\n lastLoginTime: number;\n lastName: string;\n organization: string;\n phone: string;\n registrationIP: string;\n roles: Array;\n serviceIds: Array;\n state: string;\n status: UserStatus;\n timeZone: string;\n}\n\nexport type UserData = Pick;\n\nexport interface UserParams extends CollectionQueryParams {\n WITH_ADDRESS: boolean;\n WITH_USER_INFO: boolean;\n onlyMainUsers: boolean;\n onlyWithDisabledServices: boolean;\n withRole: string;\n withRoles: boolean;\n}\n\nexport type UserUpdateAccount = Pick;\n\nexport type UserDeleteData = {\n password: string;\n}\n\nexport interface LoginData {\n username: string;\n password: string;\n}\n\n\nexport type UserPasswordData = {\n key: string;\n password: string;\n};\nexport type UserActivateData = {\n zip: string;\n} & UserPasswordData\n & Pick;\n\nexport interface UserRecoveryQueryParams extends QueryParams {\n recoveryKey: string;\n}\n","import {CollectionQueryParams, QueryParams} from './HTTP';\n\n\nexport enum FileDirection {\n INPUT = 'INPUT',\n OUTPUT = 'OUTPUT'\n}\n\nexport enum FileInputType {\n APPLICATION = 'APPLICATION',\n TEST = 'TEST',\n DATA = 'DATA'\n}\n\nexport enum FileState {\n PREPARING = 'PREPARING',\n READY = 'READY'\n}\n\nexport type FileProperty = {\n id: number;\n key: string;\n value: string;\n};\n\nexport type UserFileTag = {\n id: number;\n name: string;\n}\n\nexport type UserFile = {\n createTime: number;\n directUrl: string;\n direction: FileDirection;\n duplicate: boolean;\n fileProperties: Array;\n iconDirectUrl: string;\n id: number;\n inputType: FileInputType;\n mimetype: string;\n name: string;\n shared: boolean;\n size: number;\n state: FileState;\n userEmail: string;\n userId: number;\n};\n\nexport interface UserFileParams extends CollectionQueryParams {\n tag: Array;\n}\n\nexport type UserFileData = {\n file: FormData;\n global: boolean;\n}\n\nexport type BuildLogsData = {\n deviceRunIds: Array;\n projectId: number;\n userId: number;\n}\n\nexport type BuildLogsParams = BuildLogsData;\n\nexport interface FileSizeData extends QueryParams {\n height: number;\n width: number;\n}\n\nexport type UploadObj = {\n dir: string;\n filename: string;\n}\n\nexport interface FileData {\n file: Blob;\n global: boolean;\n}\n","export enum VisualTestImageType {\n FULL_PAGE = 'FULL_PAGE',\n VIEWPORT = 'VIEWPORT',\n ELEMENT_SCREENSHOT = 'ELEMENT_SCREENSHOT'\n}\n\nexport type VisualTestAccess = {\n enabled: boolean;\n apiKey: string | null;\n}\n\nexport type VisualTest = {\n comparisonStatus:\tstring;\n appUrl:\tstring;\n createdAt:\tstring;\n id: number;\n imageName:\tstring;\n imageThumbnailUrl:\tstring;\n imageType:\tVisualTestImageType;\n imageUrl:\tstring;\n sessionId:\tstring;\n testUrl:\tstring;\n}\n"],"names":["Filter","constructor","name","value","operand","this","finka","FilterBuilder","filters","gt","add","lt","after","afterorequal","before","beforeorequal","on","eq","contains","like","notlike","isnull","undefined","isnotnull","notin","raw","filter","Array","wrap","isFilterPart","SyntaxError","push","str","test","toString","parts","part","val","length","join","checkNull","_value","i","v","Date","getTime","isNull","item","endsWith","ALLOWED_HTTP_METHODS","APIOrder","APIEntity","parent","stack","requestConfig","root","isArray","setRequestConfig","abortController","AbortController","abortRequest","abort","items","concat","shift","restack","first","last","toUrl","absolute","url","baseUrl","Object","deepAssign","removeRequestConfig","key","headers","_headers","replace","letter","toUpperCase","method","NAME","toLocaleUpperCase","indexOf","Error","get","post","params","getParams","removeParam","data","jsonData","formData","send","signal","FormData","_a","startsWith","paramsSerializer","indexes","axios","request","stringify","arrayFormat","APIList","all","noLimit","cut","between","create","sort","order","asc","limit","Number","isNatural","getLimit","offset","from","to","only","idx","page","search","query","APIResource","APIListCleanupConfigurations","super","specific","APIResourceCleanupConfiguration","id","devices","APIAdminListDevices","cleanupConfigurations","cleanupConfiguration","APIAdminListRuns","config","apiResource","APIAdminListServices","active","apiList","notArchived","activated","inUse","byPrice","NonRequestable","Promise","reject","APIAdminListStatistics","frameworks","__decorate","APIAdminResourceAccount","roles","role","accountServices","preferences","usage","usageSummary","APIAdminResourceAccountService","activate","deactivate","APIAdminResourceCluster","APIAdminResourceDevice","labels","label","queue","APIAdminResourceDeviceModel","browsers","InputFileset","files","filesZip","exports","IMAGE_FILES_FILTER","in","NON_MEDIA_FILES_FILTER","APIListOutputFiles","performance","tag","images","nonMediaFiles","videos","OutputFileset","file","screenshots","screenshot","screenshotFile","APIListScreenshots","APIResourceDeviceSessionCommon","commands","input","output","release","steps","step","currentStep","connections","logs","responseType","clusterLogs","APIAdminResourceDeviceSessionStandalone","changeBillable","billable","deviceSessionId","postAdminDeviceSessionChangeBillable","APIAdminResourceDeviceTime","APIAdminResourceFramework","requiredRoles","APIAdminResourceLicense","resend","download","postDeviceRunIds","ids","a","deviceRunIds","APIAdminResourceRunStandalone","changePriority","priority","resource","retry","timeout","APIAdminResourceService","APIAdminResourceUserAccount","services","update","APIResourceDeviceSessionStandalone","connection","visualTestsImages","APIAdminResourceUser","disable","enable","licenses","resendActivation","account","deviceSession","APIResourceAccessGroup","users","user","resources","APIResourceDeviceGroup","device","selectors","selector","share","APIResourceFile","icon","tags","property","APIListTestCaseRuns","APIResourceDeviceSession","testCaseRuns","APIListTestRunDeviceSessions","APIResourceRunCommon","buildLogsZip","dataAvailability","deviceSessions","logsZip","performanceZip","screenshotsZip","APIResourceRun","APIResourceProject","runs","run","unarchive","APIAdminResource","accessGroups","accessGroup","accounts","accountService","activities","administrators","billingPeriods","billingPeriod","browser","clusters","cluster","devicesForModel","deviceStatuses","deviceModels","deviceModel","deviceProblems","deviceModelCriterias","deviceModelCriteria","deviceTime","deviceTimeSummary","deviceTypes","deviceType","deviceGroups","deviceGroup","emails","resendEmail","framework","frameworkAvailableLabels","interactiveQueue","license","maintenance","overview","pools","pool","projects","project","samples","sample","service","settings","statistics","createUser","APIListDevices","desktopBrowserCapabilities","APIListProperties","APIListServices","available","availableByPrice","APIListUsers","recoveries","passwordRecovery","APIResourceBillingPeriod","receipt","APIResourceAccount","concurrencyStatus","removeUser","disableUser","enableUser","serviceBillingPeriod","visualTestAccess","userUsageDetails","usageDetails","usageDetailsSummary","APIResourceBroker","hubs","APIResourceDevice","properties","APIResourceLabelGroup","APIListFiles","upload","obj","global","isNodeJs","nodeUpload","fs","require","form","append","createReadStream","dir","filename","getHeaders","APIResourceChannel","type","scopes","APIListNotifications","channels","channel","APIListRuns","APIListSmartbearTunnels","APIResourceNotification","APIResourceUser","TypeError","markAccountOwner","availableFrameworks","resetApiKey","restore","feedback","notifications","notification","uiPreferences","deviceUsage","deviceStatistics","smartbearTunnel","smartbearTunnels","deleteAccount","APIResourceUserSession","login","logout","sso","sbidCallbackUrl","default","globalThis","defaults","common","maxContentLength","API","axiosConfig","baseURL","cloudUrl","v2","apiKey","auth","username","password","withXSRFToken","withCredentials","admin","broker","enums","labelGroups","labelGroup","ma","me","userSession","CloudAPIClient","AccessGroupScope","SessionUsageType","UtilizationType","SessionType","TimeResolution","PaymentStatus","PaymentMethod","DeactivateReason","InitStep","DeviceState","FrameworkType","BillingType","BrokerType","ClusterState","ClusterType","DeviceGroupOrigin","Platform","SupportedCreators","PoolSize","Code","LockReason","CriterionField","RetentionStrategy","ProblemType","DeviceSessionType","RetryState","DeviceSessionState","DeviceSessionStepType","SessionReleaseReason","OsType","LicenseStatus","NotificationChannel","NotificationScope","ArchivingStrategy","ScreenshotType","ServiceUnit","SharedResourceType","TestResult","LimitationType","TestScheduler","TestState","TestRunConfigFileAction","UserStatus","FileDirection","FileInputType","FileState","VisualTestImageType"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fe4460b..1af6c28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "@bitbar/cloud-api-client", - "version": "1.5.16", + "version": "1.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bitbar/cloud-api-client", - "version": "1.5.16", + "version": "1.6.0", "license": "MIT", "dependencies": { "@babel/runtime": "^7.28.2", "@bitbar/finka": "^2.4.4", - "axios": "^0.26.1", + "axios": "^1.13.2", "form-data": "^4.0.4", "node-abort-controller": "^3.1.1", "qs": "6.10.3" @@ -118,6 +118,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", @@ -3167,6 +3168,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -3288,6 +3290,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, + "peer": true, "dependencies": { "undici-types": "~6.20.0" } @@ -3365,6 +3368,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.22.0.tgz", "integrity": "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.22.0", "@typescript-eslint/types": "8.22.0", @@ -3557,6 +3561,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3711,11 +3716,13 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-jest": { @@ -3937,6 +3944,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -4552,6 +4560,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -4986,9 +4995,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -6875,6 +6884,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "peer": true, "engines": { "node": ">=12" }, @@ -7012,6 +7022,11 @@ "node": ">= 6" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -7294,6 +7309,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", "dev": true, + "peer": true, "dependencies": { "@types/estree": "1.0.6" }, @@ -7816,6 +7832,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -7957,6 +7974,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 8f361c7..a125312 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bitbar/cloud-api-client", - "version": "1.5.16", + "version": "1.6.0", "description": "Bitbar Cloud API Client for JavaScript", "main": "dist/bitbar-cloud-api-client.min.js", "types": "dist/index.d.ts", @@ -69,14 +69,14 @@ "ts-node": "^10.7.0", "tslib": "^2.3.1", "typedoc": "0.27.6", + "typedoc-github-theme": "^0.2.1", "typescript": "^5.7.2", - "typescript-eslint": "^8.3.0", - "typedoc-github-theme": "^0.2.1" + "typescript-eslint": "^8.3.0" }, "dependencies": { "@babel/runtime": "^7.28.2", "@bitbar/finka": "^2.4.4", - "axios": "^0.26.1", + "axios": "^1.13.2", "form-data": "^4.0.4", "node-abort-controller": "^3.1.1", "qs": "6.10.3" diff --git a/src/API.ts b/src/API.ts index 5da3f75..e8224d7 100644 --- a/src/API.ts +++ b/src/API.ts @@ -1,6 +1,11 @@ import {AxiosInstance} from 'axios'; + // this version of axios has some issue paired with rollup and is not handling default import correctly -// as a workaround we need to use require instead of import until migrating to newer axios version +// as a workaround we need to use require instead of import until migrating to newer axios version. +// +// Axios has been updated to version 1.13.2. Due to issues related to how axios exports are handled between CommonJS and ES Module +// as a workaround we need to use require instead of import in case we want to support both CJS and ESM. +// For CommonJS output in the consumer project (f.ex cloud-frontend), the workaround may still be needed. For ESM, the default import should work. const axios = require('axios').default; // @ts-ignore import {version} from '../package.json'; @@ -42,7 +47,6 @@ if (globalThis.isNodeJs) { // Disable max content length axios.defaults.maxContentLength = 1073741824; // 1GB - /** * API * Root for other API resources @@ -91,6 +95,8 @@ export class API { }; } + // With XSRFToken + this.axiosConfig.withXSRFToken = true; // With credentials this.axiosConfig.withCredentials = config.withCredentials == null ? false : config.withCredentials; diff --git a/src/ApiConfig.ts b/src/ApiConfig.ts index 2ac8d72..68e8002 100644 --- a/src/ApiConfig.ts +++ b/src/ApiConfig.ts @@ -36,6 +36,13 @@ export type ApiConfig = { * */ withCredentials?: boolean; + + + /** + * With credentials? `undefined` (default) - set XSRF header only for the same origin requests + * + */ + withXSRFToken?: boolean | undefined; } export default ApiConfig; diff --git a/src/api/APIEntity.spec.ts b/src/api/APIEntity.spec.ts index a6622b0..1143b11 100644 --- a/src/api/APIEntity.spec.ts +++ b/src/api/APIEntity.spec.ts @@ -222,15 +222,10 @@ describe('APIEntity', () => { }); describe('@formData', () => { - it('should set data and content header in existing configuration', () => { - const call = service.formData({ - test: 'me', - properly: 1 - }); - expect((service).requestConfig.data.test).toEqual('me'); - expect((service).requestConfig.data.properly).toEqual(1); - expect((service).requestConfig.headers['Content-Type']).toEqual('multipart/form-data'); - expect(call).toEqual(service); + it('should set data in requestConfig', () => { + const data = {foo: 'bar'}; + service.formData(data); + expect((service).requestConfig.data).toEqual(data); }); }); @@ -304,7 +299,9 @@ describe('APIEntity', () => { params: { test: 'me' }, - paramsSerializer: (service).paramsSerializer, + paramsSerializer: { + indexes: false, + }, signal: (service).abortController.signal }); }); diff --git a/src/api/APIEntity.ts b/src/api/APIEntity.ts index 30f30ab..c677b14 100644 --- a/src/api/APIEntity.ts +++ b/src/api/APIEntity.ts @@ -191,9 +191,7 @@ export class APIEntityrequestConfig.headers['Content-Type']).startsWith('application/x-www-form-urlencoded') && + (requestConfig.headers['Content-Type'])?.startsWith('application/x-www-form-urlencoded') && requestConfig.data != null) { requestConfig.data = this.paramsSerializer(requestConfig.data); } if (requestConfig.params) { - requestConfig.paramsSerializer = this.paramsSerializer; + requestConfig.paramsSerializer = {indexes: false}; } // Send request