diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 2fcb3cd..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true - }, - "extends": "eslint:recommended", - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaVersion": 12, - "sourceType": "module" - }, - "parser": "@babel/eslint-parser", - "rules": { - } -} diff --git a/.gitignore b/.gitignore index 3c3629e..76add87 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +dist \ No newline at end of file diff --git a/babel.config.json b/babel.config.json deleted file mode 100644 index ab1c311..0000000 --- a/babel.config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": [], - "plugins": [] -} diff --git a/docs-ru.md b/docs-ru.md deleted file mode 100644 index e915ac7..0000000 --- a/docs-ru.md +++ /dev/null @@ -1,309 +0,0 @@ -# Документация -Все параметры передаются в объекте. Пример: -```js -import { LZTApi } from './src/api.js' - -const api = new LZTApi({ token: 'b5f0a0cadb79603f07ff8bf53255d3de0a478acf' }) -await api.market.search({ categoryName: 'steam', pmin: 250, pmax: 250 }) -``` - -## LZTApi - * `token: string` - токен API, получать [тут](https://lzt.market/account/api) (обязательно с scope "market" - для этого нужно иметь 200 симпатий или приобрести "Доступ к маркету" [тут](https://zelenka.guru/payment/method?service_type=user-upgrade&service_id=8)) - * `locale?: string` - ISO 639-1 код языка - * `fetchParams?: Object` - дополнительные параметры для node-fetch - * `interval_between_requests?: number` - интервал между запросами в мс, если не указано - 3000 мс - -## LZTApi#market -Маркет, в целом повторяет [Official api](https://docs.api.zelenka.guru/?market) - -### market.search -Поиск аккаунтов по параметрам - * `categoryName?: string` - название категории, если не указано возвращает последние аккаунты - * `pmin?: number` - минимальная цена аккаунта (включительно) - * `pmax?: number` - максимальная цена аккаунта (включительно) - * `title?: string` - слово или слова, содержащиеся в названии аккаунта - * `showStickyItems?: boolean` - если true, будут возвращаться закрепленные аккаунты - * `...categoryParams` - параметры для конкретной категории, смотреть через код элемента (спасибо, ланской) - -### market.getUser -Возвращает информацию о маркете текущего пользователя - -### market.getPayments -Возвращает переводы пользователя - * `userId?: number` - айди пользователя, если не указано берется айди текущего пользователя - * `type?: 'income'|'cost'|'refilled_balance'|'withdrawal_balance'|'paid_item'|'sold_item'|'money_transfer'|'receiving_money'|'internal_purchase'|'claim_hold'` - тип операции - * `pmin?: number` - минимальная сумма операции (включительно) - * `pmax?: number` - максимальная сумма операции (включительно) - * `receiver?: string` - юзернейм пользователя, получившего деньги - * `sender?: string` - юзернейм пользователя, отправившего деньги - * `startDate?: string` - начало интервала даты операции (в формате RFC 3339) - * `endDate?: string` - конец интервала даты операции (в формате RFC 3339) - * `wallet?: string` - кошелек использованный для вывода денег - * `comment?: string` - комментарий к переводу - * `isHold?: boolean` - если true, то вернет только платежи в холде - -### market.getOrders -Возвращает заказы пользователя - * `userId?: number` - айди пользователя, если не указано берется айди текущего пользователя - * `categoryId?: number` - айди категории, смотреть [тут](https://github.com/grisha2217/Lolzteam-Public-API/blob/master/docs/market_api.markdown#category-id-names-list) - * `pmin?: number` - минимальная цена аккаунта (включительно) - * `pmax?: number` - максимальная цена аккаунта (включительно) - * `title?: string` - слово или слова, содержащиеся в названии аккаунта - * `...categoryParams` - параметры для конкретной категории, смотреть через код элемента (спасибо, ланской) - -### market.getFave -Возвращает избранные аккаунты - -### market.getViewed -Возвращает просмотренные аккаунты - -### market.getItem -Возвращает информацию об аккаунте - * `itemId: number` - айди аккаунта - -### market.reserve -Резервирует аккаунт -Время резервирования - 300 секунд - * `itemId: number` - айди аккаунта - * `price: number` - текущая цена аккаунта в вашей валюте - -### market.cancelReserve -Отменяет резервирование - * `itemId: number` - айди аккаунта - -### market.checkAccount -Проверяет аккаунт - * `itemId: number` - айди аккаунта - -### market.confirmBuy -Подтверждает покупку - * `itemId: number` - айди аккаунта - -### market.transfer -Переводит деньги другому пользователю - * `userId?: number` - айди пользователя - * `username?: string` - юзернейм пользователя - * `amount: number` - сумма в вашей валюте - * `currency: string` - валюта для параметра amount - * `holdLengthValue: number` - значение холда - * `holdLengthOption: 'hour'|'day'|'week'|'month'|'year'` - тип значения холда - * `secretAnswer: string` - секретное слово - -### market.addItem -Добавляет аккаунт - * `title?: string` - название аккаунта, если не указано, titleEn будет автоматически переведен на русский язык - * `titleEn?: string` - название аккаунта на английском, если не указано, title будет автоматически переведен на английский язык - * `price: number` - цена аккаунта в вашей валюте - * `categoryId?: number` - айди категории, смотреть [тут](https://github.com/grisha2217/Lolzteam-Public-API/blob/master/docs/market_api.markdown#category-id-names-list) - * `currency: string` - валюта для параметра price - * `itemOrigin: string` - происхождение аккаунта - * `description?: string` - публичное описание аккаунта - * `information?: string` - приватная информация об аккаунте (видно только покупателю) - * `emailLoginData?: string` - почта от аккаунта (login:pass) - * `emailType?: 'native'|'autoreg'` - тип почты - * `allowAskDiscount?: boolean` - разрешать пользователям просить скидку - -### market.checkItem -Проверяет добавленный аккаунт - * `itemId: number` - айди аккаунта - * `closeItem?: number` - если true, объявление будет закрыто - -### market.getEmailCode -Получает код или ссылку с почты - * `itemId: number` - айди аккаунта - * `email: string` - почта от аккаунта - -### market.changePassword -Меняет пароль от аккаунта - * `itemId: number` - айди аккаунта - * `_cancel: boolean` - убрать рекомендацию смены пароля. Будет полезно, если вы хотите не меняя пароль получить денные для входа - -### market.editItem -Редактирует аккаунт - * `itemId: number` - айди аккаунта - * `title?: string` - название аккаунта, если не указано, titleEn будет автоматически переведен на русский язык - * `titleEn?: string` - название аккаунта на английском, если не указано, title будет автоматически переведен на английский язык - * `price?: number` - цена аккаунта в вашей валюте - * `itemOrigin?: string` - происхождение аккаунта - * `description?: string` - публичное описание аккаунта - * `information?: string` - приватная информация об аккаунте (видно только покупателю) - * `hasEmailLoginData?: string` - true если есть данные от почты - * `emailLoginData?: string` - почта от аккаунта (login:pass) - * `emailType?: 'native'|'autoreg'` - тип почты - * `allowAskDiscount?: boolean` - разрешать пользователям просить скидку - * `currency?: string` - валюта для параметра price - -### market.addTag -Добавляет тег к аккаунту - * `itemId: number` - айди аккаунта - * `tagId: number` - айди тега - -### market.deleteTag -Удаляет тег из аккаунта - * `itemId: number` - айди аккаунта - * `tagId: number` - айди тега - -### market.getUserItems -Возвращает все объявления пользователя - * `userId?: number` - айди пользователя, если не указано берется айди текущего пользователя - * `categoryId?: number` - айди категории, смотреть [тут](https://github.com/grisha2217/Lolzteam-Public-API/blob/master/docs/market_api.markdown#category-id-names-list) - * `pmin?: number` - минимальная цена аккаунта (включительно) - * `pmax?: number` - максимальная цена аккаунта (включительно) - * `title?: string` - слово или слова, содержащиеся в названии аккаунта - * `...categoryParams` - параметры для конкретной категории, узнать их можно с помощью метода market.getCategoryParams - -### market.getCategoryParams -Возвращает параметры поиска для конкретной категории - * `categoryName: string` - название категории (например, steam) - -### market.getGames -Возвращает список игр -* `categoryName: string` - название категории (например, steam) - -### market.getNotPublishedItem -Возвращает неопубликованное объявления пользователя - * `itemId?: number` - айди объявление - * `resellItemId?: number` - айди объявления, которое вы хотите перепродать - -### market.deleteItem -Удаляет аккаунт - * `itemId: number` - айди аккаунта - * `reason: string` - причина удаления - -### market.getMafile -Возвращает MaFile stam аккаунта - * `itemId: number` - айди аккаунта - -### market.getGuardCode -Возвращает код steam guard аккаунта - * `itemId: number` - айди аккаунта - -### market.getTelegramCode -Возвращает код для входа в telegram аккаунт - * `itemId: number` - айди аккаунта - -### market.resetTelegramAuth -Сбрасывает сессии telegram аккаунта - * `itemId: number` - айди аккаунта - -### market.getTempEmailPassword -Возвращает пароль от временной почты аккаунта - * `itemId: number` - айди аккаунта - -### market.fave -Добавляет аккаунт в избранное - * `itemId: number` - айди аккаунта - -### market.unFave -Удаляет аккаунт из избранного - * `itemId: number` - айди аккаунта - -### market.stickItem -Закрепляет аккаунт - * `itemId: number` - айди аккаунта - -### market.unStickItem -Открепляет аккаунт - * `itemId: number` - айди аккаунта - -### market.changeOwner -Меняет владельца аккаунта - * `itemId: number` - айди аккаунта - * `username: string` - имя пользователя - * `secretAnswer: string` - секретное слово - -### market.steamValue -Возвращает стоимость инвентаря steam аккаунта - * `link: number` - ссылка на аккаунт https://lzt.market/{item-id}/, https://steamcommunity.com/id/{steam-name}, https://steamcommunity.com/profiles/{steam-id}, {steam-id} - * `appId: ID игры` - ID игры по которой будет считаться стоимость инвентаря - * `currency: string` - валюта - * `ignoreCache?: boolean` - игнорировать кэш -#### ID игр - * `730` - CS:GO - * `578080` - PUBG - * `753` - Steam - * `570` - Dota 2 - * `440` - Team Fortress 2 - * `252490` - Rust - * `304930` - Unturned - * `232090` - Killing Floor 2 - * `322330` - Don't Starve Together - -### market.fastBuy -Быстрая покупка аккаунта - * `itemId: number` - айди аккаунта - * `price: number` - цена аккаунта в вашей валюте - * `skipValidation?: boolean` - пропустить проверку на валид - -### market.fastSell -Быстрая продажа аккаунта -* `title?: string` - название аккаунта, если не указано, titleEn будет автоматически переведен на русский язык -* `titleEn?: string` - название аккаунта на английском, если не указано, title будет автоматически переведен на английский язык -* `price: number` - цена аккаунта в вашей валюте -* `categoryId?: number` - айди категории, смотреть [тут](https://github.com/grisha2217/Lolzteam-Public-API/blob/master/docs/market_api.markdown#category-id-names-list) -* `currency: string` - валюта для параметра price -* `itemOrigin: string` - происхождение аккаунта -* `description?: string` - публичное описание аккаунта -* `information?: string` - приватная информация об аккаунте (видно только покупателю) -* `login?: string` - логин от аккаунта -* `password?: string` - пароль от аккаунта -* `loginPassword?: string` - логин и пароль от аккаунта (login:pass) -* `hasEmailLoginData?: string` - true если есть данные от почты -* `emailLoginData?: string` - почта от аккаунта (login:pass) -* `emailType?: 'native'|'autoreg'` - тип почты -* `allowAskDiscount?: boolean` - разрешать пользователям просить скидку -* `closeItem?: boolean` - закрыть объявление после добавления -* `proxyId?: number` - айди прокси -* `randomProxy?: boolean` - использовать случайный прокси -* `extraData?: object` - данные для добавления аккаунта список полей можно найти в [документации](https://docs.api.zelenka.guru/?market) см. метод `POST /fast-sell` - -### market.bumpItem -Поднимает аккаунт в списка - * `itemId: number` - айди аккаунта - -### market.getCategories -Возвращает список категорий -* `topQueries?: boolean` - если true, вернет популярные запросы категорий - -### market.getMe -Возвращает информацию о текущем пользователе - -### market.editMe -Редактирует информацию о текущем пользователе -* `disableSteamGuard?: boolean` - выключать Steam Guard при покупке -* `userAllowAskDiscount?: boolean` - разрешать пользователям просить скидку -* `maxDiscountPercent?: number` - максимальный процент скидки -* `allowAcceptAccounts?: boolean` - разрешать принимать аккаунты -* `hideFavorites?: boolean` - скрывать избранные аккаунты - -### market.getProxys -Возвращает список прокси - -### market.addProxy -Добавляет прокси -* `proxyIP: string` - ip прокси -* `proxyPort: number` - порт прокси -* `proxyLogin: string` - логин прокси -* `proxyPassword: string` - пароль прокси -* `proxyRow?: string` - строка прокси например `ip:port:user:pass` новое прокси с новой строки - - -### market.deleteProxy -Удаляет прокси -* `proxyId: number` - айди прокси -* `deleteAll?: boolean` - удалить все прокси - -### market.getAuction -Получение информации об аукционе -* `itemId: number` - айди аккаунта - -### market.addBid -Добавление новой ставки на аукцион -* `itemId: number` - айди аккаунта -* `amount: number` - сумма в вашей валюте -* `currency: string` - валюта для параметра amount - -### market.removeBid -Удаление ставки с аукциона -* `itemId: number` - айди аккаунта -* `bidId: number` - айди ставки, можно узнать с помощью метода market.getAuction \ No newline at end of file diff --git a/example.js b/example.js deleted file mode 100644 index e70918c..0000000 --- a/example.js +++ /dev/null @@ -1,5 +0,0 @@ -import { LZTApi } from './src/api.js' - -const api = new LZTApi({ token: 'b5f0a0cadb79603f07ff8bf53255d3de0a478acf' }) - -console.log(await api.market.getPayments()) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 505fed3..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3125 +0,0 @@ -{ - "name": "@lolzteam/sdk", - "version": "0.2.6", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@lolzteam/sdk", - "version": "0.2.6", - "license": "GPL-3.0", - "dependencies": { - "node-fetch": "^3.2.3", - "p-queue": "^7.3.4" - }, - "devDependencies": { - "@babel/eslint-parser": "^7.17.0", - "eslint": "^8.15.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", - "dev": true, - "dependencies": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "peer": true, - "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ], - "peer": true - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", - "dev": true, - "peer": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.2.3", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fetch-blob": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz", - "integrity": "sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/glob": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", - "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", - "dev": true, - "peer": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-queue": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", - "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", - "dependencies": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "peer": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true, - "peer": true - }, - "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "peer": true - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true - } - } - }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "peer": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "peer": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", - "dev": true, - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", - "dev": true, - "peer": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "peer": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.2.3", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fetch-blob": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz", - "integrity": "sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true - }, - "glob": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", - "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", - "dev": true, - "peer": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-queue": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", - "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", - "requires": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - } - }, - "p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "peer": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "peer": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/package.json b/package.json index 5cc2d5f..17cae31 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,34 @@ { - "name": "@lolzteam/sdk", - "version": "0.2.6", - "description": "Lolzteam API for node.js", - "license": "GPL-3.0", - "main": "src/index.js", - "repository": { - "type": "git", - "url": "https://github.com/NztForum/node-lzt" - }, - "author": "lolzteam", - "private": false, - "bugs": { - "url": "https://github.com/NztForum/node-lzt/issues" - }, - "type": "module", - "keywords": [ - "lzt", - "lolz", - "lolzteam" - ], - "dependencies": { - "node-fetch": "^3.2.3", - "p-queue": "^7.3.4" - }, - "files": [ - "src" - ], - "engines": { - "node": ">=14.0.0" - }, - "lockfileVersion": "2", - "devDependencies": { - "@babel/eslint-parser": "^7.17.0", - "eslint": "^8.15.0" - }, - "scripts": { - "test": "npx eslint ." - } -} + "name": "@lolzteam/sdk", + "type": "module", + "author": "lolzteam", + "version": "1.0.0", + "description": "Lolzteam API for Node.js", + "license": "GPL-3.0", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": {}, + "repository": { + "type": "git", + "url": "https://github.com/NztForum/node-lzt" + }, + "bugs": { + "url": "https://github.com/NztForum/node-lzt/issues" + }, + "keywords": [ + "lzt", + "lolz", + "lolzteam", + "api" + ], + "dependencies": { + "p-queue": "^8.0.1", + "undici": "^6.11.1" + }, + "devDependencies": { + "@apidevtools/swagger-parser": "^10.1.0", + "@types/node": "^20.12.5", + "typescript": "^5.4.4" + } +} \ No newline at end of file diff --git a/scripts/generate.ts b/scripts/generate.ts new file mode 100644 index 0000000..4bd5b66 --- /dev/null +++ b/scripts/generate.ts @@ -0,0 +1,106 @@ +import fs from 'fs/promises' +import type { OpenAPI, OpenAPIV2, OpenAPIV3 } from 'openapi-types' +import { convertType, makeInterface, makeMethod } from './src/codegen' +import { parseSwagger, camelCase, sentenceCase, resolveRef } from './src/utils' + +const groups = [{ + key: 'forum', + url: 'scripts/forum.json' +}, { + key: 'market', + url: 'https://docs.api.zelenka.guru/swagger/market.json\n' +}] as const + +for (const group of groups) { + const skey = sentenceCase(group.key) + const { paths, components } = await parseSwagger(group.url) as OpenAPIV3.Document + + let request_types = '// auto-generated, don\'t edit manually\n\n', + response_types = request_types + + let code = +`import { ApiGroup } from './base' + +class ${skey}Api extends ApiGroup {\n` + + for (const pathname in paths) { + if (pathname.startsWith('/oauth')) continue + + const methods = paths[pathname] + for (const http_method in methods) { + // @ts-ignore + const method = methods[http_method] as OpenAPI.Operation + if (!method.summary) continue + + // TODO: requestBody + + const parameters = method.parameters as OpenAPIV2.ParameterObject[] || [] + const methodName = method.summary.replace(/\W/g, '') + + // Унижение невинных девственниц, сосание мела и дрочка ежам, + // насилие над курочками, засовывание различных предметов девочкам в их дырку + + let optionalParams = true + + request_types += makeInterface({ + name: methodName + 'Request', + params: parameters.map(item => { + item = resolveRef(item, components!) + if (item.required) + optionalParams = false + + return [ + item.name, + convertType(item.schema as OpenAPIV2.SchemaObject), + item.description || '', + !item.required + ] + }) + }) + + code += makeMethod({ + optionalParams, + pathname, http_method, + tsdoc: method.description, + paramsType: methodName + 'Request', + returnType: methodName + 'Response', + name: camelCase(method.summary.replace(/ \(.+\)/, '')) + }) + + // я в рот трахал типы этой либы + let хуятина_блять = (method.responses!['200'] as any)['content'] + хуятина_блять = хуятина_блять['application/json'] || хуятина_блять['text/html'] + const schema = resolveRef(хуятина_блять.schema, components!) as OpenAPIV2.SchemaObject + + response_types += makeInterface({ + name: methodName + 'Response', + params: schema.properties ? Object.entries(schema.properties).map(([name, item]) => { + return [ + name, + convertType(item as OpenAPIV2.SchemaObject), + item.description || '', + !item.required + ] + }) : [] + }) + } + } + + code = code.slice(0, -2) + `\n}\n\nexport default ${skey}Api` + request_types = request_types.slice(0, -2) + response_types = response_types.slice(0, -2) + + await Promise.all([ + fs.unlink(`src/groups/${group.key}.ts`).catch(() => 0), + fs.unlink(`src/types/${group.key}_requests.d.ts`).catch(() => 0), + fs.unlink(`src/types/${group.key}_responses.d.ts`).catch(() => 0) + ]) + + await Promise.all([ + fs.writeFile(`src/groups/${group.key}.ts`, code), + fs.writeFile(`src/types/${group.key}_requests.d.ts`, request_types), + fs.writeFile(`src/types/${group.key}_responses.d.ts`, response_types) + ]) +} + +console.log('Done.') \ No newline at end of file diff --git a/scripts/src/codegen.ts b/scripts/src/codegen.ts new file mode 100644 index 0000000..717e2f8 --- /dev/null +++ b/scripts/src/codegen.ts @@ -0,0 +1,94 @@ +/* + Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. + Это не то. Это не фроала и даже не чосены. Сюда лучше не лезть. Серьезно, + любой из вас будет жалеть. Лучше закройте файл и забудьте, что тут писалось. + Я вполне понимаю, что данным комментарием вызову дополнительный интерес, + но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут. + */ + +import type { OpenAPIV2 } from 'openapi-types' + +function makeMethod (opts: { + name: string + returnType: string + paramsType: string + optionalParams: boolean + http_method: string + pathname: string + tsdoc?: string +}) { + if (opts.tsdoc) { + opts.tsdoc = opts.tsdoc.split(/\n+/).map(i => ` // ${i}`).join('\n') + '\n' + } + + return `${opts.tsdoc || ''} async ${opts.name} (params: ${opts.paramsType}${opts.optionalParams ? ' = {}' : ''}): Promise<${opts.returnType}> { + return await this.api.call( + '${opts.http_method.toUpperCase()}', + this.endpoint + \`${opts.pathname.replace(/\{/g, '${params.')}\`, + params + ) + }\n\n` +} + +function makeInterface (opts: { + name: string + params: [string, string, string, boolean][] +}) { + let params = '' + for (let [name, type, doc, undef] of opts.params) { + if (name == 'system_info') continue + + if (doc) params += ` // ${doc.replace(/\n/g, '').replace(/\r/, '\\n')}\n` + if (name.match(/\W/)) name = `'${name}'` + params += ` ${name}${undef ? '?' : ''}: ${type}\n` + } + + return `interface ${opts.name} {\n${params}}\n\n` +} + +function convertType ( + schema: OpenAPIV2.SchemaObject +) { + if (schema.enum) { + if (schema.enum[0] == 'true') + return 'true' + + if (schema.type == 'string') + schema.enum = schema.enum.map((i: string) => `'${i}'`) + + return schema.enum.join(' | ') + } + + if (schema.type == 'array') { + // @ts-ignore + return `Array<${schema.items.type}>` + } + + if (schema.type == 'object') { + if (!schema.properties) { + return 'unknown' + } + + const req = schema.required! || [] + const props: Record = [] + + for (const key in schema.properties) { + const newkey = (key + (!req.includes(key) ? '?' : '')).replace(/\{/, '[').replace(/}\??/, ': string]') + props.push(`${newkey}: ${convertType(schema.properties[key])}`) + } + + const add = schema.additionalProperties + if (add) { // @ts-ignore + props.push(`[key: string]: ${add.type}`) + } + + return `{ ${props.join(', ')} }` + } + + if (schema.type == 'integer') + return 'number' + + return 'string' +} + +export { makeMethod, makeInterface, convertType } \ No newline at end of file diff --git a/scripts/src/utils.ts b/scripts/src/utils.ts new file mode 100644 index 0000000..c07476e --- /dev/null +++ b/scripts/src/utils.ts @@ -0,0 +1,36 @@ +import SwaggerParser from '@apidevtools/swagger-parser' +import type { OpenAPIV2 } from 'openapi-types' + +async function parseSwagger (url: string) { + const data = await SwaggerParser.parse(url) + if (!data.paths) { + console.error('cant parse docs') + process.exit(1) + } + + return data +} + +function camelCase (str: string) { + return str.toLowerCase().split(' ').reduce((s, c) => s + + (c.charAt(0).toUpperCase() + c.slice(1))) +} + +function sentenceCase (str: string) { + str = str.toLowerCase() + return str.charAt(0).toUpperCase() + str.slice(1) +} + +function resolveRef ( + schema: OpenAPIV2.ParameterObject, + components: Record +): OpenAPIV2.ParameterObject { + if ('$ref' in schema) { + const ref = String(schema.$ref).split('/').slice(-2) + return components[ref[0]][ref[1]] + } + + return schema +} + +export { parseSwagger, camelCase, sentenceCase, resolveRef } \ No newline at end of file diff --git a/src/api.js b/src/api.js deleted file mode 100644 index 40e6c1d..0000000 --- a/src/api.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as LZTApiGroups from './api/index.js' -import { LZTApiCaller } from './caller.js' - -export class LZTApi { - constructor(options) { - this.options = { - endpoint: 'https://api.lzt.market/', - locale: 'ru', - ...options - } - - this.caller = new LZTApiCaller(this.options) - - for(const key in LZTApiGroups) { - const Group = LZTApiGroups[key] - const group = new Group(this.caller) - this[Group.name] = group - } - } -} diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 0000000..de005a4 --- /dev/null +++ b/src/api.ts @@ -0,0 +1,83 @@ +import PQueue from 'p-queue' +import { LZTApiError } from './error' +import { type Dispatcher, FormData, request } from 'undici' + +import ForumApi from './groups/forum' +import MarketApi from './groups/market' + +class LZTApi { + queue: PQueue + options: LZTApiOptions + + forum: ForumApi + market: MarketApi + + constructor ( + options: Partial & { token: string } + ) { + this.options = { + locale: 'ru', + interval: 3000, + rate_limit: [3, 20], + endpoint: 'https://api.zelenka.guru', + marketEndpoint: 'https://api.lzt.market', + ...options + } + + const rl = this.options.rate_limit + this.queue = new PQueue({ + concurrency: 1, + interval: rl[1], + intervalCap: rl[0] * 2 + }) + + this.forum = new ForumApi(this.options.endpoint, this) + this.market = new MarketApi(this.options.marketEndpoint, this) + } + + async call ( + method: Dispatcher.HttpMethod, + url: string, + params: Record = {} + ): Promise { + const options: Partial = { + method, + headers: { + 'Accept': 'application/json', + 'User-Agent': 'node-lzt/1.0.0', + 'Authorization': `Bearer ${this.options.token}` + } + } + + params.locale ||= this.options.locale + + if (['GET', 'PUT', 'DELETE'].includes(method)) { + url += '?' + String(new URLSearchParams(params)) + } else { + options.body = new FormData() + for (const key in params) + options.body.set(key, params[key]) + } + + const result = this.queue.add(() => request(url, options)) + this.queue.add(() => new Promise(r => setTimeout(r, this.options.interval))) + + const { statusCode, headers, body } = await result as Dispatcher.ResponseData + + if (statusCode != 200 && !headers['content-type']?.includes('application/json')) { + throw new LZTApiError(`HTTP Error ${statusCode}`) + } + + const json = await body.json() as ApiResponse | ApiError + + if ('errors' in json) { + throw new LZTApiError(json.errors.join('\n')) + } else if ('error' in json) { + throw new LZTApiError(json.error_description || json.error) + } + + return json + } +} + +export { LZTApi } \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js deleted file mode 100644 index 30de0d7..0000000 --- a/src/api/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './users.js' -export * from './market.js' diff --git a/src/api/market.js b/src/api/market.js deleted file mode 100644 index 775ff87..0000000 --- a/src/api/market.js +++ /dev/null @@ -1,380 +0,0 @@ -import { LZTApiGroup } from '../apiGroup.js' -import { LZTApiError } from '../errors.js' - -export class LZTApiMarketGroup extends LZTApiGroup { - static name = 'market' - - #userId = null - - async #getMyUserId() { - if(!this.#userId) - await this.getUser() - - if(!this.#userId) - throw new LZTApiError('Cannot get my userId') - - return this.#userId - } - - async search({ - categoryName = null, - pmin, pmax, title, - showStickyItems, - ...categoryParams - } = {}) { - return await this.caller.call( - 'GET', - categoryName ? `/${categoryName}` : '/', - { - pmin, pmax, title, - showStickyItems: showStickyItems ? 1 : undefined, - ...categoryParams - } - ) - } - - async getUser() { - const resp = await this.caller.call('GET', '/user') - - if(!this.#userId && resp?.user?.user_id) - this.#userId = resp.user.user_id - - return resp - } - - async getUserItems({ - userId = null, - categoryId, - pmin, pmax, - title, - ...categoryParams - }) { - if(!userId) - userId = await this.#getMyUserId() - - return await this.caller.call('GET', `/user/${userId}/items/`, { - category_id: categoryId, - pmin, pmax, - title, - ...categoryParams - }) - } - - async getPayments({ - userId = null, - type, pmin, pmax, - receiver, sender, - startDate, endDate, - wallet, comment, isHold - } = {}) { - if(!userId) - userId = await this.#getMyUserId() - - return await this.caller.call('GET', `/user/${userId}/payments`, { - type, pmin, pmax, - receiver, sender, - startDate, endDate, - wallet, comment, - is_hold: isHold ? 1 : undefined - }) - } - - async getOrders({ - userId = null, - categoryId, - pmin, pmax, - title, - ...categoryParams - } = {}) { - if(!userId) - userId = await this.#getMyUserId() - - return await this.caller.call('GET', `/user/${userId}/orders`, { - category_id: categoryId, - pmin, pmax, - title, - ...categoryParams - }) - } - - async getFave() { - return await this.caller.call('GET', '/fave') - } - - async getViewed() { - return await this.caller.call('GET', '/viewed') - } - - async getItem({ itemId } = {}) { - return await this.caller.call('GET', `/${itemId}`) - } - - async reserve({ itemId, price } = {}) { - return await this.caller.call('POST', `/${itemId}/reserve`, { price }) - } - - async cancelReserve({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/cancel-reserve`) - } - - async checkAccount({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/check-account`) - } - - async confirmBuy({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/confirm-buy`) - } - - async fastBuy({ itemId, price, skipValidation} = {}) { - return await this.caller.call('POST', `/${itemId}/fast-buy`, { - buy_without_validation: skipValidation ? 1 : undefined, - price - }) - } - - async transfer({ - userId, username, - amount, currency, - secretAnswer, - holdLengthValue, - holdLengthOption - } = {}) { - return await this.caller.call('POST', '/balance/transfer/', { - user_id: userId, - username, amount, currency, - secret_answer: secretAnswer, - transfer_hold: holdLengthValue ? 1 : undefined, - hold_length_value: holdLengthValue, - hold_length_option: holdLengthOption - }) - } - - async addItem({ - title, titleEn, - price, - categoryId, - currency, - itemOrigin, - description, information, - emailLoginData, - emailType, - allowAskDiscount - } = {}) { - return await this.caller.call('POST', '/item/add/', { - title, - title_en: titleEn, - price, - category_id: categoryId, - currency, - item_origin: itemOrigin, - description, information, - has_email_login_data: emailLoginData ? 1 : undefined, - email_login_data: emailLoginData, - email_type: emailType, - allow_ask_discount: allowAskDiscount - }) - } - async getNotPublishedItem({ itemId, resellItemId } = {}) { - return await this.caller.call('GET', `/${itemId}/goods/add/`, { resell_item_id: resellItemId }) - } - async checkItem({ itemId, closeItem } = {}) { - return await this.caller.call('POST', `/${itemId}/goods/check`, { - close_item: closeItem - }) - } - - async getEmailCode({ itemId, email } = {}) { - return await this.caller.call('GET', `/${itemId}/email-code/`, { email }) - } - - async refuseGuarantee({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/refuse-guarantee`) - } - - async changePassword({ itemId, _cancel } = {}) { - return await this.caller.call('POST', `/${itemId}/change-password`, { - _cancel: _cancel ? 1 : undefined - }) - } - - async editItem({ - itemId, currency, ...fields - } = {}) { - const params = { currency } - - const transformField = field => - field.replace(/[A-Z]/g, char => `_${char.toLowerCase()}`) - - for(const key of Object.keys(fields)) - params[`key_values[${transformField(key)}]`] = typeof fields[key] === 'boolean' - ? fields[key] - ? 1 - : undefined - : fields[key] - - return await this.caller.call('POST', `/${itemId}/edit/`, params) - } - - async addTag({ itemId, tagId } = {}) { - return await this.caller.call('POST', `/${itemId}/tag/`, { tag_id: tagId }) - } - - async deleteTag({ itemId, tagId } = {}) { - return await this.caller.call('DELETE', `/${itemId}/tag/`, { tag_id: tagId }) - } - - async deleteItem({ itemId, reason } = {}) { - return await this.caller.call('DELETE', `/${itemId}`, { reason }) - } - - async getMafile({ itemId } = {}) { - return await this.caller.call('GET', `/${itemId}/mafile/`) - } - - async getGuardCode({ itemId } = {}) { - return await this.caller.call('GET', `/${itemId}/guard-code/`) - } - - async getTelegramCode({ itemId } = {}) { - return await this.caller.call('GET', `/${itemId}/telegram-login-code/`) - } - - async resetTelegramAuth({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/telegram-reset-authorizations/`) - } - - async getTempEmailPassword({ itemId } = {}) { - return await this.caller.call('GET', `/${itemId}/temp-email-password/`) - } - - async fave({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/star/`) - } - - async unFave({ itemId } = {}) { - return await this.caller.call('DELETE', `/${itemId}/star/`) - } - - async stickItem({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/stick/`) - } - - async unstickItem({ itemId } = {}) { - return await this.caller.call('DELETE', `/${itemId}/stick/`) - } - - async changeOwner({ itemId, username, secretAnswer } = {}) { - return await this.caller.call('POST', `/${itemId}/change-owner/`, { - username, - secret_answer: secretAnswer - }) - } - - async steamValue({ link, appId, currency, ignoreCache } = {}) { - return await this.caller.call('GET', `/steam-value/`, { - link, app_id: appId, currency, ignore_cache: ignoreCache ? 1 : 0 - }) - } - - async steamPreview({ itemId, type } = {}) { - return await this.caller.call('GET', `/${itemId}/steam-preview/`, { type }) - } - - async getCategoryParams({ categoryName } = {}) { - return await this.caller.call('GET', `/${categoryName}/params/`) - } - - async getGames({ categoryName } = {}) { - return await this.caller.call('GET', `/${categoryName}/games/`) - } - - - async bumpItem({ itemId } = {}) { - return await this.caller.call('POST', `/${itemId}/bump/`) - } - - async getCategories({ topQueries } = {}) { - return await this.caller.call('GET', `/category/`, { top_queries: topQueries ? 1 : 0 }) - } - - async getMe() { - return await this.caller.call('GET', `/me/`) - } - - async editMe({ disableSteamGuard, userAllowAskDiscount, maxDiscountPercent, allowAcceptAccounts, hideFavorites, vkUa } = {}) { - return await this.caller.call('PUT', `/me/`, { - disable_steam_guard: disableSteamGuard, - user_allow_ask_discount: userAllowAskDiscount, - max_discount_percent: maxDiscountPercent, - allow_accept_accounts: allowAcceptAccounts, - hide_favorites: hideFavorites, - vk_ua: vkUa - }) - } - - async getProxys() { - return await this.caller.call('GET', `/proxy/`) - } - - async addProxy({ proxyIP, proxyPort, proxyLogin, proxyPassword, proxyRow } = {}) { - return await this.caller.call('POST', `/proxy/`, { - proxy_ip: proxyIP, - proxy_port: proxyPort, - proxy_user: proxyLogin, - proxy_pass: proxyPassword, - proxy_row: proxyRow - }) - } - - async deleteProxy({ proxyId, deleteAll } = {}) { - return await this.caller.call('DELETE', `/proxy/`, { - proxy_id: proxyId, - delete_all: deleteAll ? 1 : 0 - }) - } - - async fastSell({ - title, titleEn, - price, categoryId, - currency, itemOrigin, - extendedGuarantee, - description, information, - login, password, loginPassword, - hasEmailLoginData, EmailLoginData, - closeItem, emailType, allowAskDiscount, - proxyId, randomProxy, extraData } = {}) { - return await this.caller.call('POST', `/item/fast-sell`, { - title, title_en: titleEn, - price, category_id: categoryId, - currency, item_origin: itemOrigin, - extended_guarantee: extendedGuarantee, - description, information, - login, password, login_password: loginPassword, - has_email_login_data: hasEmailLoginData, - email_login_data: EmailLoginData, - close_item: closeItem, - email_type: emailType, - allow_ask_discount: allowAskDiscount, - proxy_id: proxyId, - random_proxy: randomProxy, - extra: extraData - }) - } - - async getAuction({ itemId } = {}){ - return await this.caller.call('GET', `/${itemId}/auction`) - } - - async addBid({ itemId, currency, amount } = {}){ - return await this.caller.call('POST', `/${itemId}/auction/bid`, { - currency, - amount - }) - } - - async removeBid({ itemId, bidId } = {}) { - return await this.caller.call('DELETE', `/${itemId}/auction/bid`, { - bid_id: bidId - }) - } -} diff --git a/src/api/users.js b/src/api/users.js deleted file mode 100644 index b31c959..0000000 --- a/src/api/users.js +++ /dev/null @@ -1,104 +0,0 @@ -import { LZTApiGroup } from '../apiGroup.js' - -export class LZTApiUsersGroup extends LZTApiGroup { - static name = 'users' - - async getUsers({ page, limit } = {}) { - return await this.caller.call('GET', '/users', { page, limit }) - } - - async create({ - userEmail, username, password, passwordAlgo, - userDobDay, userDobMonth, userDobYear, - fields, clientId, extraData, extraTimestamp - } = {}) { - return await this.caller.call('POST', '/users', { - user_email: userEmail, - username, - password, - password_algo: passwordAlgo, - user_dob_day: userDobDay, - user_dob_month: userDobMonth, - user_dob_year: userDobYear, - fields, - client_id: clientId, - extra_data: extraData, - extra_timestamp: extraTimestamp - }) - } - - async getFields() { - return await this.caller.call('GET', '/users/fields') - } - - async getUser({ userId = 'me' } = {}) { - return await this.caller.call('GET', `/users/${userId}`) - } - - async edit({ - userId = 'me', fields, - password, passwordOld, passwordAlgo, - userEmail, username, userTitle, - primaryGroupId, secondaryGroupIds, - userDobDay, userDobMonth, userDobYear - } = {}) { - return await this.caller.call('PUT', `/users/${userId}`, { - password, - password_old: passwordOld, - password_algo: passwordAlgo, - user_email: userEmail, - username, - user_title: userTitle, - primary_group_id: primaryGroupId, - secondary_group_ids: secondaryGroupIds, - user_dob_day: userDobDay, - user_dob_month: userDobMonth, - user_dob_year: userDobYear, - fields - }) - } - - async setAvatar({ userId = 'me', avatar } = {}) { - return await this.caller.call('POST', `/users/${userId}/avatar`, { avatar }) - } - - async deleteAvatar({ userId = 'me' } = {}) { - return await this.caller.call('DELETE', `/users/${userId}/avatar`) - } - - async getFollowers({ userId = 'me', order, page, limit } = {}) { - return await this.caller.call('GET', `/users/${userId}/followers`, { order, page, limit }) - } - - async follow({ userId = 'me' } = {}) { - return await this.caller.call('POST', `/users/${userId}/followers`) - } - - async unfollow({ userId = 'me' } = {}) { - return await this.caller.call('DELETE', `/users/${userId}/followers`) - } - - async getFollowings({ userId = 'me', order, page, limit } = {}) { - return await this.caller.call('GET', `/users/${userId}/followings`, { order, page, limit }) - } - - async getIgnored() { - return await this.caller.call('GET', '/users/ignored') - } - - async ignore({ userId = 'me' } = {}) { - return await this.caller.call('GET', `/users/${userId}/ignore`) - } - - async uningore({ userId = 'me' } = {}) { - return await this.caller.call('DELETE', `/users/${userId}/ignore`) - } - - async getGroups() { - return await this.caller.call('GET', '/users/groups') - } - - async getUserGroups({ userId = 'me' } = {}) { - return await this.caller.call('GET', `/users/${userId}/groups`) - } -} diff --git a/src/apiGroup.js b/src/apiGroup.js deleted file mode 100644 index d827926..0000000 --- a/src/apiGroup.js +++ /dev/null @@ -1,5 +0,0 @@ -export class LZTApiGroup { - constructor(caller) { - this.caller = caller - } -} diff --git a/src/caller.js b/src/caller.js deleted file mode 100644 index 958f0ad..0000000 --- a/src/caller.js +++ /dev/null @@ -1,57 +0,0 @@ -import fetch, { FormData } from 'node-fetch' -import PQueue from 'p-queue' -import { LZTApiError } from './errors.js' - -const DEFAULT_MIN_INTERVAL_BETWEEN_REQUESTS_MS = 3000; - -export class LZTApiCaller { - constructor(options = {}) { - this.options = options - if(this.options.interval_between_requests === undefined) { - this.options.interval_between_requests = DEFAULT_MIN_INTERVAL_BETWEEN_REQUESTS_MS; - } - this.queue = new PQueue({ concurrency: 1 }) - } - - async call(method, path, params = {}) { - const url = new URL(path, this.options.endpoint) - const options = { - ...this.options.fetchParams, - method, - headers: { - Authorization: `Bearer ${this.options.token}`, - ...this.options.fetchParams?.headers - } - } - - params.locale = params.locale || this.options.locale - - if(method === 'GET' || method === 'PUT' || method === 'DELETE') { - for(const key of Object.keys(params)) - if(params[key] !== undefined) - url.searchParams.set(key, params[key]) - } else { - options.body = new FormData() - for(const key of Object.keys(params)) - if(params[key] !== undefined) - options.body.set(key, params[key]) - } - - const promise = this.queue.add(() => fetch(url.href, options)) - this.queue.add(() => new Promise(r => setTimeout(r, this.options.interval_between_requests))) - const resp = await promise - - if(resp.status !== 200 && !resp.headers.get('content-type')?.includes("application/json")) { - throw new LZTApiError(resp.statusText); - } - - const json = await resp.json(); - - if(json.errors) - throw new LZTApiError(json.errors) - if(json.error) - throw new LZTApiError(json.error_description || json.error) - - return json - } -} diff --git a/src/error.ts b/src/error.ts new file mode 100644 index 0000000..488121f --- /dev/null +++ b/src/error.ts @@ -0,0 +1,5 @@ +export class LZTApiError extends Error { + constructor (message: string) { + super(message) + } +} \ No newline at end of file diff --git a/src/errors.js b/src/errors.js deleted file mode 100644 index 8d67aa5..0000000 --- a/src/errors.js +++ /dev/null @@ -1,9 +0,0 @@ -export class LZTApiError extends Error { - constructor(error) { - super( - typeof error === 'string' - ? error - : error.join('\n') - ) - } -} diff --git a/src/groups/base.ts b/src/groups/base.ts new file mode 100644 index 0000000..ec094af --- /dev/null +++ b/src/groups/base.ts @@ -0,0 +1,8 @@ +import type { LZTApi } from '../api' + +export class ApiGroup { + constructor ( + protected endpoint: string, + protected api: LZTApi + ) {} +} \ No newline at end of file diff --git a/src/groups/forum.ts b/src/groups/forum.ts new file mode 100644 index 0000000..0d63c28 --- /dev/null +++ b/src/groups/forum.ts @@ -0,0 +1,1035 @@ +import { ApiGroup } from './base' + +class ForumApi extends ApiGroup { + // List of all categories in the system. + // Required scopes: + // + **read** + async getCategories (params: GetCategoriesRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/categories`, + params + ) + } + + // Detail information of a category. + // Required scopes: + // + **read** + async getCategory (params: GetCategoryRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/categories/${params.categoryId}`, + params + ) + } + + // List of all forums in the system. + // Required scopes: + // + **read** + async getForums (params: GetForumsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/forums`, + params + ) + } + + // Detail information of a forum. + // Required scopes: + // + **read** + async getForum (params: GetForumRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/forums/${params.forumId}`, + params + ) + } + + // List of a forum's followers. For privacy reason, only the current user will be included in the list (if the user follows the specified forum). + // Required scopes: + // + **read** + async getFollowers (params: GetFollowersRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/forums/${params.forumId}/followers`, + params + ) + } + + // Follow a forum. + // Required scopes: + // + **post** + async followForum (params: FollowForumRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/forums/${params.forumId}/followers`, + params + ) + } + + // Unfollow a forum. + // Required scopes: + // + **post** + async unfollowForum (params: UnfollowForumRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/forums/${params.forumId}/followers`, + params + ) + } + + // List of followed forums by current user. + // Required scopes: + // + **read** + async getFollowedForums (params: GetFollowedForumsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/forums/followed`, + params + ) + } + + // List of all pages in the system. + // Required scopes: + // + **read** + async getPages (params: GetPagesRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/pages`, + params + ) + } + + // Detail information of a page. + // Required scopes: + // + **read** + async getPage (params: GetPageRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/pages/${params.pageId}`, + params + ) + } + + // List of navigation elements within the system. + // Required scopes: + // + **read** + async getNavigation (params: GetNavigationRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/navigation`, + params + ) + } + + // List of threads in a forum (with pagination). + // Required scopes: + // + **read** + async getThreads (params: GetThreadsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads`, + params + ) + } + + // Create a new thread. + // Required scopes: + // + **post** + async createThread (params: CreateThreadRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/threads`, + params + ) + } + + // Detail information of a thread. + // Required scopes: + // + **read** + async getThread (params: GetThreadRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/${params.threadId}`, + params + ) + } + + // Delete a thread. + // Required scopes: + // + **post** + async deleteThread (params: DeleteThreadRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/threads/${params.threadId}`, + params + ) + } + + // Bump a thread. + // Required scopes: + // + **post** + async bumpThread (params: BumpThreadRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/threads/${params.threadId}/bump`, + params + ) + } + + // List of a thread's followers. For privacy reason, only the current user will be included in the list. + // Required scopes: + // + **read** + async getThreadFollowers (params: GetThreadFollowersRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/${params.threadId}/followers`, + params + ) + } + + // Follow a thread. + // Required scopes: + // + **post** + async followThread (params: FollowThreadRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/threads/${params.threadId}/followers`, + params + ) + } + + // Unfollow a thread. + // Required scopes: + // + **post** + async unfollowThread (params: UnfollowThreadRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/threads/${params.threadId}/followers`, + params + ) + } + + // List of followed threads by current user. + // Required scopes: + // + **read** + async getFollowedThreads (params: GetFollowedThreadsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/followed`, + params + ) + } + + // List of navigation elements to reach the specified thread. + // Required scopes: + // + **read** + async getNavigationElements (params: GetNavigationElementsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/${params.threadId}/navigation`, + params + ) + } + + // Detail information of a poll. + // Required scopes: + // + **read** + async getPoll (params: GetPollRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/${params.threadId}/poll`, + params + ) + } + + // Vote on a thread poll. + // Required scopes: + // + **post** + async votePoll (params: VotePollRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/threads/${params.threadId}/poll/votes`, + params + ) + } + + // List of unread threads (must be logged in). + // Required scopes: + // + **read** + async getUnreadThreads (params: GetUnreadThreadsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/new`, + params + ) + } + + // List of recent threads. + // Required scopes: + // + **read** + async getRecentThreads (params: GetRecentThreadsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/threads/recent`, + params + ) + } + + // List of posts in a thread (with pagination). + // Required scopes: + // + **read** + async getPosts (params: GetPostsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/posts`, + params + ) + } + + // Create a new post. + // Required scopes: + // + **post** + async createPost (params: CreatePostRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/posts`, + params + ) + } + + // Detail information of a post. + // Required scopes: + // + **read** + async getPost (params: GetPostRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/posts/${params.postId}`, + params + ) + } + + // Edit a post. + // Required scopes: + // + **post** + async editPost (params: EditPostRequest): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/posts/${params.postId}`, + params + ) + } + + // Delete a post. + // Required scopes: + // + **post** + async deletePost (params: DeletePostRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/posts/${params.postId}`, + params + ) + } + + // List of users who liked a post. + // Required scopes: + // + **read** + async getPostLikes (params: GetPostLikesRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/posts/${params.postId}/likes`, + params + ) + } + + // Like a post. + // Required scopes: + // + **read** + async likePost (params: LikePostRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/posts/${params.postId}/likes`, + params + ) + } + + // Unlike a post. + // Required scopes: + // + **read** + async unlikePost (params: UnlikePostRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/posts/${params.postId}/likes`, + params + ) + } + + // Report a post. + // Required scopes: + // + **post** + async reportPost (params: ReportPostRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/posts/${params.postId}/report`, + params + ) + } + + // List of post comments in a thread. + // Required scopes: + // + **read** + async getPostComments (params: GetPostCommentsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/posts/${params.postId}/comments`, + params + ) + } + + // Create a new post comment. + // Required scopes: + // + **post** + async createPostComment (params: CreatePostCommentRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/posts/${params.postId}/comments`, + params + ) + } + + // List of popular tags (no pagination). + // Required scopes: + // + **read** + async getPopularTags (params: GetPopularTagsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/tags`, + params + ) + } + + // List of tags. + // Required scopes: + // + **read** + async getTags (params: GetTagsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/tags/list`, + params + ) + } + + // List of tagged contents. + // Required scopes: + // + **read** + async getTaggedContent (params: GetTaggedContentRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/tags/${params.tagId}`, + params + ) + } + + // Filtered list of tags. + // Required scopes: + // + **read** + async getFilteredContent (params: GetFilteredContentRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/tags/find`, + params + ) + } + + // List of users (with pagination). + // Required scopes: + // + **read** + async getUsers (params: GetUsersRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users`, + params + ) + } + + // List of user fields. + // Required scopes: + // + **read** + async getUserFields (params: GetUserFieldsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/fields`, + params + ) + } + + // List of users filtered by username, email or custom fields. + // Required scopes: + // + **read** + // + **admincp** + async findUsers (params: FindUsersRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/find`, + params + ) + } + + // Displays info about your profile. + // Required scopes: + // + **read** + async getProfile (params: GetProfileRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/me`, + params + ) + } + + // Detail information of a user. + // Required scopes: + // + **read** + async getUser (params: GetUserRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/${params.userId}`, + params + ) + } + + // Edit a user. + // Required scopes: + // + **post** + // + **admincp** + async editUser (params: EditUserRequest): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/users/${params.userId}`, + params + ) + } + + // Request a password reset via email. + // Either **username** or **email** parameter must be provided. If both are provided, **username** will be used. + // Required scopes: + // + **None** + async lostPassword (params: LostPasswordRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/lost-password`, + params + ) + } + + // Upload avatar for a user. + // Required scopes: + // + **post** + // + **admincp** + async uploadAvatar (params: UploadAvatarRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/users/${params.userId}/avatar`, + params + ) + } + + // Delete avatar for a user. + // Required scopes: + // + **post** + async deleteAvatar (params: DeleteAvatarRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/users/${params.userId}/avatar`, + params + ) + } + + // Crop avatar for a user. + // Required scopes: + // + **post** + // + **admincp** + async avatarCrop (params: AvatarCropRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/users/${params.userId}/avatar-crop`, + params + ) + } + + // List of a user's followers. + // Required scopes: + // + **read** + async getUserFollowers (params: GetUserFollowersRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/${params.userId}/followers`, + params + ) + } + + // Follow a user. + // Required scopes: + // + **post** + async followUser (params: FollowUserRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/users/${params.userId}/followers`, + params + ) + } + + // Unfollow a user. + // Required scopes: + // + **post** + async unfollowUser (params: UnfollowUserRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/users/${params.userId}/followers`, + params + ) + } + + // List of users whom are followed by a user. + // Required scopes: + // + **read** + async getFollowedUsersByUser (params: GetFollowedUsersByUserRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/${params.userId}/followings`, + params + ) + } + + // List of ignored users of current user. + // Required scopes: + // + **read** + async getIgnoredUsers (params: GetIgnoredUsersRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/ignored`, + params + ) + } + + // Ignore a user. + // Required scopes: + // + **post** + async ignoreUser (params: IgnoreUserRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/users/${params.userId}/ignore`, + params + ) + } + + // Stop ignoring a user. + // Required scopes: + // + **post** + async unignoreUser (params: UnignoreUserRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/users/${params.userId}/ignore`, + params + ) + } + + // List of all user groups. + // Required scopes: + // + **read** + // + **admincp** + async getAllUserGroups (params: GetAllUserGroupsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/groups`, + params + ) + } + + // List of a user's groups. + // Required scopes: + // + **read** + // + **admincp** + async getUserGroups (params: GetUserGroupsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/${params.userId}/groups`, + params + ) + } + + // List of contents created by user (with pagination). + // Required scopes: + // + **read** + async getContents (params: GetContentsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/users/${params.userId}/timeline`, + params + ) + } + + // Create a new profile post on a user timeline. + // Required scopes: + // + **post** + async createProfilePost (params: CreateProfilePostRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/users/${params.userId}/timeline`, + params + ) + } + + // Detail information of a profile post. + // Required scopes: + // + **read** + async getProfilePost (params: GetProfilePostRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/profile-posts/${params.profilePostId}`, + params + ) + } + + // Edit a profile post. + // Required scopes: + // + **post** + async editProfilePost (params: EditProfilePostRequest): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/profile-posts/${params.profilePostId}`, + params + ) + } + + // Delete a profile post. + // Required scopes: + // + **post** + async deleteProfilePost (params: DeleteProfilePostRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/profile-posts/${params.profilePostId}`, + params + ) + } + + // List of users who liked a profile post. + // Required scopes: + // + **read** + async getProfilePostLikes (params: GetProfilePostLikesRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/profile-posts/${params.profilePostId}/likes`, + params + ) + } + + // Like a profile post. + // Required scopes: + // + **post** + async likeProfilePost (params: LikeProfilePostRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/profile-posts/${params.profilePostId}/likes`, + params + ) + } + + // Unlike a profile post. + // Required scopes: + // + **post** + async unlikeProfilePost (params: UnlikeProfilePostRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/profile-posts/${params.profilePostId}/likes`, + params + ) + } + + // List of comments of a profile post. + // Required scopes: + // + **read** + async getProfilePostComments (params: GetProfilePostCommentsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/profile-posts/${params.profilePostId}/comments`, + params + ) + } + + // Create a new profile post comment. + // Required scopes: + // + **post** + async createProfilePostComment (params: CreateProfilePostCommentRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/profile-posts/${params.profilePostId}/comments`, + params + ) + } + + // Detail information of a profile post comment. + // Required scopes: + // + **read** + async getProfilePostComment (params: GetProfilePostCommentRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/profile-posts/${params.profilePostId}/comments/${params.commentId}`, + params + ) + } + + // Delete a profile post's comment. + // Required scopes: + // + **post** + async deleteProfilePostComment (params: DeleteProfilePostCommentRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/profile-posts/${params.profilePostId}/comments/${params.commentId}`, + params + ) + } + + // Report a profile post. + // Required scopes: + // + **post** + async reportProfilePost (params: ReportProfilePostRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/profile-posts/${params.profilePostId}/report`, + params + ) + } + + // List of conversations (with pagination). + // Required scopes: + // + **read** + // + **conversate** + async getConversations (params: GetConversationsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/conversations`, + params + ) + } + + // Create a new conversation. + // Required scopes: + // + **post** + // + **conversate** + async createConversation (params: CreateConversationRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/conversations`, + params + ) + } + + // Detail information of a conversation. + // Required scopes: + // + **read** + // + **conversate** + async getConversation (params: GetConversationRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/conversations/${params.conversationId}`, + params + ) + } + + // Leave the conversation. + // Required scopes: + // + **post** + // + **conversate** + async leaveConversation (params: LeaveConversationRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/conversations/${params.conversationId}`, + params + ) + } + + // List of messages in a conversation (with pagination). + // Required scopes: + // + **read** + // + **conversate** + async getConversationMessages (params: GetConversationMessagesRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/conversation-messages`, + params + ) + } + + // Create a new conversation message. + // Required scopes: + // + **post** + // + **conversate** + async createConversationMessage (params: CreateConversationMessageRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/conversation-messages`, + params + ) + } + + // Detail information of a message. + // Required scopes: + // + **read** + // + **conversate** + async getConversationMessage (params: GetConversationMessageRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/conversation-messages/${params.messageId}`, + params + ) + } + + // Edit a message. + // Required scopes: + // + **post** + // + **conversate** + async editConversationMessage (params: EditConversationMessageRequest): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/conversation-messages/${params.messageId}`, + params + ) + } + + // Delete a message. + // Required scopes: + // + **post** + // + **conversate** + async deleteConversationMessage (params: DeleteConversationMessageRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/conversation-messages/${params.messageId}`, + params + ) + } + + // Report a message. + // Required scopes: + // + **post** + // + **conversate** + async reportConversationMessage (params: ReportConversationMessageRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/conversation-messages/${params.messageId}/report`, + params + ) + } + + // List of notifications (both read and unread). + // Required scopes: + // + **read** + async getNotifications (params: GetNotificationsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/notifications`, + params + ) + } + + // Get associated content of notification. The response depends on the content type. + // Required scopes: + // + **read** + async getNotification (params: GetNotificationRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/notifications/${params.notificationId}/content`, + params + ) + } + + // Send a custom alert. + // Required scopes: + // + **post** + // + **Also: the current user must have the [bd] API: Send custom alert permission** + async customNotification (params: CustomNotificationRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/notifications/custom`, + params + ) + } + + // Mark single notification or all existing notifications read. + // Required scopes: + // + **post** + async markNotificationRead (params: MarkNotificationReadRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/notifications/read`, + params + ) + } + + // Search for threads. + // Required scopes: + // + **post** + async searchThread (params: SearchThreadRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/search/threads`, + params + ) + } + + // Search for posts. + // Required scopes: + // + **post** + async searchPost (params: SearchPostRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/search/posts`, + params + ) + } + + // Search for all supported contents. + // Required scopes: + // + **post** + async search (params: SearchRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/search`, + params + ) + } + + // Search for tagged contents. + // Required scopes: + // + **post** + async searchTagged (params: SearchTaggedRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/search/tagged`, + params + ) + } + + // Execute multiple API requests at once (Separated by comma). Maximum batch jobs is 10. + // Required scopes: + // + Same as called API requests. + async batch (params: BatchRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/batch`, + params + ) + } + + // Index external content data into search system to be searched later. + // Required scopes: + // + **post** + async searchIndexing (params: SearchIndexingRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/search/indexing`, + params + ) + } +} + +export default ForumApi \ No newline at end of file diff --git a/src/groups/market.ts b/src/groups/market.ts new file mode 100644 index 0000000..a20928e --- /dev/null +++ b/src/groups/market.ts @@ -0,0 +1,789 @@ +import { ApiGroup } from './base' + +class MarketApi extends ApiGroup { + // Displays a list of latest accounts. + async getLastAccounts (params: GetLastAccountsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + // CS2 map list for rank filter: + // + 1 - Dust II + // + 2 - Mirage + // + 3 - Train + // + 4 - Nuke + // + 5 - Overpass + // + 6 - Inferno + // + 7 - Ancient + // + 8 - Vertigo + // + 9 - Anubis + // + 10 - Office + async steam (params: SteamRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/steam`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async fortnite (params: FortniteRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/fortnite`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async vkontakte (params: VkontakteRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/vkontakte`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async genshinImpact (params: GenshinImpactRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/genshin-impact`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async valorant (params: ValorantRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/valorant`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async leagueOfLegends (params: LeagueofLegendsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/league-of-legends`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async telegram (params: TelegramRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/telegram`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async supercell (params: SupercellRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/supercell`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async origin (params: OriginRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/origin`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async worldOfTanks (params: WorldofTanksRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/world-of-tanks`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async wotBlitz (params: WoTBlitzRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/wot-blitz`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async epicGames (params: EpicGamesRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/epicgames`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async escapeFromTarkov (params: EscapefromTarkovRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/escape-from-tarkov`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async socialClub (params: SocialClubRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/socialclub`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async uplay (params: UplayRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/uplay`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async warThunder (params: WarThunderRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/war-thunder`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async discord (params: DiscordRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/discord`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async tiktok (params: TikTokRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/tiktok`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async instagram (params: InstagramRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/instagram`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async battlenet (params: BattleNetRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/battlenet`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async vpn (params: VPNRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/vpn`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async cinema (params: CinemaRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/cinema`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async spotify (params: SpotifyRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/spotify`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async warface (params: WarfaceRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/warface`, + params + ) + } + + // Displays a list of accounts in a specific category according to your parameters. + async youtube (params: YoutubeRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/youtube`, + params + ) + } + + // Displays a list of owned accounts. + // Category id-names list: + // + 1 - steam - **Steam** + // + 2 - vkontakte - **VK** + // + 3 - origin - **Origin** + // + 4 - warface - **Warface** + // + 5 - uplay - **Uplay** + // + 7 - socialclub - **Social Club** + // + 9 - fortnite - **Fortnite** + // + 10 - instagram - **Instagram** + // + 11 - battlenet - **Battle.net** + // + 12 - epicgames - **Epic Games** + // + 13 - valorant - **Valorant** + // + 14 - world-of-tanks - **World Of Tanks** + // + 16 - wot-blitz - **World Of Tanks Blitz** + // + 15 - supercell - **Supercell** + // + 17 - genshin-impact - **Genshin Impact** + // + 18 - escape-from-tarkov - **Escape From Tarkov** + // + 19 - vpn - **VPN** + // + 20 - tiktok - **TikTok** + // + 22 - discord - **Discord** + // + 23 - cinema - **Online Cinema** + // + 24 - telegram - **Telegram** + // + 25 - youtube - **YouTube** + // + 26 - spotify - **Spotify** + // + 27 - war-thunder - **War Thunder** + async getUserAccountsList (params: GetUserAccountsListRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/user/${params.userId}/items`, + params + ) + } + + // Displays a list of purchased accounts. + // Category id-names list: + // + 1 - steam - **Steam** + // + 2 - vkontakte - **VK** + // + 3 - origin - **Origin** + // + 4 - warface - **Warface** + // + 5 - uplay - **Uplay** + // + 7 - socialclub - **Social Club** + // + 9 - fortnite - **Fortnite** + // + 10 - instagram - **Instagram** + // + 11 - battlenet - **Battle.net** + // + 12 - epicgames - **Epic Games** + // + 13 - valorant - **Valorant** + // + 14 - world-of-tanks - **World Of Tanks** + // + 16 - wot-blitz - **World Of Tanks Blitz** + // + 15 - supercell - **Supercell** + // + 17 - genshin-impact - **Genshin Impact** + // + 18 - escape-from-tarkov - **Escape From Tarkov** + // + 19 - vpn - **VPN** + // + 20 - tiktok - **TikTok** + // + 22 - discord - **Discord** + // + 23 - cinema - **Online Cinema** + // + 24 - telegram - **Telegram** + // + 25 - youtube - **YouTube** + // + 26 - spotify - **Spotify** + // + 27 - war-thunder - **War Thunder** + async getAllPurchasedAccounts (params: GetAllPurchasedAccountsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/user/${params.userId}/orders`, + params + ) + } + + // Displays a list of favourites accounts. + async getAllFavouritesAccounts (params: GetAllFavouritesAccountsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/fave`, + params + ) + } + + // Displays a list of viewed accounts. + async getAllViewedAccounts (params: GetAllViewedAccountsRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/viewed`, + params + ) + } + + // Displays account information. + async getInfoAccount (params: GetInfoAccountRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}`, + params + ) + } + + // Deletes your account from public search. Deletion type is soft. You can restore account after deletion if you want. + async softDeleteAccount (params: SoftDeleteAccountRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/${params.itemId}`, + params + ) + } + + // Returns Steam account html code. + async getSteamAccHtml (params: GetSteamAccHtmlRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/steam-preview`, + params + ) + } + + // Displays search parameters for a category. + async getSearchCategory (params: GetSearchCategoryRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.categoryName}/params`, + params + ) + } + + // Displays a list of games in the category. + async getGamesCategory (params: GetGamesCategoryRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.categoryName}/games`, + params + ) + } + + // Display a list of bids in the auction. + async getAuction (params: GetAuctionRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/auction`, + params + ) + } + + // Create a new auction bid. + async postAuctionBid (params: PostAuctionBidRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/auction/bid`, + params + ) + } + + // Delete your auction bid. You can delete your auction bid within 5 minutes. + async deleteAuctionBid (params: DeleteAuctionBidRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/${params.itemId}/auction/bid`, + params + ) + } + + // Gets steam value. + // Application id list: + // + **730** - CS2 + // + **578080** - PUBG + // + **753** - Steam + // + **570** - Dota 2 + // + **440** - Team Fortress 2 + // + **252490** - Rust + // + **304930** - Unturned + // + **304930** - Unturned + // + **232090** - Killing Floor 2 + // + **322330** - Don't Starve Together + async getSteamValue (params: GetSteamValueRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/steam-value`, + params + ) + } + + // Check and buy account. + async buyAccount (params: BuyAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/fast-buy`, + params + ) + } + + // Reserves account for you. Reserve time - 300 seconds. + async setReserveAccount (params: SetReserveAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/reserve`, + params + ) + } + + // Cancels reserve. + async cancelReserveAccount (params: CancelReserveAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/cancel-reserve`, + params + ) + } + + // Checking account for validity. If the account is invalid, the purchase will be canceled automatically (you don't need to make request **POST /:itemId/cancel-reserve**). + async checkAccount (params: CheckAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/check-account`, + params + ) + } + + // Confirm buy. + async confirmBuy (params: ConfirmBuyRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/confirm-buy`, + params + ) + } + + // Send money to any user. + // The web version additionally has a **redirect** parameter (After payment, there will be a redirect to the specified link). + async sendMoney (params: SendMoneyRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/balance/transfer`, + params + ) + } + + // Displays list of your payments. + async historyPayments (params: HistoryPaymentsRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/user/${params.userId}/payments`, + params + ) + } + + // Adds and check account on validity. If account is valid, account will be published on the market. + // Account origin. Where did you get it from. + // + brute - Account received using Bruteforce + // + fishing - Account received from fishing page + // + stealer - Account received from stealer logs + // + autoreg - Account is automatically registered by a tool + // + personal - Account is yours. You created it yourself + // + resale - Account received from another seller + // + retrive - Account is recovered by email or phone (only for VKontakte category) + // + dummy - Dummy (empty) account (only for Steam category) + // Required email login data categories: + // + 9 - Fortnite + // + 12 - Epic games + // + 18 - Escape from Tarkov + async fastSellAccount (params: FastSellAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/item/fast-sell`, + params + ) + } + + // Adds account on the market. + // Account origin. Where did you get it from. + // + brute - Account received using Bruteforce + // + fishing - Account received from fishing page + // + stealer - Account received from stealer logs + // + autoreg - Account is automatically registered by a tool + // + personal - Account is yours. You created it yourself + // + resale - Account received from another seller + // + retrive - Account is recovered by email or phone (only for VKontakte category) + // + dummy - Dummy (empty) account (only for Steam category) + // Required email login data categories: + // + 9 - Fortnite + // + 12 - Epic games + // + 18 - Escape from Tarkov + async createAccountItem (params: CreateAccountItemRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/item/add`, + params + ) + } + + // Check and put up to sale not published account OR update account information existing account. + async checkNotPublishedAcc (params: CheckNotPublishedAccGettempemailforacccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/goods/check`, + params + ) + } + + // Get info about not published item. For categories, which required temporary email (Steam, Social Club), you will get temporary email in response. + async getInfoNotPublishedAcc (params: GetInfoNotPublishedAccRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/goods/add`, + params + ) + } + + // Display category list. + async getCategories (params: GetCategoriesRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/category`, + params + ) + } + + // Returns mafile in JSON. Warning: this action is cancelling active account guarantee. + async getMafileJson (params: GetMafileJsonRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/mafile`, + params + ) + } + + // Gets confirmation code or link. + async getEmailConfirmationCode (params: GetEmailConfirmationCodeRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/email-code`, + params + ) + } + + // Gets confirmation code from MaFile (Only for Steam accounts). + async getMafileConfirmationCode (params: GetMafileConfirmationCodeRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/guard-code`, + params + ) + } + + // Gets confirmation code from Telegram. + async getTelegramConfirmationCode (params: GetTelegramConfirmationCodeRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/telegram-login-code`, + params + ) + } + + // Resets Telegram authorizations. + async telegramResetAuth (params: TelegramResetAuthRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/telegram-reset-authorizations`, + params + ) + } + + // Cancel guarantee of account. It can be useful for account reselling. + async cancelGuaranteeAcc (params: CancelGuaranteeAccRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/refuse-guarantee`, + params + ) + } + + // Changes password of account. + async changePassword (params: ChangePasswordRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/change-password`, + params + ) + } + + // Gets password from temp email of account. After calling of this method, the warranty will be cancelled and you cannot automatically resell account. + async getPasswordTempEmail (params: GetPasswordTempEmailRequest): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/${params.itemId}/temp-email-password`, + params + ) + } + + // Edits any details of account. + // Account origin. Where did you get it from. + // + brute - Account received using Bruteforce + // + fishing - Account received from fishing page + // + stealer - Account received from stealer logs + // + autoreg - Account is automatically registered by a tool + // + personal - Account is yours. You created it yourself + // + resale - Account received from another seller + // + retrive - Account is recovered by email or phone (only for VKontakte category) + // + dummy - Dummy (empty) account (only for Steam category) + async editAccount (params: EditAccountRequest): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/${params.itemId}/edit`, + params + ) + } + + // Adds tag for the account. + async addTagAccount (params: AddTagAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/tag`, + params + ) + } + + // Deletes tag for the account. + async deleteTagAccount (params: DeleteTagAccountRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/${params.itemId}/tag`, + params + ) + } + + // Bumps account in the search. + async bumpsAccount (params: BumpsAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/bump`, + params + ) + } + + // Adds account to favourites. + async addFavorite (params: AddFavoriteRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/star`, + params + ) + } + + // Deletes account from favourites. + async deleteFavorite (params: DeleteFavoriteRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/${params.itemId}/star`, + params + ) + } + + // Stick account in the top of search. + async stickAccount (params: StickAccountRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/stick`, + params + ) + } + + // Unstick account of the top of search. + async unstickAccount (params: UnstickAccountRequest): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/${params.itemId}/stick`, + params + ) + } + + // Change of account owner. + async changeAccountOwner (params: ChangeAccountOwnerRequest): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/${params.itemId}/change-owner`, + params + ) + } + + // Displays info about your profile. + async getProfileMarket (params: GetProfileMarketRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/me`, + params + ) + } + + // Change settings about your profile on the market. + async editSettingsMarket (params: EditSettingsMarketRequest = {}): Promise { + return await this.api.call( + 'PUT', + this.endpoint + `/me`, + params + ) + } + + // Gets your proxy list. + async getProxy (params: GetProxyRequest = {}): Promise { + return await this.api.call( + 'GET', + this.endpoint + `/proxy`, + params + ) + } + + // Add single proxy or proxy list. + // To add single proxy use this parameters: + // + **proxy_ip** (required) - proxy ip or host + // + **proxy_port** (required) - proxy port + // + **proxy_user** (optional) - proxy username + // + **proxy_pass** (optional) - proxy password + // To add proxy list use this parameters: + // + **proxy_row** (required) - proxy list in String format ip:port:user:pass. Each proxy must be start with new line (use + // separator) + async addProxy (params: AddProxyRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/proxy`, + params + ) + } + + // Delete single or all proxies. + async deleteProxy (params: DeleteProxyRequest = {}): Promise { + return await this.api.call( + 'DELETE', + this.endpoint + `/proxy`, + params + ) + } + + // Execute multiple API requests at once (Separated by comma). Maximum batch jobs is 10. + // Required scopes: + // + Same as called API requests. + async batch (params: BatchRequest = {}): Promise { + return await this.api.call( + 'POST', + this.endpoint + `/batch`, + params + ) + } +} + +export default MarketApi \ No newline at end of file diff --git a/src/index.js b/src/index.js deleted file mode 100644 index e6dca7d..0000000 --- a/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export * from './errors.js' -export * from './api.js' - - diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..783e838 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,2 @@ +export { LZTApi } from './api' +export { LZTApiError } from './error' \ No newline at end of file diff --git a/src/types/forum_requests.d.ts b/src/types/forum_requests.d.ts new file mode 100644 index 0000000..1f08787 --- /dev/null +++ b/src/types/forum_requests.d.ts @@ -0,0 +1,763 @@ +// auto-generated, don't edit manually + +interface GetCategoriesRequest { + // Id of parent category. If exists, filter categories that are direct children of that category. + parent_category_id?: number + // Id of parent forum. If exists, filter categories that are direct children of that forum. + parent_forum_id?: number + // Ordering of categories. + order?: 'natural' | 'list' +} + +interface GetCategoryRequest { + // Id of category. + categoryId: number +} + +interface GetForumsRequest { + // Id of parent category. If exists, filter forums that are direct children of that category. + parent_category_id?: number + // Id of parent forum. If exists, filter forums that are direct children of that forum. + parent_forum_id?: number + // Ordering of forums. + order?: 'natural' | 'list' +} + +interface GetForumRequest { + // Id of forum. + forumId: number +} + +interface GetFollowersRequest { + // Id of forum. + forumId: number +} + +interface FollowForumRequest { + // Id of forum. + forumId: number +} + +interface UnfollowForumRequest { + // Id of forum. + forumId: number +} + +interface GetFollowedForumsRequest { + // If included in the request, only the forum count is returned as **forums_total**. + total?: true +} + +interface GetPagesRequest { + // Id of parent page. If exists, filter pages that are direct children of that page. + parent_page_id?: number + // Ordering of pages. + order?: 'natural' | 'list' +} + +interface GetPageRequest { + // Id of page. + pageId: number +} + +interface GetNavigationRequest { + // Id of parent element. If exists, filter elements that are direct children of that element. + parent?: number +} + +interface GetThreadsRequest { + // Id of the containing forum. Can be skipped if **thread_ids** set. + forum_id?: number + // Ids of needed threads (separated by comma). If this parameter is set, all other filtering parameters will be ignored. + thread_ids?: Array + // Filter to get only threads created by the specified user. + creator_user_id?: number + // Filter to get only sticky **sticky=1** or non-sticky **sticky=0** threads. By default, all threads will be included and sticky ones will be at the top of the result on the first page. In mixed mode, sticky threads are not counted towards **threads_total** and does not affect pagination. + sticky?: 1 | 0 + // Filter to get only threads with the specified prefix. + thread_prefix_id?: number + // Filter to get only threads with the specified tag. + thread_tag_id?: number + // Page number of threads. + page?: number + // Number of threads in a page. + limit?: number + // Ordering of threads. + order?: string +} + +interface CreateThreadRequest { + // Id of the target forum. + forum_id: number + // Title of the new thread. + thread_title: string + // Id of a prefix for the new thread. + thread_prefix_id?: number + // Thread tags for the new thread. + thread_tags?: Array + // Contest type. Required if **forum_id** is 766 (Contests). + contest_type?: 'by_finish_date' | 'by_needed_members' + // Winner count (prize count). Required if **forum_id** is 766 (Contests). + count_winners?: number + // Max member count. Required if **contest_type** is **by_needed_members**. + needed_members?: number + // Giveaway duration value. The maximum duration is 3 days. Required if **contest_type** is **by_finish_date**. + length_value?: number + // Giveaway duration type. The maximum duration is 3 days. Required if **contest_type** is **by_finish_date**. + length_option?: 'minutes' | 'hours' | 'days' + // Sympathies for this week. Required if **forum_id** is 766 (Contests). + require_like_count?: number + // Symapthies for all time. Required if **forum_id** is 766 (Contests). + require_total_like_count?: number + // Prize type. Required if **forum_id** is 766 (Contests). + prize_type?: 'money' | 'upgrades' + // How many money will each winner receive. Required if **prize_type** is **money**. + prize_data_money?: number + // Which upgrade will each winner receive. Required if **prize_type** is **upgrades**.+ 1 - Supreme - 3 months.+ 6 - Legend - 12 months.+ 12 - AntiPublic.One Plus subscription - 1 month.+ 14 - Uniq - lifetime.+ 17 - 18+ Photo leaks - 6 months.+ 19 - Auto giveaway participation - 1 month. + prize_data_upgrade?: 1 | 6 | 12 | 14 | 17 | 19 + // Secret answer of your account. Required if **forum_id** is 766 (Contests). + secret_answer?: string +} + +interface GetThreadRequest { + // Id of thread. + threadId: number +} + +interface DeleteThreadRequest { + // Id of thread. + threadId: number + // Reason of the thread removal. + reason?: string +} + +interface BumpThreadRequest { + // Id of thread. + threadId: number +} + +interface GetThreadFollowersRequest { + // Id of thread. + threadId: number +} + +interface FollowThreadRequest { + // Id of thread. + threadId: number + // Whether to receive notification as email. + email?: 1 +} + +interface UnfollowThreadRequest { + // Id of thread. + threadId: number +} + +interface GetFollowedThreadsRequest { + // If included in the request, only the thread count is returned as **threads_total**. + total?: true +} + +interface GetNavigationElementsRequest { + // Id of thread. + threadId: number +} + +interface GetPollRequest { + // Id of thread. + threadId: number +} + +interface VotePollRequest { + // Id of thread. + threadId: number + // The id of the response to vote for. Can be skipped if **response_ids** set. + response_id?: number + // An array of ids of responses (if the poll allows multiple choices). + 'response_ids[]'?: Array +} + +interface GetUnreadThreadsRequest { + // Maximum number of result threads. The limit may get decreased if the value is too large (depending on the system configuration). + limit?: number + // Id of the container forum to search for threads. Child forums of the specified forum will be included in the search. + forum_id?: number + // Number of thread data to be returned. Default value is 20. + data_limit?: number +} + +interface GetRecentThreadsRequest { + // Maximum number of days to search for threads. + days?: number + // Maximum number of result threads. The limit may get decreased if the value is too large. + limit?: number + // Id of the container forum to search for threads. Child forums of the specified forum will be included in the search. + forum_id?: number + // Number of thread data to be returned. Default value is 20. + data_limit?: number +} + +interface GetPostsRequest { + // Id of the containing thread. + thread_id?: number + // Id of a post, posts that are in the same page with the specified post will be returned. **thread_id** may be skipped. + page_of_post_id?: number + // Ids of needed posts (separated by comma). If this parameter is set, all other filtering parameters will be ignored. + post_ids?: string + // Page number of posts. + page?: number + // Number of posts in a page. Default value depends on the system configuration. + limit?: number + // Ordering of posts. + order?: 'natural' | 'natural_reverse' | 'post_create_date' | 'post_create_date_reverse' | 'post_likes' | 'post_likes_reverse' +} + +interface CreatePostRequest { + // Id of the target thread. + thread_id?: number + // Id of the quote post. It's possible to skip **thread_id** if this parameter is provided. An extra check is performed if both parameters exist and does not match. + quote_post_id?: number +} + +interface GetPostRequest { + // Id of post. + postId: number +} + +interface EditPostRequest { + // Id of post. + postId: number + // New title of the thread (only used if the post is the first post in the thread and the authenticated user can edit thread). + thread_title?: string + // New id of the thread's prefix (only used if the post is the first post in the thread and the authenticated user can edit thread). + thread_prefix_id?: number + // New tags of the thread (only used if the post is the first post in the thread and the authenticated user can edit thread tags). + thread_tags?: Array + // Move thread to new forum if the post is first post and the authenticated user can move thread. + thread_node_id?: number +} + +interface DeletePostRequest { + // Id of post. + postId: number + // Reason of the post removal. + reason?: string +} + +interface GetPostLikesRequest { + // Id of post. + postId: number + // Page number of users. + page?: number + // Number of users in a page. Default value depends on the system configuration. + limit?: number +} + +interface LikePostRequest { + // Id of post. + postId: number +} + +interface UnlikePostRequest { + // Id of post. + postId: number +} + +interface ReportPostRequest { + // Id of post. + postId: number + // Reason of the report. + message: string +} + +interface GetPostCommentsRequest { + // Id of post. + postId: number + // The time in milliseconds (e.g. 1652177794083) before last comment date. + before?: number + // Comment id to get older comments. + before_comment?: number +} + +interface CreatePostCommentRequest { + // Id of post. + postId: number +} + +interface GetPopularTagsRequest { +} + +interface GetTagsRequest { + // Page number of tags list. + page?: number + // Number of results in a page. + limit?: number +} + +interface GetTaggedContentRequest { + // Id of tag. + tagId: number + // Page number of tagged contents. + page?: number + // Number of tagged contents in a page. + limit?: number +} + +interface GetFilteredContentRequest { + // tag to filter. Tags start with the query will be returned. + tag: string +} + +interface GetUsersRequest { + // Page number of users. + page?: number + // Number of users in a page. + limit?: number +} + +interface GetUserFieldsRequest { +} + +interface FindUsersRequest { + // Username to filter. Usernames start with the query will be returned. + username?: string + // Email to filter. Requires **admincp** scope. + user_email?: string + // Custom fields to filter. Example: **custom_fields[telegram]=telegramLogin**. + custom_fields?: unknown + // User location field. + 'custom_fields[location]'?: string + // User occupation field. + 'custom_fields[occupation]'?: string + // User homepage field. + 'custom_fields[homepage]'?: string + // User interests field. + 'custom_fields[_4]'?: string + // User thread link for "innovator" trophy. + 'custom_fields[lztInnovationLink]'?: string + // User thread link for "innovator 2.0" trophy. + 'custom_fields[lztInnovation20Link]'?: string + // User thread link for "innovator 3.0" trophy. + 'custom_fields[lztInnovation30Link]'?: string + // User scam url field. + 'custom_fields[scamURL]'?: string + // User maecenas value field. + 'custom_fields[maecenasValue]'?: number + // User telegram field. + 'custom_fields[telegram]'?: string + // User vk field. + 'custom_fields[vk]'?: string + // User qiwi field. + 'custom_fields[qiwi]'?: string + // User discord field. + 'custom_fields[discord]'?: string + // User telegram field. + 'custom_fields[steam]'?: string + // User jabber field. + 'custom_fields[jabber]'?: string + // User lztDeposit field. + 'custom_fields[lztDeposit]'?: number + // User ban_reason field. + 'custom_fields[ban_reason]'?: string +} + +interface GetProfileRequest { +} + +interface GetUserRequest { + // Id of user. + userId: number +} + +interface EditUserRequest { + // User id. + userId: number + // Data of the new password. + password?: string + // Data of the existing password, it is not required if (1) the current authenticated user has **user** admin permission, (2) the **admincp** scope is granted and (3) the user being edited is not the current authenticated user. + password_old?: string + // Algorithm used to encrypt the **password** and **password_old** parameters. See **Encryption** section for more information. + password_algo?: string + // New email of the user. + user_email?: string + // New username of the user. (Require admincp scope) + username?: string + // New custom title of the user. + user_title?: string + // Id of new primary group. (Require admincp scope) + primary_group_id?: number + // Array of ids of new secondary groups. (Require admincp scope) + 'secondary_group_ids[]'?: Array + // Id of group you want to display. + display_group_id?: number + // Your date of birth (day). + user_dob_day?: number + // Your date of birth (month). + user_dob_month?: number + // Your date of birth (year). + user_dob_year?: number + // Your location. + 'fields[location]'?: string + // Your occupation. + 'fields[occupation]'?: string + // Your homepage. + 'fields[homepage]'?: string + // Your interests. + 'fields[_4]'?: string + // Thread link for "innovator" trophy. + 'fields[lztInnovationLink]'?: string + // Thread link for "innovator 2.0" trophy. + 'fields[lztInnovation20Link]'?: string + // Thread link for "innovator 3.0" trophy. + 'fields[lztInnovation30Link]'?: string + // Your telegram. + 'fields[telegram]'?: string + // Your vk. + 'fields[vk]'?: string + // Your qiwi. + 'fields[qiwi]'?: string + // Your discord. + 'fields[discord]'?: string + // Your steam. + 'fields[steam]'?: string + // Your jabber. + 'fields[jabber]'?: string +} + +interface LostPasswordRequest { + // Username. + username?: string + // Email. + email?: string + // A valid one time token. + oauth_token: string +} + +interface UploadAvatarRequest { + // User id. + userId: number +} + +interface DeleteAvatarRequest { + // User id. + userId: number +} + +interface AvatarCropRequest { + // User id. + userId: number + // The starting point of the selection by width. Default value - 0 + x?: number + // The starting point of the selection by height. Default value - 0 + y?: number + // Selection size. Minimum value - 16. + crop: number +} + +interface GetUserFollowersRequest { + // User id. + userId: number + // Ordering of followers. + order?: 'natural' | 'follow_date' | 'follow_date_reverse' + // Page number of followers. + page?: number + // Number of followers in a page. + limit?: number +} + +interface FollowUserRequest { + // User id. + userId: number +} + +interface UnfollowUserRequest { + // User id. + userId: number +} + +interface GetFollowedUsersByUserRequest { + // User id. + userId: number + // Ordering of users. + order?: 'natural' | 'follow_date' | 'follow_date_reverse' + // Page number of users. + page?: number + // Number of users in a page. + limit?: number +} + +interface GetIgnoredUsersRequest { + // If included in the request, only the user count is returned as **users_total**. + total?: true +} + +interface IgnoreUserRequest { + // User id. + userId: number +} + +interface UnignoreUserRequest { + // User id. + userId: number +} + +interface GetAllUserGroupsRequest { +} + +interface GetUserGroupsRequest { + // User id. + userId: number +} + +interface GetContentsRequest { + // User id. + userId: number + // Page number of contents. + page?: number + // Number of contents in a page. + limit?: number +} + +interface CreateProfilePostRequest { + // User id. + userId: number + // If posting to authorized user timeline, **status** can be used instead of **post_body** for content of the new profile post. + status?: string +} + +interface GetProfilePostRequest { + // Id of profile post. + profilePostId: number +} + +interface EditProfilePostRequest { + // Id of profile post. + profilePostId: number +} + +interface DeleteProfilePostRequest { + // Id of profile post. + profilePostId: number + // Reason of the profile post removal. + reason?: string +} + +interface GetProfilePostLikesRequest { + // Id of profile post. + profilePostId: number +} + +interface LikeProfilePostRequest { + // Id of profile post. + profilePostId: number +} + +interface UnlikeProfilePostRequest { + // Id of profile post. + profilePostId: number +} + +interface GetProfilePostCommentsRequest { + // Id of profile post. + profilePostId: number + // Date to get older comments. Please note that this entry point does not support the page parameter but it still does support **limit**. + before?: number + // Number of profile posts in a page. + limit?: number +} + +interface CreateProfilePostCommentRequest { + // Id of profile post. + profilePostId: number +} + +interface GetProfilePostCommentRequest { + // Id of profile post. + profilePostId: number + // Id of profile post comment. + commentId: number +} + +interface DeleteProfilePostCommentRequest { + // Id of profile post. + profilePostId: number + // Id of profile post comment. + commentId: number + // Delete reason. + reason?: string +} + +interface ReportProfilePostRequest { + // Id of profile post. + profilePostId: number + // Reason of the report. + message: string +} + +interface GetConversationsRequest { + // Page number of conversations. + page?: number + // Number of conversations in a page. + limit?: number +} + +interface CreateConversationRequest { + // Id of recipient. Required if **is_group=false**. + recipient_id?: number + // Username of recipient. Required if **is_group=true**. + recipients?: string + // Is group. Set **false** if personal conversation, or set **true** if group. + is_group: string + // The title of new conversation. Required if **is_group=true**. + title?: string + // Open invite. Set **0** if closed invite, or set **1** if open invite. + open_invite?: 1 | 0 + // Is conversation locked. + conversation_locked?: 1 | 0 + // Allow edit messages. + allow_edit_messages?: string +} + +interface GetConversationRequest { + // Id of conversation. + conversationId: number +} + +interface LeaveConversationRequest { + // Id of conversation. + conversationId: number + // Deletion type. + delete_type: 'delete' | 'delete_ignore' +} + +interface GetConversationMessagesRequest { + // Id of needed conversation. + conversation_id: number + // Page number of messages. + page?: number + // Number of messages in a page. + limit?: number + // Ordering of messages. + order?: 'natural' | 'natural_reverse' + // Date to get older messages. + before?: number + // Date to get newer messages. + after?: number +} + +interface CreateConversationMessageRequest { + // Id of needed conversation. + conversation_id: number +} + +interface GetConversationMessageRequest { + // Id of message. + messageId: number +} + +interface EditConversationMessageRequest { + // Id of message. + messageId: number +} + +interface DeleteConversationMessageRequest { + // Id of message. + messageId: number +} + +interface ReportConversationMessageRequest { + // Id of message. + messageId: number +} + +interface GetNotificationsRequest { +} + +interface GetNotificationRequest { + // Id of notification. + notificationId: number +} + +interface CustomNotificationRequest { +} + +interface MarkNotificationReadRequest { + // If notification_id is omitted, it's mark all existing notifications as read. + notification_id?: number +} + +interface SearchThreadRequest { + // Search query. Can be skipped if **user_id** is set. + q?: string + // Tag to search for tagged contents. + tag?: string + // Id of the container forum to search for contents. Child forums of the specified forum will be included in the search. + forum_id?: number + // Id of the creator to search for contents. + user_id?: number + // Page number of results. + page?: number + // Number of results in a page. + limit?: number + // Number of thread data to be returned. + data_limit?: number +} + +interface SearchPostRequest { + // Search query. Can be skipped if **user_id** is set. + q?: string + // Tag to search for tagged contents. + tag?: string + // Id of the container forum to search for contents. Child forums of the specified forum will be included in the search. + forum_id?: number + // Id of the creator to search for contents. + user_id?: number + // Page number of results. + page?: number + // Number of results in a page. + limit?: number + // Number of post data to be returned. + data_limit?: number +} + +interface SearchRequest { + // Search query. Can be skipped if **user_id** is set. + q?: string + // Tag to search for tagged contents. + tag?: string + // Id of the container forum to search for contents. Child forums of the specified forum will be included in the search. + forum_id?: number + // Id of the creator to search for contents. + user_id?: number + // Page number of results. + page?: number + // Number of results in a page. + limit?: number +} + +interface SearchTaggedRequest { + // Tag to search for tagged contents. + tag?: string + // Array of tags to search for tagged contents. + 'tags[]'?: Array + // Page number of results. + page?: number + // Number of results in a page. + limit?: number +} + +interface BatchRequest { +} + +interface SearchIndexingRequest { + // The type of content being indexed. + content_type: string + // The unique id for the content. + content_id: number + // Content title. + title: string + // Unix timestamp in second of the content. If missing, current time will be used. + date?: number + // Link related to content. + link: string +} \ No newline at end of file diff --git a/src/types/forum_responses.d.ts b/src/types/forum_responses.d.ts new file mode 100644 index 0000000..11811c4 --- /dev/null +++ b/src/types/forum_responses.d.ts @@ -0,0 +1,444 @@ +// auto-generated, don't edit manually + +interface GetCategoriesResponse { + categories?: Array + categories_total?: number +} + +interface GetCategoryResponse { + category?: string +} + +interface GetForumsResponse { + forums?: Array + forums_total?: number +} + +interface GetForumResponse { + forum?: string +} + +interface GetFollowersResponse { + users?: Array +} + +interface FollowForumResponse { + status?: string + message?: string +} + +interface UnfollowForumResponse { + status?: string + message?: string +} + +interface GetFollowedForumsResponse { + forums?: Array +} + +interface GetPagesResponse { + pages?: Array + pages_total?: number +} + +interface GetPageResponse { + page?: string +} + +interface GetNavigationResponse { + elements?: Array +} + +interface GetThreadsResponse { + threads?: Array +} + +interface CreateThreadResponse { + thread?: string +} + +interface GetThreadResponse { + thread?: string +} + +interface DeleteThreadResponse { + status?: string + message?: string +} + +interface BumpThreadResponse { + status?: string + message?: string +} + +interface GetThreadFollowersResponse { + users?: Array +} + +interface FollowThreadResponse { + status?: string + message?: string +} + +interface UnfollowThreadResponse { + status?: string + message?: string +} + +interface GetFollowedThreadsResponse { + threads?: Array + threads_total?: number +} + +interface GetNavigationElementsResponse { + elements?: Array + elements_count?: number +} + +interface GetPollResponse { + poll_id?: number + poll_question?: string + poll_vote_count?: number + poll_is_open?: string + poll_is_voted?: string + poll_max_votes?: number + responses?: Array + permissions?: string + links?: string +} + +interface VotePollResponse { + status?: string + message?: string +} + +interface GetUnreadThreadsResponse { + threads?: Array + data?: Array +} + +interface GetRecentThreadsResponse { + threads?: Array + data?: Array +} + +interface GetPostsResponse { + posts?: Array + posts_total?: number + links?: string +} + +interface CreatePostResponse { + post?: string +} + +interface GetPostResponse { + post?: string +} + +interface EditPostResponse { + post?: string +} + +interface DeletePostResponse { + status?: string + message?: string +} + +interface GetPostLikesResponse { + users?: Array +} + +interface LikePostResponse { + status?: string + message?: string +} + +interface UnlikePostResponse { + status?: string + message?: string +} + +interface ReportPostResponse { + status?: string + message?: string +} + +interface GetPostCommentsResponse { + comments?: string +} + +interface CreatePostCommentResponse { + comment?: string +} + +interface GetPopularTagsResponse { + tag?: string +} + +interface GetTagsResponse { + tags?: string + tags_total?: number + links?: string +} + +interface GetTaggedContentResponse { + tag?: string + tagged?: Array + tagged_total?: number + links?: string +} + +interface GetFilteredContentResponse { + tags?: Array + ids?: Array +} + +interface GetUsersResponse { + users?: Array + users_total?: number + links?: string +} + +interface GetUserFieldsResponse { + fields?: Array +} + +interface FindUsersResponse { + users?: Array +} + +interface GetProfileResponse { + user?: string +} + +interface GetUserResponse { + user?: string +} + +interface EditUserResponse { + status?: string + message?: string +} + +interface LostPasswordResponse { + status?: string + message?: string +} + +interface UploadAvatarResponse { + status?: string + message?: string +} + +interface DeleteAvatarResponse { + status?: string + message?: string +} + +interface AvatarCropResponse { + status?: string + message?: string +} + +interface GetUserFollowersResponse { + users?: Array + users_total?: number + links?: string +} + +interface FollowUserResponse { + status?: string + message?: string +} + +interface UnfollowUserResponse { + status?: string + message?: string +} + +interface GetFollowedUsersByUserResponse { + users?: Array + users_total?: number +} + +interface GetIgnoredUsersResponse { + users?: Array +} + +interface IgnoreUserResponse { + status?: string + message?: string +} + +interface UnignoreUserResponse { + status?: string + message?: string +} + +interface GetAllUserGroupsResponse { + user_groups?: Array +} + +interface GetUserGroupsResponse { + user_groups?: Array + user_id?: number +} + +interface GetContentsResponse { + data?: Array + data_total?: number + user?: string + links?: string +} + +interface CreateProfilePostResponse { + data?: string +} + +interface GetProfilePostResponse { + profile_post?: string +} + +interface EditProfilePostResponse { + profile_post?: string +} + +interface DeleteProfilePostResponse { + status?: string + message?: string +} + +interface GetProfilePostLikesResponse { + users?: Array +} + +interface LikeProfilePostResponse { + profile_post?: string +} + +interface UnlikeProfilePostResponse { + profile_post?: string +} + +interface GetProfilePostCommentsResponse { + comments?: Array + comments_total?: number + profile_post?: string + timeline_user?: string +} + +interface CreateProfilePostCommentResponse { + comment?: string +} + +interface GetProfilePostCommentResponse { + comment?: string +} + +interface DeleteProfilePostCommentResponse { + status?: string + message?: string +} + +interface ReportProfilePostResponse { + status?: string + message?: string +} + +interface GetConversationsResponse { + conversations?: Array +} + +interface CreateConversationResponse { + conversation?: string +} + +interface GetConversationResponse { + conversation?: string +} + +interface LeaveConversationResponse { + status?: string + message?: string +} + +interface GetConversationMessagesResponse { + messages?: Array + messages_total?: number + conversation?: string +} + +interface CreateConversationMessageResponse { + message?: string +} + +interface GetConversationMessageResponse { + message?: string +} + +interface EditConversationMessageResponse { + message?: string +} + +interface DeleteConversationMessageResponse { + status?: string + message?: string +} + +interface ReportConversationMessageResponse { + status?: string + message?: string +} + +interface GetNotificationsResponse { + notifications?: Array + notifications_total?: number + links?: string +} + +interface GetNotificationResponse { + notification?: string +} + +interface CustomNotificationResponse { +} + +interface MarkNotificationReadResponse { + status?: string + message?: string +} + +interface SearchThreadResponse { + threads?: Array + data?: Array + links?: string +} + +interface SearchPostResponse { + posts?: Array + data?: Array + links?: string +} + +interface SearchResponse { + data?: Array + data_total?: number + links?: string +} + +interface SearchTaggedResponse { + data?: Array + data_total?: number + search_tags?: string + links?: string +} + +interface BatchResponse { + jobs?: string +} + +interface SearchIndexingResponse { + status?: string + message?: string +} \ No newline at end of file diff --git a/src/types/market_requests.d.ts b/src/types/market_requests.d.ts new file mode 100644 index 0000000..47ef896 --- /dev/null +++ b/src/types/market_requests.d.ts @@ -0,0 +1,2139 @@ +// auto-generated, don't edit manually + +interface GetLastAccountsRequest { +} + +interface SteamRequest { + // List of games. + 'game[]'?: Array + // List of minimum hours played by game. + hours_played?: Array + // List of maximum hours played by game. + hours_played_max?: Array + // List of VAC bans by game. + vac?: number + // Has community ban. Can be [**yes**, **no**, **nomatter**]. + rt?: string + // Has lifetime trade ban. Can be [**yes**, **no**, **nomatter**]. + trade_ban?: string + // Has temporary trade limit. Can be [**yes**, **no**, **nomatter**]. + trade_limit?: string + // Has Prime in CS2. Can be [**yes**, **no**, **nomatter**]. + prime?: string + // Number of days the account has been offline. + daybreak?: number + // Has 5 $ limit. Can be [**yes**, **no**, **nomatter**]. + limit?: string + // Has .mafile (Steam Guard Authenticator). Can be [**yes**, **no**, **nomatter**]. + mafile?: string + // How old is the account. + reg?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + reg_period?: string + // Minimum level. + lmin?: number + // Maximum level. + lmax?: number + // Minimum rank in CS2 Matchmaking. + rmin?: number + // Maximum rank in CS2 Matchmaking. + rmax?: number + // Minimum rank in CS2 Wingman. + wingman_rmin?: number + // Maximum rank in CS2 Wingman. + wingman_rmax?: number + // Has no VAC ban. Can be [**yes**, **no**, **nomatter**]. + no_vac?: string + // Has CS2 Matchmaking ban. + mm_ban?: string + // Minimum balance. + balance_min?: number + // Maximum balance. + balance_max?: number + // Game ID to check inventory price + inv_game?: number + // Minimum inventory price for game. + inv_min?: number + // Maximum inventory price for game. + inv_max?: number + // Minimum number of friends. + friend_min?: number + // Maximum number of friends. + friend_max?: number + // Minimum number of games. + gmin?: number + // Maximum number of games. + gmax?: number + // Minimum number of wins. + win_count_min?: number + // Maximum number of wins + win_count_max?: number + // List of medal names. + 'medal[]'?: Array + // List of medal IDs. + 'medal_id[]'?: Array + // Minimum number of medals. + medal_min?: number + // Maximum number of medals. + medal_max?: number + // List of gifts. + 'gift[]'?: Array + // Minimum number of gifts. + gift_min?: number + // Maximum number of gifts. + gift_max?: number + // Minimum number of recently played hours. + recently_hours_min?: number + // Maximum number of recently played hours. + recently_hours_max?: number + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // CS2 rank (>=). + csgo_profile_rank?: number + // Minimum CS2 rank. + csgo_profile_rank_min?: number + // Maximum CS2 rank. + csgo_profile_rank_max?: number + // Minimum number of Dota 2 MMR. + solommr_min?: number + // Maximum number of Dota 2 MMR. + solommr_max?: number + // Minimum number of Dota 2 games. + d2_game_count_min?: number + // Maximum number of Dota 2 games. + d2_game_count_max?: number + // Minimum number of Dota 2 wins. + d2_win_count_min?: number + // Maximum number of Dota 2 wins. + d2_win_count_max?: number + // Minimum number of Dota 2 behavior. + d2_behavior_min?: number + // Maximum number of Dota 2 behavior. + d2_behavior_max?: number + // Minimum FACEIT level. + faceit_lvl_min?: number + // Maximum FACEIT level. + faceit_lvl_max?: number + // Minimum number of Steam points. + points_min?: number + // Maximum number of Steam points. + points_max?: number + // Minimum number of relevant games. + relevant_gmin?: number + // Maximum number of relevant games. + relevant_gmax?: number + // How old is last transaction. + last_trans_date?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + last_trans_date_period?: string + // How new is last transaction. + last_trans_date_later?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + last_trans_date_period_later?: string + // Has no transactions. + no_trans?: string + // Has transactions. + trans?: string + // Minimum Premier ELO in CS2. + elo_min?: number + // Maximum Premier ELO in CS2. + elo_max?: number + // Map for rank in CS2. + cs2_map_rank?: number + // Minimum rank in CS2 on a certain map. + cs2_map_rmin?: number + // Maximum rank in CS2 on a certain map. + cs2_map_rmax?: number + // The number of the page to display results from. + page?: number + // Minimal price of account (Inclusive) + pmin?: number + // Maximum price of account (Inclusive) + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no_market**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface FortniteRequest { + // Minimum number of skins. + smin?: number + // Maximum number of skins. + smax?: number + // Minimum number of V-Bucks. + vbmin?: number + // Maximum number of V-Bucks. + vbmax?: number + // Skins. + skin?: Array + // Pickaxes. + pickaxe?: Array + // Dances. + dance?: Array + // Gliders. + glider?: Array + // Can change email. Can be [**yes**, **no**, **nomatter**]. + change_email?: string + // Platform. Can be [**Epic**, **EpicAndroid**, **EpicPC**, **IOSAppStore**, **Live**, **Nintendo**, **PSN**, **Samsung**]. + platform?: Array + // Has Battle Pass. Can be [**yes**, **no**, **nomatter**]. + bp?: string + // Minimum level. + lmin?: number + // Maximum level. + lmax?: number + // Minimum level of Battle Pass. + bp_lmin?: number + // Maximum level of Battle Pass. + bp_lmax?: number + // Has Rocket League purchases. + rl_purchases?: string + // How old is last transaction. + last_trans_date?: string + // In what notation is time measured. + last_trans_date_period?: string + // Has no transactions. + no_trans?: string + // Can be linked to Xbox. Can be [**yes**, **no**, **nomatter**]. + xbox_linkable?: string + // Can be linked to PSN. Can be [**yes**, **no**, **nomatter**]. + psn_linkable?: string + // Number of days the account has been offline. + daybreak?: number + // Access to market temp mail. Can be [**yes**, **no**, **nomatter**]. + temp_email?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface VkontakteRequest { + // List of allowed countries. + 'vk_country[]'?: Array + // List of allowed cities. + 'vk_city[]'?: Array + // Minimum number of friends. + vk_friend_min?: number + // Maximum number of friends. + vk_friend_max?: number + // Minimum number of followers. + vk_follower_min?: number + // Maximum number of followers. + vk_follower_max?: number + // Minimum number of votes. + vk_vote_min?: number + // Maximum number of votes. + vk_vote_max?: number + // Sex of account. Can be [**man**, **woman**]. + sex?: string + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Has linked email. Can be [**yes**, **no**, **nomatter**]. + email?: string + // Has enabled 2FA. Can be [**yes**, **no**, **nomatter**]. + tfa?: string + // Relationship. + 'relation[]'?: Array + // Login into account by token only. Can be [**yes**, **no**, **nomatter**]. + token_auth_only?: string + // Minimum number of group followers. + group_follower_min?: number + // Maximum number of group followers. + group_follower_max?: number + // Minimum number of groups. + groups_min?: number + // Maximum number of groups. + groups_max?: number + // Admin level. Can be [**1**, **2**, **3**, **4**]. + admin_level?: number + // Minimum age. + min_age?: number + // Maximum age. + max_age?: number + // Minimum number of digits in ID. + dig_min?: number + // Maximum number of digits in ID. + dig_max?: number + // Minimum number of conversations. + conversations_min?: number + // Maximum number of conversations. + conversations_max?: number + // How old is the account. + reg?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + reg_period?: string + // List of allowed countries of phone number. + 'mcountry[]'?: Array + // List of excluded countries of phone number. + 'not_mcountry[]'?: Array + // Opened account profile. + opened_profile?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface GenshinImpactRequest { + // Has linked email. Can be [**yes**, **no**, **nomatter**]. + email?: string + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // List of characters. + 'character[]'?: Array + // Region. Can be [**os_euro**, **os_asia**, **os_cht**]. + region?: string + // Has linked external accounts. Can be [**yes**, **no**, **nomatter**]. + ea?: string + // Minimum number of legendary characters. + legendary_min?: number + // Maximum number of legendary characters. + legendary_max?: number + // Minimum number of constellations on legendary characters. + constellation_min?: number + // Maximum number of constellations on legendary characters. + constellation_max?: number + // Minimum number of legendary weapon characters. + legendary_weapon_min?: number + // Maximum number of legendary weapon characters. + legendary_weapon_max?: number + // Minimum number of characters. + char_min?: number + // Maximum number of characters. + char_max?: number + // Minimum level. + level_min?: number + // Maximum level. + level_max?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface ValorantRequest { + // List of weapon skins. + 'weaponSkin[]'?: Array + // List of buddies. + 'buddy[]'?: Array + // List of agents. + 'agent[]'?: Array + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Number of days the account has been offline. + daybreak?: number + // Minimum level. + level_min?: number + // Maximum level. + level_max?: number + // Minimum inventory value. + inv_min?: number + // Maximum inventory value. + inv_max?: number + // Minimum number of Valorant points. + vp_min?: number + // Maximum number of Valorant points. + vp_max?: number + // Minimum number of skins. + smin?: number + // Maximum number of skins. + smax?: number + // Minimum rank (from 3 to 27). + rmin?: number + // Maximum rank. + rmax?: number + // Last Minimum rank (from 3 to 27). + last_rmin?: number + // Last Maximum rank. + last_rmax?: number + // Rank type. Can be [**ranked**, **ranked_ready**, **unrated**]. + rank_type?: string + // Minimum amount of agents. + amin?: number + // Maximum amount of agents. + amax?: number + // Region. Can be [**eu**, **ap**, **kr**, **na**, **br**, **la**]. + 'region[]'?: Array + // Exclude region. Can be [**eu**, **ap**, **kr**, **na**, **br**, **la**]. + 'not_region[]'?: Array + // Has linked email. Can be [**yes**, **no**, **nomatter**]. + email?: string + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Can change email. Can be [**yes**, **no**, **nomatter**]. + changeable_email?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface LeagueofLegendsRequest { + // Minimum level. + lvl_min?: number + // Maximum level. + lvl_max?: number + // Minimum winrate. + winrate_min?: number + // Maximum winrate. + winrate_max?: number + // Minimum wallet blue balance. + wallet_blue_min?: number + // Maximum wallet blue balance. + wallet_blue_max?: number + // Minimum wallet orange balance. + wallet_orange_min?: number + // Maximum wallet orange balance. + wallet_orange_max?: number + // Minimum wallet mythic balance. + wallet_mythic_min?: number + // Maximum wallet mythic balance. + wallet_mythic_max?: number + // Minimum wallet riot balance. + wallet_riot_min?: number + // Maximum wallet riot balance. + wallet_riot_max?: number + // List of skins. + 'skin[]'?: Array + // List of champions. + 'champion[]'?: Array + // List of allowed countries. + 'country[]'?: Array + // Region. Can be [**la1**, **la2**, **br1**, **euw1**, **tr1**, **na1**, **eun1**, **ru**, **oc1**, **jp1**, **ph2**, **vn2**, **th2**, **sg2**]. + 'region[]'?: Array + // Number of days the account has been offline. + daybreak?: number + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Has confirmed email. Can be [**yes**, **no**, **nomatter**]. + mail?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface TelegramRequest { + // Has a spam ban. Can be [**yes**, **no**, **nomatter**]. + spam?: string + // Has a cloud password. Can be [**yes**, **no**, **nomatter**]. + password?: string + // Has a premium subscription. Can be [**yes**, **no**, **nomatter**]. + premium?: string + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Number of days the account has been offline. + daybreak?: number + // Minimum number of channels. + min_channels?: number + // Maximum number of channels. + max_channels?: number + // Minimum number of chats. + min_chats?: number + // Maximum number of chats. + max_chats?: number + // Minimum number of conversations. + min_conversations?: number + // Maximum number of conversations. + max_conversations?: number + // Minimum number of channels, where account is administrator/owner. + min_admin?: number + // Maximum number of channels, where account is administrator/owner. + max_admin?: number + // Minimum number of subscribers in channel, where account is administrator/owner. + min_admin_sub?: number + // Maximum number of subscribers in channel, where account is administrator/owner. + max_admin_sub?: number + // Minimum number of digits in ID. + dig_min?: number + // Maximum number of digits in ID. + dig_max?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface SupercellRequest { + // Account service. Can be [**laser**, **scroll**, **magic**]. + system?: string + // Minimum level. + lmin?: number + // Maximum level. + lmax?: number + // Minimum number of cups. + cup_min?: number + // Maximum number of cups. + cup_max?: number + // Minimum number of brawlers. + brawlers_min?: number + // Maximum number of brawlers. + brawlers_max?: number + // List of brawlers. + brawler?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface OriginRequest { + // List of games. + 'game[]'?: Array + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // List of Apex Legends rank groups. + 'al_rank_group[]'?: Array + // Minimum level in Apex Legends. + al_level_min?: number + // Maximum level in Apex Legends. + al_level_max?: number + // Xbox connected to account. Can be [**yes**, **no**, **nomatter**]. + xbox_connected?: string + // Steam connected to account. Can be [**yes**, **no**, **nomatter**]. + steam_connected?: string + // Name of subscription. Can be [**EA Play**, **EA Play Pro**]. + subscription?: string + // Length of subscription. + subscription_length?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + subscription_period?: string + // Number of days the account has been offline. + daybreak?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface WorldofTanksRequest { + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Number of days the account has been offline. + daybreak?: number + // Minimum number of battles. + battles_min?: number + // Maximum number of battles. + battles_max?: number + // Minimum number of gold. + gold_min?: number + // Maximum number of gold. + gold_max?: number + // Minimum number of silver. + silver_min?: number + // Maximum number of silver. + silver_max?: number + // Minimum number of top tanks. + top_min?: number + // Maximum number of top tanks. + top_max?: number + // Minimum number of premium tanks. + prem_min?: number + // Maximum number of premium tanks. + prem_max?: number + // Minimum number of top premium tanks. + top_prem_min?: number + // Maximum number of top premium tanks. + top_prem_max?: number + // Minimum number of wins. + win_pmin?: number + // Maximum number of wins. + win_pmax?: number + // List of tanks. + 'tank[]'?: Array + // Region. Can be [**ru**, **eu**, **na**, **asia**]. + 'region[]'?: Array + // Exclude region. Can be [**ru**, **eu**, **na**, **asia**]. + 'not_region[]'?: Array + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface WoTBlitzRequest { + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Number of days the account has been offline. + daybreak?: number + // Minimum number of battles. + battles_min?: number + // Maximum number of battles. + battles_max?: number + // Minimum number of gold. + gold_min?: number + // Maximum number of gold. + gold_max?: number + // Minimum number of silver. + silver_min?: number + // Maximum number of silver. + silver_max?: number + // Minimum number of top tanks. + top_min?: number + // Maximum number of top tanks. + top_max?: number + // Minimum number of premium tanks. + prem_min?: number + // Maximum number of premium tanks. + prem_max?: number + // Minimum number of top premium tanks. + top_prem_min?: number + // Maximum number of top premium tanks. + top_prem_max?: number + // Minimum number of wins. + win_pmin?: number + // Maximum number of wins. + win_pmax?: number + // List of tanks. + 'tank[]'?: Array + // Region. Can be [**ru**, **eu**, **na**, **asia**]. + 'region[]'?: Array + // Exclude region. Can be [**ru**, **eu**, **na**, **asia**]. + 'not_region[]'?: Array + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface EpicGamesRequest { + // List of games. + 'game[]'?: Array + // You can change email. Can be [**yes**, **no**, **nomatter**]. + change_email?: string + // Has Rocket League purchases. + rl_purchases?: string + // Has login data for Social Club account. + sc?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface EscapefromTarkovRequest { + // Region. Can be [**cis**, **eu**, **as**, **us**]. + region?: string + // List of versions. Can be [**standard**, **left_behind**, **prepare_for_escape**, **edge_of_darkness**]. + 'version[]'?: Array + // List of secured containers. Can be [**544a11ac4bdc2d470e8b456a**, **5857a8b324597729ab0a0e7d**, **59db794186f77448bc595262**, **5857a8bc2459772bad15db29**, **5c093ca986f7740a1867ab12**]. + 'sc[]'?: Array + // Minimum experience. + exp_min?: number + // Maximum experience. + exp_max?: number + // Minimum level. + level_min?: number + // Maximum level. + level_max?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface SocialClubRequest { + // Has Red Dead Redemption 2. + rdr2?: string + // Has GTA 5. + gtav?: string + // Number of days the account has been offline + daybreak?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface UplayRequest { + // List of games. + 'game[]'?: Array + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Number of days the account has been offline. + daybreak?: number + // Minimum level in Tom Clancy's Rainbow Six Siege. + r6_level_min?: number + // Maximum level in Tom Clancy's Rainbow Six Siege. + r6_level_max?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface WarThunderRequest { + // Number of days the account has been offline. + daybreak?: number + // Minimum number of gold. + gold_min?: number + // Maximum number of gold. + gold_max?: number + // Minimum number of silver. + silver_min?: number + // Maximum number of silver. + silver_max?: number + // Minimum rank. + rank_min?: number + // Maximum rank. + rank_max?: number + // Minimum number of elite units. + eliteUnits_min?: number + // Maximum number of elite units. + eliteUnits_max?: number + // Minimum number of played games. + played_min?: number + // Maximum number of played games. + played_max?: number + // Minimum number of wins. + wins_min?: number + // Maximum number of wins. + wins_max?: number + // Has verified mobile. Can be [**yes**, **no**, **nomatter**]. + phone_verified?: string + // Has verified email. Can be [**yes**, **no**, **nomatter**]. + email_verified?: string + // Has premium. Can be [**yes**, **no**, **nomatter**]. + premium?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface DiscordRequest { + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Has Nitro. Can be [**yes**, **no**, **nomatter**]. + nitro?: string + // Has billing. Can be [**yes**, **no**, **nomatter**]. + billing?: string + // Has gifts. Can be [**yes**, **no**, **nomatter**]. + gifts?: string + // Is quarantined. Can be [**yes**, **no**, **nomatter**]. + quarantined?: string + // List of account conditions. Can be [**empty**, **nospam**, **spam**, **cleaned**]. + 'condition[]'?: Array + // Minimum number of chats. + chat_min?: number + // Maximum number of chats. + chat_max?: number + // How old is the account. + reg?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + reg_period?: string + // List of regions. + 'locale[]'?: Array + // List of regions that won't be included. + 'not_locale[]'?: Array + // List of badges. + 'badge[]'?: Array + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface TikTokRequest { + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Minimum number of followers. + fmin?: number + // Maximum number of followers. + fmax?: number + // Minimum number of posts. + post_min?: number + // Maximum number of posts. + post_max?: number + // Minimum number of likes. + like_min?: number + // Maximum number of likes. + like_max?: number + // Minimum number of coins. + coins_min?: number + // Maximum number of coins. + coins_max?: number + // List of allowed countries. + 'tt_country[]'?: Array + // List of disallowed countries. + 'tt_not_country[]'?: Array + // Login by cookies. Can be [**yes**, **no**, **nomatter**]. + cookie_login?: string + // Has a verified badge. Can be [**yes**, **no**, **nomatter**]. + verified?: string + // Can start a live stream. Can be [**yes**, **no**, **nomatter**]. + hasLivePermission?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface InstagramRequest { + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Login by cookies. Can be [**yes**, **no**, **nomatter**]. + cookies?: string + // Login without cookies. Can be [**yes**, **no**, **nomatter**]. + login_without_cookies?: string + // Minimum number of followers. + fmin?: number + // Maximum number of followers. + fmax?: number + // Minimum number of posts. + post_min?: number + // Maximum number of posts. + post_max?: number + // How old is the account. + reg?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + reg_period?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface BattleNetRequest { + // List of games. + 'game[]'?: Array + // Number of days the account has been offline. + daybreak?: number + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Can edit BattleTag. Can be [**yes**, **no**, **nomatter**]. + edit_btag?: string + // Can edit full name. Can be [**yes**, **no**, **nomatter**]. + changeable_fn?: string + // Read name. Can be [**yes**, **no**, **nomatter**]. + real_id?: string + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Has enabled parent control. Can be [**yes**, **no**, **nomatter**]. + parent_control?: string + // Login by cookies. Can be [**yes**, **no**, **nomatter**]. + cookies?: string + // Minimum level in Overwatch. + lmin?: number + // Maximum level in Overwatch. + lmax?: number + // Minimum balance. + balance_min?: number + // Maximum balance. + balance_max?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface VPNRequest { + // List of allowed VPN services. Can be [**windscribeVPN**, **tunnelbearVPN**, **vanishVPN**, **zenmateVPN**, **zenmateVPNUltimate**, **ultraVPN**, **xVPN**, **protonVPN**, **mullvadVPN**, **PIAVPN**, **AdguardVPN**, **pureVPN**]. + 'service_id[]'?: Array + // Length of subscription. + subscription_length?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + subscription_period?: string + // Is renewable enabled. Can be [**yes**, **no**, **nomatter**]. + renewable?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface CinemaRequest { + // List of allowed cinema services. Can be [**moretv**, **ivi**, **start**, **megogo**, **kinopoisk**]. + 'service_id[]'?: Array + // Length of subscription. + subscription_length?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + subscription_period?: string + // Is auto renewal enabled. Can be [**yes**, **no**, **nomatter**]. + autorenewal?: string + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface SpotifyRequest { + // List of allowed countries. + 'country[]'?: Array + // List of disallowed countries. + 'not_country[]'?: Array + // Has family subscription. Can be [**yes**, **no**, **nomatter**]. + family?: string + // Has family manager permissions. Can be [**yes**, **no**, **nomatter**]. + family_manager?: string + // Minimum count of members in family. + family_member_count_min?: number + // Maximum count of members in family. + family_member_count_max?: number + // Length of subscription. + subscription_length?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + subscription_period?: string + // Is auto renewal enabled. Can be [**yes**, **no**, **nomatter**]. + recurring?: string + // Trial subscription. Can be [**yes**, **no**, **nomatter**]. + trial?: string + // List of allowed plans. Can be [**Premium Student**, **Premium Fallback**, **Premium Duo**, **Premium Family**, **Premium Individual**]. + 'plan_name[]'?: Array + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface WarfaceRequest { + // Minimum rank. + rank_min?: number + // Maximum rank. + rank_max?: number + // Minimum bonus rank. + bonus_rank_min?: number + // Maximum bonus rank. + bonus_rank_max?: number + // Has linked mobile. Can be [**yes**, **no**, **nomatter**]. + tel?: string + // Number of days the account has been offline. + daybreak?: number + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface YoutubeRequest { + // Is brand account. Can be [**yes**, **no**, **nomatter**]. + brand?: string + // Has monetization. Can be [**yes**, **no**, **nomatter**]. + monetization?: string + // Has status artist. Can be [**yes**, **no**, **nomatter**]. + artist?: string + // Has verified. Can be [**yes**, **no**, **nomatter**]. + verified?: string + // Has password. Can be [**yes**, **no**, **nomatter**]. + password?: string + // Minimum subscribes. + subscribes_min?: number + // Maximum subscribes. + subscribes_max?: number + // Minimum views count. + viewcount_min?: number + // Maximum views count. + viewcount_max?: number + // Minimum video count. + videocount_min?: number + // Maximum video count. + videocount_max?: number + // How old is the account. + reg?: number + // In what notation is time measured. Can be [**day**, **month**, **year**]. + reg_period?: string + // List of regions. + 'locale[]'?: Array + // List of regions that won't be included + 'not_locale[]'?: Array + // The number of the page to display results from. + page?: number + // Minimal price of accounts. + pmin?: number + // Maximum price of accounts. + pmax?: number + // Email type. Can be [**market**, **autoreg**, **native**, **no**]. + 'email_type[]'?: Array + // Domain of native/autoreg email. + item_domain?: string + // Auction. Can be [**yes**, **no**, **nomatter**]. + auction?: string + // List of account origins. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'origin[]'?: Array + // List of account origins that won't be included. Can be [**brute**, **fishing**, **stealer**, **personal**, **resale**, **autoreg**]. + 'not_origin[]'?: Array + // Sold before. + sb?: string + // Not sold before. + nsb?: string + // Sold by me before. + sb_by_me?: string + // Not sold by me before. + nsb_by_me?: string + // The word or words contained in the account title + title?: string + // Order by. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_down_upload**, **pdate_to_up**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string +} + +interface GetUserAccountsListRequest { + // User id + userId: number + // Accounts category + category_id?: number + // Minimal price of account (Inclusive) + pmin?: number + // Maximum price of account (Inclusive) + pmax?: number + // The word or words contained in the account title + title?: string + // Order type. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_up**, **pdate_to_down_upload**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string + // Account status. Can be [**active**, **paid**, **deleted** or **awaiting**]. + show?: string + // The number of the page to display results from. + page?: number +} + +interface GetAllPurchasedAccountsRequest { + // User id + userId: number + // Accounts category + category_id?: number + // Minimal price of account (Inclusive) + pmin?: number + // Maximum price of account (Inclusive) + pmax?: number + // The word or words contained in the account title + title?: string + // Order type. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_up**, **pdate_to_down_upload**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string + // Account status. Can be [**active**, **paid**, **deleted** or **awaiting**]. + show?: string + // The number of the page to display results from + page?: number +} + +interface GetAllFavouritesAccountsRequest { + // The number of the page to display results from + page?: number + // Order type. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_up**, **pdate_to_down_upload**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string + // Account status. Can be [**active**, **paid**, **deleted** or **awaiting**]. + show?: string +} + +interface GetAllViewedAccountsRequest { + // The number of the page to display results from + page?: number + // Order type. Can be [**price_to_up**, **price_to_down**, **pdate_to_down**, **pdate_to_up**, **pdate_to_down_upload**, **pdate_to_up_upload**, **exp_auctions**]. + order_by?: string + // Account status. Can be [**active**, **paid**, **deleted** or **awaiting**]. + show?: string +} + +interface GetInfoAccountRequest { + // Item id + itemId: number +} + +interface SoftDeleteAccountRequest { + // Item id. + itemId: number + // Delete reason. + reason: string +} + +interface GetSteamAccHtmlRequest { + // Item id + itemId: number + // Type of page - **profiles** or **games** + type?: string +} + +interface GetSearchCategoryRequest { + // Category name. + categoryName: string +} + +interface GetGamesCategoryRequest { + // Category name. + categoryName: string +} + +interface GetAuctionRequest { + // Item id. + itemId: number +} + +interface PostAuctionBidRequest { + // Item id. + itemId: number + // Using currency. Can be [**rub**, **uah**, **kzt**, **byn**, **usd**, **eur**, **gbp**, **cny**, **try**]. + currency?: string + // Amount bid. + amount: string +} + +interface DeleteAuctionBidRequest { + // Item id. + itemId: number + // Bid id. + bid_id: number +} + +interface GetSteamValueRequest { + // Link or id of account. Can be [**https://lzt.market/{item-id}/**, **https://steamcommunity.com/id/{steam-name}**, **https://steamcommunity.com/profiles/{steam-id}**, **{steam-id}**]. + link: string + // Application id. + app_id: number + // Using currency for amount. Can be [**cny**, **usd**, **rub**, **eur**, **uah**, **kzt**, **byn**, **gbp**]. + currency?: string + // Ignore cache. + ignore_cache?: string +} + +interface BuyAccountRequest { + // Item id. + itemId: number + // Current price of account in your currency + price: number + // Put **1** if you want to buy account without account data validation (not safe). Does not work for steam category (category_id=1). + buy_without_validation?: number +} + +interface SetReserveAccountRequest { + // Item id. + itemId: number + // Current price of account in your currency + price: number +} + +interface CancelReserveAccountRequest { + // Item id. + itemId: number +} + +interface CheckAccountRequest { + // Item id. + itemId: number +} + +interface ConfirmBuyRequest { + // Item id. + itemId: number + // Put **1** if you want to buy account without account data validation (not safe). Does not work for steam category (category_id=1). + buy_without_validation?: number +} + +interface SendMoneyRequest { + // User id of receiver. If **user_id** specified, **username** is not required. + user_id?: number + // Username of receiver. If **username** specified, **user_id** is not required. + username?: string + // Amount to send in your currency. + amount: number + // Using currency for amount. Allowed values: **cny**, **usd**, **rub**, **eur**, **uah**, **kzt**, **byn**, **gbp** + currency: string + // Secret answer of your account + secret_answer: string + // Transfer comment + comment?: string + // Hold transfer or not + transfer_hold?: string + // Hold length value + hold_length_value?: number + // Hold length option. Allowed values: **hour**, **day**, **week**, **month**, **year** + hold_length_option?: string +} + +interface HistoryPaymentsRequest { + // User id + userId: number + // Type of operation. Allowed operation types: **income**, **cost**, **refilled_balance**, **withdrawal_balance**, **paid_item**, **sold_item**, **money_transfer**, **receiving_money**, **internal_purchase**, **claim_hold** + type?: string + // Minimal price of operation (Inclusive) + pmin?: number + // Maximum price of operation (Inclusive) + pmax?: number + // The number of the page to display results from + page?: number + // Id of the operation from which the result begins + operation_id_lt?: number + // Username of user, which receive money from you + receiver?: string + // Username of user, which sent money to you + sender?: string + // Start date of operation (RFC 3339 date format) + startDate?: string + // End date of operation (RFC 3339 date format) + endDate?: string + // Wallet, which used for money payouts. + wallet?: string + // Comment for money transfers + comment?: string + // Display hold operations + is_hold?: number + // Display payment stats for selected period (outgoing value, incoming value) + show_payment_stats?: number +} + +interface FastSellAccountRequest { + // Russian title of account. If **title** specified and **title_en** is empty, **title_en** will be automatically translated to English language. + title?: string + // English title of account. If **title_en** specified and **title** is empty, **title** will be automatically translated to Russian language. + title_en?: string + // Account price in your currency. + price: number + // Sales method. Can be [**price**, **auction**]. + type_sell: string + // Duration auction value. At the end of the auction time, the item will be closed if there were no bids. + duration_auction_value?: number + // Duration auction option. Can be [**minutes**, **hours**, **days**]. + duration_auction_option?: string + // The price for which you can instantly redeem your account. + instant_price?: number + // If you set **cancel**, at the end of the auction with 0 bids, the account can be purchased at the price you specified as the minimum bid. Can be [**close**, **cancel**]. + not_bids_action?: string + // Accounts category. + category_id: number + // Using currency. Allowed values: **cny**, **usd**, **rub**, **eur**, **uah**, **kzt**, **byn** or **gbp**. + currency: string + // Account origin. Where did you get it from. + item_origin: string + // Guarantee type. Allowed values: **-1** - 12 hours, **0** - 24 hours, **1** - 3 days. + extended_guarantee: number + // Account public description. + description?: string + // Account private information (visible for buyer only if purchased). + information?: string + // Account login (or email) + login?: string + // Account password + password?: string + // Account login data format login:password + login_password?: string + // Required if a **category** is one of list of Required email login data categories. + has_email_login_data?: string + // Required if a **category** is one of list of Required email login data categories. Email login data (login:pass format). + email_login_data?: string + // Email type. Allowed values: **native**, **autoreg**. + email_type?: string + // If set, the item will be closed **item_state = closed** + close_item?: string + // Region. Required if you want to upload WoT, Valorant, Escape From Tarkov account. Optional if you want to upload Genshin Impact account. + 'extra[region]'?: string + // Service id. Required if you want to upload VPN, Cinema account. + 'extra[service_id]'?: string + // System. Required if you want to upload Supercell account. + 'extra[system]'?: string + // Discord token. Required if you want to upload Discord account. + 'extra[ds_token]'?: string + // VK token. Required if you want to upload VK account. + 'extra[vk_token]'?: string + // VK User-agent. Optional. Used only if you want to upload VK account. + 'extra[vk_ua]'?: string + // Login into account by token only. Used only if you want to upload VK account. + 'extra[vk_token_auth_only]'?: string + // Cookies. Required if you want to upload Youtube, Fortnite, Epic Games, Origin (EA), Social Club, Instagram, TikTok or Warface account. + 'extra[cookies]'?: string + // Required if you want to upload Epic Games account. + 'extra[sc]'?: string + // Required if you want to upload Origin (EA) account. + 'extra[ItTakesTwo]'?: string + // Login without cookies. Required if you want to upload Instagram account. + 'extra[login_without_cookies]'?: string + // Mfa file. Optional. Used only if you want to upload Steam account. + 'extra[mfa_file]'?: string + // Dota 2 MMR. Optional. Used only if you want to upload Steam account. + 'extra[dota2_mmr]'?: string + // EA Games. Optional. Used only if you want to upload Steam account. + 'extra[ea_games]'?: string + // Uplay Games. Optional. Used only if you want to upload Steam account. + 'extra[uplay_games]'?: string + // The quarry. Optional. Used only if you want to upload Steam account. + 'extra[the_quarry]'?: string + // Warframe. Optional. Used only if you want to upload Steam account. + 'extra[warframe]'?: string + // Ark. Optional. Used only if you want to upload Steam account. + 'extra[ark]'?: string + // Social club games. Optional. Used only if you want to upload Steam account. + 'extra[socialclub_games]'?: string + // Game version. Required if you want to upload Escape From Tarkov account. + 'extra[game_version]'?: string + // Cookie login. Optional. Used only if you want to upload TikTok account. + 'extra[cookie_login]'?: string + // Check channels. Used only if you want to upload Telegram account. + 'extra[checkChannels]'?: string + // Telegram client. Used only if you want to upload Telegram account. + 'extra[telegramClient]'?: string + // Check spam. Used only if you want to upload Telegram account. + 'extra[checkSpam]'?: string + // Allow users to ask discount for this account. + allow_ask_discount?: string + // Using proxy id for account checking. + proxy_id?: number + // Pass 1, if you get captcha in previous response. + random_proxy?: number +} + +interface CreateAccountItemRequest { + // Russian title of account. If **title** specified and **title_en** is empty, **title_en** will be automatically translated to English language. + title?: string + // English title of account. If **title_en** specified and **title** is empty, **title** will be automatically translated to Russian language. + title_en?: string + // Account price in your currency. + price: number + // Sales method. Can be [**price**, **auction**]. + type_sell: string + // Duration auction value. At the end of the auction time, the item will be closed if there were no bids. + duration_auction_value?: number + // Duration auction option. Can be [**minutes**, **hours**, **days**]. + duration_auction_option?: string + // The price for which you can instantly redeem your account. + instant_price?: number + // If you set **cancel**, at the end of the auction with 0 bids, the account can be purchased at the price you specified as the minimum bid. Can be [**close**, **cancel**]. + not_bids_action?: string + // Accounts category. + category_id: number + // Using currency. Allowed values: **cny**, **usd**, **rub**, **eur**, **uah**, **kzt**, **byn** or **gbp**. + currency: string + // Account origin. Where did you get it from. + item_origin: string + // Guarantee type. Allowed values: **-1** - 12 hours, **0** - 24 hours, **1** - 3 days. + extended_guarantee: number + // Account public description. + description?: string + // Account private information (visible for buyer only if purchased). + information?: string + // Required if a **category** is one of list of Required email login data categories. + has_email_login_data?: string + // Required if a **category** is one of list of Required email login data categories. Email login data (login:pass format). + email_login_data?: string + // Email type. Allowed values: **native**, **autoreg**. + email_type?: string + // Allow users to ask discount for this account. + allow_ask_discount?: string + // Using proxy id for account checking. + proxy_id?: number + // Pass 1, if you get captcha in previous response. + random_proxy?: number +} + +interface CheckNotPublishedAccGettempemailforacccountRequest { + // Item id + itemId: number + // Account login (or email) + login?: string + // Account password + password?: string + // Account login data format login:password + login_password?: string + // If set, the item will be closed **item_state = closed** + close_item?: number + // Region. Required if you want to upload WoT, Valorant, Escape From Tarkov account. Optional if you want to upload Genshin Impact account. + 'extra[region]'?: string + // Service id. Required if you want to upload VPN, Cinema account. + 'extra[service_id]'?: string + // System. Required if you want to upload Supercell account. + 'extra[system]'?: string + // Discord token. Required if you want to upload Discord account. + 'extra[ds_token]'?: string + // VK token. Required if you want to upload VK account. + 'extra[vk_token]'?: string + // VK User-agent. Used only if you want to upload VK account. + 'extra[vk_ua]'?: string + // Login into account by token only. Used only if you want to upload VK account. + 'extra[vk_token_auth_only]'?: string + // Cookies. Required if you want to upload Youtube, Fortnite, Epic Games, Origin (EA), Social Club, Instagram, TikTok or Warface account. + 'extra[cookies]'?: string + // Required if you want to upload Epic Games account. + 'extra[sc]'?: string + // Required if you want to upload Origin (EA) account. + 'extra[ItTakesTwo]'?: string + // Login without cookies. Required if you want to upload Instagram account. + 'extra[login_without_cookies]'?: string + // Mfa file. Optional. Used only if you want to upload Steam account. + 'extra[mfa_file]'?: string + // Dota 2 MMR. Optional. Used only if you want to upload Steam account. + 'extra[dota2_mmr]'?: string + // EA Games. Optional. Used only if you want to upload Steam account. + 'extra[ea_games]'?: string + // Uplay Games. Optional. Used only if you want to upload Steam account. + 'extra[uplay_games]'?: string + // The quarry. Optional. Used only if you want to upload Steam account. + 'extra[the_quarry]'?: string + // Warframe. Optional. Used only if you want to upload Steam account. + 'extra[warframe]'?: string + // Ark. Optional. Used only if you want to upload Steam account. + 'extra[ark]'?: string + // Social club games. Optional. Used only if you want to upload Steam account. + 'extra[socialclub_games]'?: string + // Game version. Required if you want to upload Escape From Tarkov account. + 'extra[game_version]'?: string + // Cookie login. Optional. Used only if you want to upload TikTok account. + 'extra[cookie_login]'?: string + // Check channels. Used only if you want to upload Telegram account. + 'extra[checkChannels]'?: string + // Telegram client. Used only if you want to upload Telegram account. + 'extra[telegramClient]'?: string + // Check spam. Used only if you want to upload Telegram account. + 'extra[checkSpam]'?: string + // Put if you are trying to resell an account. + resell_item_id?: number + // Pass 1, if you get **captcha** in previous response + random_proxy?: number +} + +interface GetInfoNotPublishedAccRequest { + // Item id. + itemId: number + // Put item id, if you are trying to resell item. This is useful to pass temporary email from reselling item to new item. You will get same temporary email from reselling account. + resell_item_id?: number +} + +interface GetCategoriesRequest { + // Display top queries for per category. + top_queries?: string +} + +interface GetMafileJsonRequest { + // Item id. + itemId: number +} + +interface GetEmailConfirmationCodeRequest { + // Item id + itemId: number + // Account email + email: string +} + +interface GetMafileConfirmationCodeRequest { + // Item id. + itemId: number +} + +interface GetTelegramConfirmationCodeRequest { + // Item id. + itemId: number +} + +interface TelegramResetAuthRequest { + // Item id. + itemId: number +} + +interface CancelGuaranteeAccRequest { + // Item id. + itemId: number +} + +interface ChangePasswordRequest { + // Item id. + itemId: number + // Cancel change password recommendation. It will be helpful, if you don't want to change password and get login data + _cancel?: number +} + +interface GetPasswordTempEmailRequest { + // Item id. + itemId: number +} + +interface EditAccountRequest { + // Item id. + itemId: number + // Russian title of account. If **title** specified and **title_en** is empty, **title_en** will be automatically translated to English language. + title?: string + // English title of account. If **title_en** specified and **title** is empty, **title** will be automatically translated to Russian language. + title_en?: string + // Account price in your currency. + price?: number + // Using currency for amount. Required if you are trying to change price field. Allowed values: **cny**, **usd**, **rub**, **eur**, **uah**, **kzt**, **byn**, **gbp** + currency?: string + // Account origin. Where did you get it from. + item_origin?: string + // Account public description. + description?: string + // Account private information (visible for buyer only if purchased). + information?: string + // Email login data (login:pass format). + email_login_data?: string + // Email type. Allowed values: **native**, **autoreg**. + email_type?: string + // Allow users to ask discount for this account. + allow_ask_discount?: number + // Using proxy id for account checking. See GET or POST /proxy to get or edit proxy list. + proxy_id?: number +} + +interface AddTagAccountRequest { + // Item id. + itemId: number + // Tag id (Tag list is available via **GET /me**). + tag_id: number +} + +interface DeleteTagAccountRequest { + // Item id. + itemId: number + // Tag id (Tag list is available via **GET /me**). + tag_id: number +} + +interface BumpsAccountRequest { + // Item id. + itemId: number +} + +interface AddFavoriteRequest { + // Item id. + itemId: number +} + +interface DeleteFavoriteRequest { + // Item id. + itemId: number +} + +interface StickAccountRequest { + // Item id. + itemId: number +} + +interface UnstickAccountRequest { + // Item id. + itemId: number +} + +interface ChangeAccountOwnerRequest { + // Item id + itemId: number + // The username of the new account owner + username: string + // Secret answer of your account + secret_answer: string +} + +interface GetProfileMarketRequest { +} + +interface EditSettingsMarketRequest { + // Disable Steam Guard on account purchase moment + disable_steam_guard?: string + // Allow users ask discount for your accounts + user_allow_ask_discount?: string + // Maximum discount percents for your accounts + max_discount_percent?: number + // Usernames who can transfer market accounts to you. Separate values with a comma. + allow_accept_accounts?: string + // Hide your profile info when you add an account to favorites + hide_favourites?: string + // Vkontakte user agent. + vk_ua?: string +} + +interface GetProxyRequest { +} + +interface AddProxyRequest { + // Proxy ip or host. Required if **proxy_row** is not specified. + proxy_ip?: string + // Proxy port. Required if **proxy_row** is not specified. + proxy_port?: number + // Proxy username. Required if **proxy_row** is not specified. + proxy_user?: string + // Proxy password. Required if **proxy_row** is not specified. + proxy_pass?: string + // Proxy list in String format ip:port:user:pass. Each proxy must be start with new line (use \n separator) + proxy_row?: string +} + +interface DeleteProxyRequest { + // Id of an existing proxy + proxy_id?: number + // True. If you want to delete all proxy + delete_all?: string +} + +interface BatchRequest { +} \ No newline at end of file diff --git a/src/types/market_responses.d.ts b/src/types/market_responses.d.ts new file mode 100644 index 0000000..a5f3636 --- /dev/null +++ b/src/types/market_responses.d.ts @@ -0,0 +1,506 @@ +// auto-generated, don't edit manually + +interface GetLastAccountsResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface SteamResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface FortniteResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface VkontakteResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GenshinImpactResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface ValorantResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface LeagueofLegendsResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface TelegramResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface SupercellResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface OriginResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface WorldofTanksResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface WoTBlitzResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface EpicGamesResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface EscapefromTarkovResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface SocialClubResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface UplayResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface WarThunderResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface DiscordResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface TikTokResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface InstagramResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface BattleNetResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface VPNResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface CinemaResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface SpotifyResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface WarfaceResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface YoutubeResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GetUserAccountsListResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GetAllPurchasedAccountsResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GetAllFavouritesAccountsResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GetAllViewedAccountsResponse { + items?: Array + totalItems?: number + totalItemsPrice?: number + perPage?: number + page?: number + searchUrl?: string +} + +interface GetInfoAccountResponse { + item?: string + seller?: string +} + +interface SoftDeleteAccountResponse { + status?: string + message?: string +} + +interface GetSteamAccHtmlResponse { +} + +interface GetSearchCategoryResponse { + category?: string +} + +interface GetGamesCategoryResponse { + games?: Array + isIsolatedMarket?: string + isIsolatedMarketAlt?: string +} + +interface GetAuctionResponse { + itemId?: number + bids?: Array + is_finished?: number + endTime?: number + currencies?: { [currency: string]: string } + userCurrency?: string + minAllowedBidValue?: string + startValue?: string +} + +interface PostAuctionBidResponse { + status?: string + bid?: string +} + +interface DeleteAuctionBidResponse { + status?: string + message?: string +} + +interface GetSteamValueResponse { + query?: string + data?: string + appId?: number + isIsolatedMarket?: string + isIsolatedMarketAlt?: string +} + +interface BuyAccountResponse { + status?: string + reserve_end_date?: number + item?: string +} + +interface SetReserveAccountResponse { + status?: string + reserve_end_date?: number + item?: string +} + +interface CancelReserveAccountResponse { + status?: string + message?: string +} + +interface CheckAccountResponse { + status?: string + item?: string +} + +interface ConfirmBuyResponse { + status?: string + reserve_end_date?: number + item?: string +} + +interface SendMoneyResponse { + status?: string + message?: string +} + +interface HistoryPaymentsResponse { + payments?: string + hasNextPage?: string + lastOperationId?: number + nextPageHref?: string +} + +interface FastSellAccountResponse { + status?: string + message?: string + item?: string +} + +interface CreateAccountItemResponse { + status?: string + item?: string +} + +interface CheckNotPublishedAccGettempemailforacccountResponse { + status?: string + message?: string +} + +interface GetInfoNotPublishedAccResponse { + status?: string + item?: string + temp_email?: string + sessionLoginData?: Array + ignoreCookieUpload?: string +} + +interface GetCategoriesResponse { + 0?: string +} + +interface GetMafileJsonResponse { + maFile?: unknown +} + +interface GetEmailConfirmationCodeResponse { + item?: string + codeData?: string +} + +interface GetMafileConfirmationCodeResponse { + item?: string + codeData?: string +} + +interface GetTelegramConfirmationCodeResponse { + item?: string + codes?: string +} + +interface TelegramResetAuthResponse { + status?: string + message?: string +} + +interface CancelGuaranteeAccResponse { + status?: string + message?: string +} + +interface ChangePasswordResponse { + status?: string + message?: string + new_password?: string +} + +interface GetPasswordTempEmailResponse { + item?: string +} + +interface EditAccountResponse { + status?: string + message?: string +} + +interface AddTagAccountResponse { + itemId?: number + tag?: string + addedTagId?: number + deleteTags?: Array +} + +interface DeleteTagAccountResponse { + itemId?: number + tag?: string + addedTagId?: number + deleteTags?: Array +} + +interface BumpsAccountResponse { + status?: string + message?: string +} + +interface AddFavoriteResponse { + status?: string + message?: string +} + +interface DeleteFavoriteResponse { + status?: string + message?: string +} + +interface StickAccountResponse { + status?: string + message?: string +} + +interface UnstickAccountResponse { + status?: string + message?: string +} + +interface ChangeAccountOwnerResponse { + status?: string + message?: string +} + +interface GetProfileMarketResponse { + user?: string +} + +interface EditSettingsMarketResponse { + status?: string + message?: string +} + +interface GetProxyResponse { + proxies?: Array +} + +interface AddProxyResponse { + status?: string + message?: string +} + +interface DeleteProxyResponse { + status?: string + message?: string +} + +interface BatchResponse { + jobs?: string +} \ No newline at end of file diff --git a/src/types/types.d.ts b/src/types/types.d.ts new file mode 100644 index 0000000..24d5621 --- /dev/null +++ b/src/types/types.d.ts @@ -0,0 +1,35 @@ +interface LZTApiOptions { + // Forum API Endpoint URL + // @default https://api.zelenka.guru + endpoint: string + + // Market API Endpoint URL + // @default https://api.lzt.market + marketEndpoint: string + + // Preferred language + // @default ru + locale: 'ru' | 'en' + + // API limit for requests ([max_requests, seconds]) + // @default [3, 20] + rate_limit: [number, number] + + // Interval between requests to avoid 429 error + // @default 3000 ms + interval: number + + // Your [access token](https://zelenka.guru/account/api/get-token) + token: string +} + +type ApiError = + { errors: [string[]] } | + { error: string, error_description?: string } + +interface ApiResponse { + system_info: { + visitor_id: number + time: number + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5ad96b0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "outDir": "dist", + "baseUrl": "src", + "declaration": true, + + "target": "ESNext", + "module": "NodeNext", + "lib": ["ESNext"], + + "strict": true, + "strictPropertyInitialization": false, + + "moduleDetection": "force", + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "skipLibCheck": true + }, + "exclude": ["scripts"] +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 577a7b8..0000000 --- a/yarn.lock +++ /dev/null @@ -1,639 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/eslint-parser@^7.17.0": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz" - integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== - dependencies: - eslint-scope "^5.1.1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@eslint/eslintrc@^1.2.3": - version "1.2.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz" - integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.2" - globals "^13.9.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== - -debug@^4.1.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.15.0: - version "8.15.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz" - integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== - dependencies: - "@eslint/eslintrc" "^1.2.3" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== - dependencies: - acorn "^8.7.1" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.1.5" - resolved "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz" - integrity sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3: - version "7.2.2" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz" - integrity sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.15.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== - dependencies: - type-fest "^0.20.2" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^4.0.0, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^3.2.3: - version "3.2.10" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz" - integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-queue@^7.3.4: - version "7.3.4" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz" - integrity sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg== - dependencies: - eventemitter3 "^4.0.7" - p-timeout "^5.0.2" - -p-timeout@^5.0.2: - version "5.1.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" - integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -semver@^6.3.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -web-streams-polyfill@^3.0.3: - version "3.2.1" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=